<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>The Software Programming Experience of a Tech Lead</title><description>Sharing my Software Development Experience and how I moved form an Intern to senior and becoming a Technology Lead. My programming, Artificial Intelligence,  Project management and Leadership experience. My technology stack includes Java, Golang, JavaScript, PHP, iOS, Android, Bots and some DevOps skills. Cloud, Docker, Kubernetes, Jenkins, Travis...</description><managingEditor>noreply@blogger.com (Tim O. Peters)</managingEditor><pubDate>Sat, 7 Mar 2026 14:38:21 +0100</pubDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">82</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">25</openSearch:itemsPerPage><link>http://www.codingsavvy.com/</link><language>en-us</language><item><title>How Floyd's Tortoise and the Hare Linked List Circle Detection Algorithm Works</title><link>http://www.codingsavvy.com/2019/05/how-floyds-tortoise-and-hare-linked.html</link><category>Algorithm</category><category>Software</category><pubDate>Sat, 11 May 2019 11:35:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-344965834201820939</guid><description>&lt;div class="bigInt"&gt;
There are many ways of storing data when writing a computer program especially when it's a group of data that share the same property. Like the data of students under the age of 12 or People who love same category of movies. 
This can be store as an array or a slice into the memory but sometime you just want some that is very simple to work with when the data get massively large to go through. Cases like this are when linked list comes to play. It essentially just a sequence elements where one element links to the next element.
&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img alt="How Floyd's Tortoise and the Hare Linked List Circle Detection Algorithm Works" class="sri" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgt6PMpXybDKYDXnbXup-F_XjCqVg7hk2v8CJtlEwcbPcXFMzG72M9lvklJPnqlp81YsmlgiKisan2XzVm9J92Y-oOtUPPofCKJZ5RzIaErhN7DtuaNhdURg41mzEAHggW8our1SSgUBXGw/s1600/t%2526h.png" /&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;I won't dive deep into benefits of a linked list right now, We will leave that for another day, Rather we will look into one of the more efficient algorithm of detecting if there is a circle in any set of linked list. This algorithm is popularly know as Floyd's Circle detection algorithm and can sometimes be referred to as &lt;i&gt;Tortoise&lt;/i&gt; and The &lt;i&gt;Hare&lt;/i&gt; Algorithm.
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img class="sri" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwjYqU1W0cCxw4ZfBOoZjuL8pQugtzT1cl5LFbmwo4J2b2DfQdEfKP9YDQWZN68cDyFGeG9ny4seBYmzYdFlV8PFpLB1tb2Oc5pKLilGc1xaeNhFd8bdrDLmsY0g85b6KDxv-el1TAfitC/s320/t%2526r2.png" /&gt;
&lt;/div&gt;
The algorithm uses two pointers, The &lt;b&gt;fast pointer &lt;/b&gt;called &lt;i&gt;Hare&lt;/i&gt; and &lt;b&gt;slow pointer&lt;/b&gt; called &lt;i&gt;Tortoise&lt;/i&gt;. Hence forth I will be referring to element of a list as &lt;u&gt;node&lt;/u&gt;. The first use-case is to find out if there is a loop in the linked list.
To solve this problem we need to loop through the list and make the Hare move two nodes per iteration and the Tortoise move one node per iteration. If there is a loop the pointer are going to meet in the loop, In that case the Hare pointer will be equal to the Tortoise pointer if they are pointing at the same node. Otherwise if the Hare get to the end of the list and never point to the same node as the Tortoise then there is no loop in the list.

Now that we have established that our list has a loop, The next common question is to find where the loop start. To solve this we need to know the numbers of moves the Hare and Tortoise make before they meet. Note that the part of the list that is not inside the loop is refer to as tail. The tail is amply the number of nodes before the first node in the loop.


&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #3d85c6;"&gt;package&lt;/span&gt; floyd;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;private&lt;/span&gt; Node startNode;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;&amp;nbsp;public&lt;/span&gt; &lt;span style="color: #674ea7;"&gt;static&lt;/span&gt; void main(String[] args) {&lt;br /&gt;
&amp;nbsp; DetectLoopInLinkedList detectLoopInLinkedList = new DetectLoopInLinkedList();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #3d85c6;"&gt;Node&lt;/span&gt; n1 = new Node(10);&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #3d85c6;"&gt;Node&lt;/span&gt; n2 = new Node(20);&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #3d85c6;"&gt;Node&lt;/span&gt; n3 = new Node(30);&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #3d85c6;"&gt;Node&lt;/span&gt; n4 = new Node(40);&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #3d85c6;"&gt;Node&lt;/span&gt; n5 = new Node(50);&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #3d85c6;"&gt;Node&lt;/span&gt; n6 = new Node(60);&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #3d85c6;"&gt;Node&lt;/span&gt; n7 = new Node(70);&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #3d85c6;"&gt;Node&lt;/span&gt; n8 = new Node(80);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; detectLoopInLinkedList.startNode = n1;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; n1.setNext(n2);&lt;br /&gt;
&amp;nbsp; n2.setNext(n3);&lt;br /&gt;
&amp;nbsp; n3.setNext(n4);&lt;br /&gt;
&amp;nbsp; n4.setNext(n5);&lt;br /&gt;
&amp;nbsp; n5.setNext(n6);&lt;br /&gt;
&amp;nbsp; n6.setNext(n7);&lt;br /&gt;
&amp;nbsp; n7.setNext(n8);&lt;br /&gt;
&amp;nbsp; n8.setNext(n6);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; if(isLoopPresent(detectLoopInLinkedList.startNode)){&lt;br /&gt;
&amp;nbsp; &amp;nbsp;System.out.println("Loop is present in list");&lt;br /&gt;
&amp;nbsp; }else{&lt;br /&gt;
&amp;nbsp; &amp;nbsp;System.out.println("No Loop present in list");&lt;br /&gt;
&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;&amp;nbsp;private&lt;/span&gt; static boolean isLoopPresent(Node startNode){&lt;br /&gt;
&amp;nbsp; Node slowPointer = startNode; // Initially ptr1 is at starting location.&lt;br /&gt;
&amp;nbsp; Node fastPointer = startNode; // Initially ptr2 is at starting location.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; while(fastPointer!=null &amp;amp;&amp;amp; fastPointer.getNext()!=null){ // If ptr2 encounters NULL, it means there is no Loop in Linked list.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;slowPointer = slowPointer.getNext(); // ptr1 moving one node at at time&lt;br /&gt;
&amp;nbsp; &amp;nbsp;fastPointer = fastPointer.getNext().getNext(); // ptr2 moving two nodes at at time&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if(slowPointer==fastPointer) // if ptr1 and ptr2 meets, it means linked list contains loop.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; return true;&lt;br /&gt;
&amp;nbsp; }&lt;br /&gt;
&amp;nbsp; return false;&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;public&lt;/span&gt; class Node{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #3d85c6;"&gt;private&lt;/span&gt; int data;&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #3d85c6;"&gt;private&lt;/span&gt; Node next;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #3d85c6;"&gt;public&lt;/span&gt; Node(int data) {&lt;br /&gt;
&amp;nbsp; this.data = data;&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #3d85c6;"&gt;public&lt;/span&gt; int getData() {&lt;br /&gt;
&amp;nbsp; return data;&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #3d85c6;"&gt;public&lt;/span&gt; void setData(int data) {&lt;br /&gt;
&amp;nbsp; this.data = data;&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #3d85c6;"&gt;public&lt;/span&gt; Node getNext() {&lt;br /&gt;
&amp;nbsp; return next;&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #3d85c6;"&gt;public&lt;/span&gt; void setNext(Node next) {&lt;br /&gt;
&amp;nbsp; this.next = next;&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
}&lt;/div&gt;
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img class="sri" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvH7UDPI68o30fyQHWKqEtzlbUYnByoBq9CugP2W5Nnd3KV25yFw_GOC4o1LCaMZePFfwpYQIkZGpHhP5Jj-rtbOvXDqj-2FKSSBX_fPbPcQQFN6oke0HR8CC8ogAVN1yGUjFeTmsSAw3R/s1600/floyds-circle.png" /&gt;&lt;/div&gt;
Distance traveled by the slow pointer(Tortoise) before meeting &lt;i&gt;=&#119909;+&#119910;&lt;/i&gt;&lt;br /&gt;
Distance traveled by fast fast pointer(Hare) before meeting &lt;i&gt;=(&#119909;+&#119910;+&#119911;)+&#119910;  = x + 2y + z&lt;/i&gt;&lt;br /&gt;
Since fast pointer(Hare) travels &lt;em&gt;double&lt;/em&gt; the speed of the slow pointer(Tortoise) and time is constant for both when the reach the meeting point. So by using simple speed, time and distance relation (slow pointer(Tortoise) traveled half the distance):
&lt;em&gt;For this case we will take distance moved by the fast pointer (Hare) as &lt;i&gt;i&lt;/i&gt; and the distance moved by the slow pointer(Tortoise) as &lt;i&gt;j&lt;/i&gt;.&lt;/em&gt;
&lt;br /&gt;
&lt;div class="code cen"&gt;
Therefore: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #444444;"&gt;2 * j = i&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: #444444;"&gt;2(x + z) = x + 2z + (y - z)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: #444444;"&gt;2x + 2z = x + 2z + (y - z)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: #444444;"&gt;x = z&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
Hence by moving slow pointer(Tortoise) to starting of the linked list, and making both slow pointer and fast pointer(Hare) to move one node at a time, they both have same distance to cover. They will reach at the node where the loop starts in the list.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgt6PMpXybDKYDXnbXup-F_XjCqVg7hk2v8CJtlEwcbPcXFMzG72M9lvklJPnqlp81YsmlgiKisan2XzVm9J92Y-oOtUPPofCKJZ5RzIaErhN7DtuaNhdURg41mzEAHggW8our1SSgUBXGw/s72-c/t%2526h.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author></item><item><title>Why You Still Need Antivirus and Internet Security Software in 2018</title><link>http://www.codingsavvy.com/2018/09/why-you-still-need-antivirus-and.html</link><category>CyberSecurity</category><category>Software</category><category>Technology</category><pubDate>Mon, 24 Sep 2018 22:28:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-1698426171730234503</guid><description>&lt;div class="bigInt"&gt;
Technology has evolved rapidly since the last decade. If you think your devices is safe and secure enough to protect your data, I'm sorry to break it to you but you are wrong. You are more vulnerable than ever before. Its just that now you are blinded in lots of ways you hardly notice that something is not right. Computer viruses are now advanced, they only attack when necessary or when instructed to do so. More so, virus is no longer the only villain, there are hundreds of security-threatening software online seeking to exploit a fragile system. Even with Internet security software and anti-viruses, the best way to stay safe is to be conscious of what you are doing while online.&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img alt="Why You Still Need Antivirus and Internet Security Software in 2018" class="sri" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL3W6e9R7HqLJGGZxookkyWdR10dP2iMF4ogoIimaBURoJ3RrCk0-fSQ6E8lBzL76BmC2RPJ_khEgil8eGn458kZ45osmOaoBxlyoX72rofiU4AMtSEG03e_vZQOJ62T87TZ6kHrmQtpPT/s1600/wes-hicks.jpg" /&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;A global ransomware attack is holding thousands of computers hostage.&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
Cybercrime may now be costing businesses worldwide as much as $600 billion and it points to the ease of digital crime as the reason - McAfee
&lt;/blockquote&gt;
&lt;script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"&gt;&lt;/script&gt; &lt;!-- money-dev --&gt;
&lt;br /&gt;
&lt;ins class="adsbygoogle" data-ad-client="ca-pub-5655726184152350" data-ad-format="auto" data-ad-slot="9221982506" data-full-width-responsive="true" style="display: block;"&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;

&lt;br /&gt;
&lt;h4&gt;
Brazil&lt;/h4&gt;
It is the second leading source of cyber-attacks and the third most-affected target.&lt;br /&gt;
&lt;h4&gt;
Germany&lt;/h4&gt;
The country is home to the most sophisticated underground internet economy in the EU.&lt;br /&gt;
&lt;h4&gt;
Japan&lt;/h4&gt;
Previously protected from cyber-crime because of the language barrier and no infrastructure for money laundering. Japan is seeing an increase, especially in attacks targeting banks.&lt;br /&gt;
&lt;h4&gt;
United Kingdom&lt;/h4&gt;
Online fraud and cyber-crime account for nearly half of all crimes, amounting to more than 5.5 million offenses annually.&lt;br /&gt;
&lt;h4&gt;
United Arab Emirates&lt;/h4&gt;
It is the second most targeted country in the world with the cost of cyber-crime estimated at $1.4 billion per year.&lt;br /&gt;
&lt;h2&gt;
Safety Recommendations&lt;/h2&gt;
You need to be aware that malicious software needs to be downloaded, installed, and executed before it can cause harm to your devices.&lt;script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"&gt;&lt;/script&gt; &lt;!-- ex-title --&gt;
&lt;br /&gt;
To guarantee safety on your devices, we advise you avoid using outdated software. Ensure all software on your computer are from trusted sources. Don't accept download request prompt from a strange or an unknown website. If you're the kind that stumbles upon websites on the web you need to take extra measures. Most victims fall for to this trap by clicking a spam link in their email or by downloading an untrusted software via their mail. Note that not all spam emails are caught by the default spam filters. Stay Safe!</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL3W6e9R7HqLJGGZxookkyWdR10dP2iMF4ogoIimaBURoJ3RrCk0-fSQ6E8lBzL76BmC2RPJ_khEgil8eGn458kZ45osmOaoBxlyoX72rofiU4AMtSEG03e_vZQOJ62T87TZ6kHrmQtpPT/s72-c/wes-hicks.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author></item><item><title>Top 10 Software Development Roles That Makes More Money</title><link>http://www.codingsavvy.com/2018/09/top-10-unnoticed-software-development.html</link><category>Money</category><category>Software</category><pubDate>Tue, 18 Sep 2018 16:58:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-3504406479015148813</guid><description>&lt;div class="bigInt"&gt;
Software development is becoming more wider and diverse as technology changes. Deciding what job-role to fill with respect to income is a bit puzzling for any individual.&amp;nbsp; Here, we'll examine the roles that pay the most in the industry, that is, roles that earn more money than others. It's worthy of note that not all software roles write codes and the complex mathematical computations.&amp;nbsp; As a matter of fact, research shows that the highest paying roles are more dependent on developer's experience. There are roles that only require the basic understanding of the technology stack and still pay more money than the more difficult roles. In this article, you'll find out how you can earn well working in a software development environment with or without the core coding skills.&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;Software field has evolved from the native &lt;b&gt;Web developer&lt;/b&gt;, &lt;b&gt;Desktop app developer&lt;/b&gt;, &lt;b&gt;Mobile app developer&lt;/b&gt; and &lt;b&gt;Database Admin&lt;/b&gt; realm. New roles like &lt;b&gt;Back-end developer&lt;/b&gt;; &lt;b&gt;Front-end&lt;/b&gt; &lt;b&gt;developer&lt;/b&gt;; &lt;b&gt;Full-stack&lt;/b&gt; &lt;b&gt;developer&lt;/b&gt;; &lt;b&gt;Mobile developer&lt;/b&gt;; and &lt;b&gt;DevOps specialist&lt;/b&gt; have open up opportunities for new entrants in the industry. The 2018 developer report from &lt;a href="https://stackoverflow.com/" rel="nofollow" target="_blank"&gt;StackOverflow&lt;/a&gt; illustrates this trend in the chart below;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img class="" data-original-height="623" data-original-width="676" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwsema6l0yF3tt3SCmPMUClUc33dHklAApIZ7FZd9UR12VfBQD7oW5Zq5V_-_Kt5zWf6xtunameZmsCTYkrlzuGcnFRie4y-ugmPTz_8HvARDd-Umiw7dRibDOcgDpekN8L3q10KuiZUHf/s1600/Screen+Shot+2018-09-18+at+4.14.07+PM.png" /&gt;&lt;/div&gt;
&lt;br /&gt;
The report confirmed a noticeable trend that there are more back-end developers globally over the past years. Stack Overflow's survey provides us a &lt;a href="https://stackoverflow.com/jobs/salary" rel="nofollow" target="_blank"&gt;salary calculator&lt;/a&gt; which we can use to estimate the latest earning of any development field based on different variables. This varies based on &lt;i&gt;Location&lt;/i&gt;, &lt;i&gt;Education&lt;/i&gt;, &lt;i&gt;Technologies&lt;/i&gt;, and &lt;i&gt;Years of experience&lt;/i&gt;.

&lt;script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"&gt;&lt;/script&gt; &lt;!-- ex-title --&gt;

&lt;ins class="adsbygoogle" data-ad-client="ca-pub-5655726184152350" data-ad-format="link" data-ad-slot="4989377421" data-full-width-responsive="true" style="display: block;"&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt; By using the calculator, we were able to compile the list below. You should go ahead and try it yourself.&lt;br /&gt;
&lt;h4&gt;
1. Engineering manager: $89,000&lt;/h4&gt;
&lt;h4&gt;
2. DevOps specialist: $72,000&lt;/h4&gt;
&lt;script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"&gt;&lt;/script&gt; &lt;!-- money-dev --&gt;
&lt;br /&gt;
&lt;ins class="adsbygoogle" data-ad-client="ca-pub-5655726184152350" data-ad-format="auto" data-ad-slot="9221982506" data-full-width-responsive="true" style="display: block;"&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;

&lt;br /&gt;
&lt;h4&gt;
3. Data scientist or machine learning specialist: $60,000&lt;/h4&gt;
&lt;h4&gt;
4. Data or business analyst&lt;/h4&gt;
&lt;h4&gt;
5. Embedded applications or devices developer: $59,000&lt;/h4&gt;
&lt;h4&gt;
6. Full-stack developer&lt;/h4&gt;
&lt;h4&gt;
7. Desktop or enterprise applications developer: $59,000&lt;/h4&gt;
&lt;script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"&gt;&lt;/script&gt; &lt;!-- money-dev --&gt;
&lt;br /&gt;
&lt;ins class="adsbygoogle" data-ad-client="ca-pub-5655726184152350" data-ad-format="auto" data-ad-slot="9221982506" data-full-width-responsive="true" style="display: block;"&gt;&lt;/ins&gt;&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;

&lt;br /&gt;
&lt;h4&gt;
8. Back-end developer: $57,000&lt;/h4&gt;
&lt;h4&gt;
9. System administrator: $56,000&lt;/h4&gt;
&lt;h4&gt;
10. QA or test developer: $56,000&lt;/h4&gt;
&lt;h4&gt;
&lt;span style="font-weight: normal;"&gt;As mentioned earlier, the top earning roles in Engineering Manager and Devops Specialist does not require core technical skills. Instead, the earning capability is mostly determined by an individual's experience and quality of projects executed.&lt;/span&gt;&lt;/h4&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwsema6l0yF3tt3SCmPMUClUc33dHklAApIZ7FZd9UR12VfBQD7oW5Zq5V_-_Kt5zWf6xtunameZmsCTYkrlzuGcnFRie4y-ugmPTz_8HvARDd-Umiw7dRibDOcgDpekN8L3q10KuiZUHf/s72-c/Screen+Shot+2018-09-18+at+4.14.07+PM.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author></item><item><title>Stream Videos with Low Server Resource and Gzip compression using NodeJS </title><link>http://www.codingsavvy.com/2018/09/stream-videos-with-low-server-resource.html</link><category>Node.js</category><category>Technology</category><category>Video Streaming</category><pubDate>Fri, 14 Sep 2018 11:25:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-2274659101370072704</guid><description>&lt;div class="bigInt"&gt;
Video streaming is more popular than it was a decade ago, More videos are played on Youtube, Netflix, and other online video streaming media. Netflix is the best example who leveraged the benefit of Node.js by implementing it for production and they achieved the tremendous result economically and in performance. Delivering almost &lt;b&gt;7 billion&lt;/b&gt; hours of videos to nearly &lt;b&gt;50 million&lt;/b&gt; customers in &lt;b&gt;60 countries&lt;/b&gt; per quarter. This tutorial will highlight how to efficiently stream video from a NodeJS server with less server resource and a compressed output to make it easier for browsers to download the content.&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img alt="Stream Videos with Low Server Resource and Gzip compression using NodeJS " class="sri" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYDGXbzwASuuI3fcuY1z5RAl-MT9dZXc0HgPSYrxr9P1w1nLPDHya5r3-mNxen4bGFKFUhs0oIrJVwN8pHOUFrY0TdkNnKNePlMAw-GLLvgqe1nIHGFDI8hfL4jnHYgvNYLqtf_NyPf3hl/s1600/rtvs.png" /&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;This tutorial assumes you have the basic knowledge on how to use NodeJS. If you are new to NodeJS, &lt;a href="https://www.codingsavvy.com/2016/02/beginners-step-guide-for-nodejs.html"&gt;this article is a good way to start learning.&lt;/a&gt; We are going to harness the power of inbuilt NodeJS files-system library that is written in C++ to make content manipulation seamless, fast and easy. In Node &lt;i&gt;fs&lt;/i&gt; module, all methods have asynchronous and synchronous forms; I/O tasks can take time and it might fail due to various reasons. 
&lt;br /&gt;
&lt;ins class="adsbygoogle" data-ad-client="ca-pub-5655726184152350" data-ad-format="fluid" data-ad-layout="in-article" data-ad-slot="7103113874" style="display: block; text-align: center;"&gt;&lt;/ins&gt;It's recommended to use the asynchronous methods, The asynchronous form always takes a completion callback as its last argument. The module can perform many I/O functions like rename, delete, move, create, watch, read, write and many more on files or folder.&lt;br /&gt;
In this example usage, we are using the ExpressJS framework as our server-side handle. ExpressJS gives the request and the response object as a parameter for each route (&lt;i&gt;req, res&lt;/i&gt;). Using response object to feed the client with the stream data, we can use the Node &lt;i&gt;fs&lt;/i&gt; module. Another useful library that we are going to be using is the Node zlib module. Zlib provides compression functionality implemented using Gzip and Deflate/Inflate. It makes it possible for the fs module to feed the response stream with a compressed content. It is recommended to first check if the client environment supports compression before serving it with a compressed content. Compression-support checks can be done with the request object header. Every client that accept compressed data will send an &lt;i&gt;'accept-encoding'&lt;/i&gt; header.&lt;br /&gt;
Handling video streaming on a server is different from how a regular request is handled; video streaming needs to be on demand to save both client and server resource and avoid blocking other useful processes. &lt;br /&gt;
&lt;ins class="adsbygoogle" data-ad-client="ca-pub-5655726184152350" data-ad-format="fluid" data-ad-layout="in-article" data-ad-slot="4436077185" style="display: block; text-align: center;"&gt;&lt;/ins&gt;NodeJS non-blocking I/O paradigm and JavaScript makes a good streaming service. Companies like Netflix, LinkedIn and Paypal use NodeJS in production for some aspect of their services to enable a seamless experience for users.&lt;br /&gt;
Why Netflix Implemented the Node.js by Yunong Xiao, Principle Engineer, Netflix.&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;/div&gt;
The example in this tutorial demonstrate a simple and straightforward way of streaming video content from the server. In a large user-base environment, a lot of refactoring and more coding will need to be done to make sure it scales perfectly for the use case.
Below code sample shows how to handle video streaming from an ExpressJS route.&lt;br /&gt;
&lt;div class="code"&gt;
router.get('/stream', function (req, res) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; const videoURI = path.join(__dirname, "videos", "myvideo.mp4");&lt;br /&gt;
&amp;nbsp; &amp;nbsp; var acceptEncoding = req.headers['accept-encoding'];&lt;br /&gt;
&amp;nbsp; &amp;nbsp; const stat = fs.statSync(videoURI);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; const fileSize = stat.size&lt;br /&gt;
&amp;nbsp; &amp;nbsp; const range = req.headers.range&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if (range) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; const parts = range.replace(/bytes=/, "").split("-")&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; const start = parseInt(parts[0], 10)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; const end = parts[1]&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ? parseInt(parts[1], 10)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : fileSize-1&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; const chunkSize = (end-start)+1&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; const stream = fs.createReadStream(path, {start, end})&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;const head = {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'Content-Range': `bytes ${start}-${end}/${fileSize}`,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'Accept-Ranges': 'bytes',&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'Content-Length': chunkSize,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'Content-Type': 'video/mp4',&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; if (/\bdeflate\b/.test(acceptEncoding)) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; head['Content-Encoding']= 'deflate';&lt;br /&gt;
&amp;nbsp; &amp;nbsp; }&amp;nbsp; else if (/\bgzip\b/.test(acceptEncoding)) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp;head['Content-Encoding']= 'gzip';&lt;br /&gt;
&amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; res.writeHead(206, head);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; if (/\bdeflate\b/.test(acceptEncoding)) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; stream.pipe(zlib.createDeflate()).pipe(res);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;} else if (/\bgzip\b/.test(acceptEncoding)) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stream.pipe(zlib.createGzip()).pipe(res);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stream.pipe(res);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; } else {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; const head = {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'Content-Length': fileSize,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'Content-Type': 'video/mp4',&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; if (/\bdeflate\b/.test(acceptEncoding)) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; head['Content-Encoding']= 'deflate';&lt;br /&gt;
&amp;nbsp; &amp;nbsp; }&amp;nbsp; else if (/\bgzip\b/.test(acceptEncoding)) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp;head['Content-Encoding']= 'gzip';&lt;br /&gt;
&amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; res.writeHead(200, head)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; var stream = fs.createReadStream(path);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; if (/\bdeflate\b/.test(acceptEncoding)) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; stream.pipe(zlib.createDeflate()).pipe(res);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;} else if (/\bgzip\b/.test(acceptEncoding)) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stream.pipe(zlib.createGzip()).pipe(res);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stream.pipe(res);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp; &amp;nbsp; }&lt;br /&gt;
});&lt;/div&gt;
&lt;ins class="adsbygoogle" data-ad-client="ca-pub-5655726184152350" data-ad-format="fluid" data-ad-layout="in-article" data-ad-slot="4436077185" style="display: block; text-align: center;"&gt;&lt;/ins&gt;The code snippet above simply checks if the browser supports compression as we recommended and stream the content of &lt;i&gt;myvideo.mp4&lt;/i&gt; to the client side. Required modules for this code includes &lt;i&gt;fs, path, zlib and express&lt;/i&gt;.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYDGXbzwASuuI3fcuY1z5RAl-MT9dZXc0HgPSYrxr9P1w1nLPDHya5r3-mNxen4bGFKFUhs0oIrJVwN8pHOUFrY0TdkNnKNePlMAw-GLLvgqe1nIHGFDI8hfL4jnHYgvNYLqtf_NyPf3hl/s72-c/rtvs.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author></item><item><title>5 Ways to Make More Money as a Mobile App Developer</title><link>http://www.codingsavvy.com/2018/09/5-ways-to-make-more-money-as-mobile-app.html</link><category>Mobile Application</category><category>Mobile Application Developer</category><pubDate>Mon, 10 Sep 2018 10:52:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-4887831671249062921</guid><description>&lt;div class="bigInt"&gt;
Mobile application development is a profession filled with potential income source. As a developer making money by building mobile applications can be used to improve personal income. Apart from your primary source, You can venture into various aspects of software development that can further earn more money. Here we are going to expose 5 different ways of making more money as a mobile app developer.&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img alt="5 Ways to Make More Money as a Mobile App Developer" class="sri" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQWsl5oznOnIVrsJGwnJbCkZBbrXMyDFIvrCrOh-RNfZoS-BDmki4BYoxyQEKdIcAQbCvaOVyaMlrOzfkX0op0XHXFhVw13Ysp_AmDEg-Jv2TQm7c9GV0dP25eJ_plRtrXlG51gVcSF_jO/s1600/money-mobile-app.png" /&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;h2&gt;
1. Making Money through Blogging&lt;/h2&gt;
Blogging for any software developer is a way of documenting your personal research thereby enabling you to build up yourself. Overtime, blogging has proven a good money-making avenue for the developer. A developer can start earning from published articles by having a mobile app that will not only serve their audience with latest posts but can be accompanied by adverts from &lt;a href="https://www.google.com/admob/" rel="nofollow" target="_blank"&gt;Admob/Adsense&lt;/a&gt; or personal adverts.&lt;br /&gt;
&lt;h2&gt;
2. Off-the Shelf Software&lt;/h2&gt;
As a mobile app developer, Ready-made software products can be built to meet a certain public demand. Software products like this are common-place nowadays. A software solution like an e-commerce app can be built and resold to various business that requires such services. This can also be given away completely free with some bonus features that requires an in-app purchase to unlock.&lt;script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"&gt;&lt;/script&gt;
&lt;br /&gt;
&lt;ins class="adsbygoogle" data-ad-client="ca-pub-5655726184152350" data-ad-format="fluid" data-ad-layout="in-article" data-ad-slot="4436077185" style="display: block; text-align: center;"&gt;&lt;/ins&gt;&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;

&lt;br /&gt;
&lt;h2&gt;
3. Mobile Games&lt;/h2&gt;
The mobile game market is highly profitable. Building a mobile game is now very easy thanks to platforms like &lt;a href="https://unity.com/solutions/mobile" rel="nofollow" target="_blank"&gt;Unity Game Engine&lt;/a&gt; and &lt;a href="https://www.unrealengine.com/" rel="nofollow" target="_blank"&gt;Unreal Engine&lt;/a&gt;. Mobile games are addictive and huge fans can purchase units like coins or unlock feature via in-app purchase but if it's given away for free, ads can be included.&lt;br /&gt;
&lt;h2&gt;
4. Software as a Service (SaaS)&lt;/h2&gt;
Building app for user consumption is another incredible way of making side income as a mobile app developer. Your products will be online so that users can use it for the solution it provides and pay monthly or yearly subscription per usage. Unlike off-the shelf softwares, SaaS products are completely owned by the developer. All updates, maintenance, and features updates are quite easy to publish. SaaS can be subscription based or in-app purchase to unlock features.
&lt;script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"&gt;&lt;/script&gt;
&lt;br /&gt;
&lt;ins class="adsbygoogle" data-ad-client="ca-pub-5655726184152350" data-ad-format="fluid" data-ad-layout="in-article" data-ad-slot="7103113874" style="display: block; text-align: center;"&gt;&lt;/ins&gt;&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;

&lt;h2&gt;
5. Company Publicity Software&lt;/h2&gt;
As part of many ways to increase your company coverage, a mobile app for your company can get you closer to your clients and improve accessibility. Notification on new offers and recent updates can be pushed to clients with ease.&lt;br /&gt;
&lt;br /&gt;
These are some of the many ways to monetize a mobile app product. I hope you find this article helpful. If it does, please respond by clicking "Yes. thanks" below.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQWsl5oznOnIVrsJGwnJbCkZBbrXMyDFIvrCrOh-RNfZoS-BDmki4BYoxyQEKdIcAQbCvaOVyaMlrOzfkX0op0XHXFhVw13Ysp_AmDEg-Jv2TQm7c9GV0dP25eJ_plRtrXlG51gVcSF_jO/s72-c/money-mobile-app.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author></item><item><title>8 Simple Ways to Speed up React Native Apps to Make it Faster</title><link>http://www.codingsavvy.com/2018/08/8-simple-ways-to-speed-up-react-native.html</link><category>Android</category><category>iOS</category><category>React Native</category><pubDate>Sun, 26 Aug 2018 14:46:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-5252571239890984628</guid><description>&lt;div class="bigInt"&gt;
"A compelling reason for using React Native instead of WebView-based tools is to achieve 60 frames per second and a native look and feel to your apps."
Performance issues in React Native apps have been noticeable to developers, Even though the React Native team is trying their best, Most of these have to do with React itself and how it works. Rendering at &lt;i&gt;60FPS (Frame Per Seconds)&lt;/i&gt; is possible but due to some unethical coding style can make state and render very very expensive, Rendering and loading of assets can draw back React Native app Speed, Overall app performance will also take some hit.
We are going to look into 8 simple ways we can increase the speed of React Native application, These are derived from what other developers have done and my experience with React Native.
&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img alt="8 Simple Ways to Speed up React Native Apps to Make it Faster" class="sri" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaIom3BZPiGAunIj-lbxKfupFZvY21zmVG0K86LTyd4AnHRbQP9erfPRpQGqFXd1Q5a4WZQTK6vM9WNs8UwqPHexRulg3MgkPaf7cj-4CDpw4ev-qgtJLKNh05-9_JGTETjIjutFebaGEZ/s1600/speed.png" /&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;h2&gt;
1. Use PureComponent When Possible&lt;/h2&gt;
Use stateless function or user Pure component to avoid unnecessary re-rendering, React.PureComponent changes the life-cycle method &lt;i&gt;shouldComponentUpdate&lt;/i&gt; and adds some useful logic to automatically check whether a re-render is required for the component. This allows a PureComponent to call method render only if it detects changes in state or props, hence, one can change the state in many components without having to write extra checks like:
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #990000;"&gt;if&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt; (&lt;/span&gt;&lt;span style="color: #45818e;"&gt;this&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;.&lt;/span&gt;&lt;span style="color: #a64d79;"&gt;state&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;.someVal !== computedVal)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color: #45818e;"&gt;this&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;.&lt;/span&gt;&lt;span style="color: #674ea7;"&gt;setState&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;({ someVal: computedVal })&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;&amp;nbsp;}
&lt;/span&gt;&lt;/div&gt;
PureComponent&amp;nbsp; will save you time and help to avoid writing redundant code.&lt;br /&gt;
&lt;h2&gt;
2. Avoid Inline StylesSheet&lt;/h2&gt;
Inline stylesheet is good but to further reduce the rendering time of your components Object StyleSheet is better, According to documentation.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Making a Stylesheet from a style object makes it possible to refer to it by ID instead of creating a new style object every time.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;It also allows to send the style only once through the bridge. All subsequent uses are going to refer an ID (not implemented yet).&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;h2&gt;
3. Don't Declare Function Inside The Render Method&lt;/h2&gt;
Function declared inside the render method will be redeclared each time the render method is called, this will make the view of your app lag and performance will suffer a big hit.
Functions like this:
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #674ea7;"&gt;render&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;(){&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #674ea7;"&gt;const&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt; setValue = (val) =&amp;amp;gt; this.setState({ search: val });&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: #674ea7;"&gt;return&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt; (&amp;lt;TextInput&amp;nbsp; onChangeText={setValue} placeholder="Type here to translate!" /&amp;gt;);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
The example above define such situation where rendering will be very expensive every time there is a need to re-render.
It's better to handle it like this:
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #cc0000;"&gt;class &lt;/span&gt;&lt;span style="color: #6aa84f;"&gt;MyApp&lt;/span&gt; &lt;span style="color: #cc0000;"&gt;extends &lt;/span&gt;&lt;span style="color: #0b5394;"&gt;React.Component&lt;/span&gt;{&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #0b5394;"&gt;constructor&lt;/span&gt;(props) {&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;super&lt;/span&gt;(props);&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
...&lt;br /&gt;
...&lt;br /&gt;
setValue = (val) =&amp;gt; this.setState({ search: val })&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;render&lt;/span&gt;() {&lt;br /&gt;
&lt;span style="color: #cc0000;"&gt;return&lt;/span&gt; (
&lt;span style="color: #45818e;"&gt;&amp;lt;TextInput&amp;nbsp; &lt;/span&gt;&amp;nbsp; style={{height: 40}}&lt;br /&gt;
placeholder="Type here to translate!"&lt;br /&gt;
onChangeText={this.setValue}&lt;br /&gt;
/&amp;gt;);&lt;br /&gt;
}&lt;br /&gt;
}&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;
4. Do expensive Tasks Asynchronously&lt;/h2&gt;
React Native app views and functions are written in JavaScript, JS is single threaded but highly demanding tasks like API calls should be done asynchronously to avoid blocking other activities, It's recommended to use&amp;nbsp;&lt;i&gt;promise&lt;/i&gt; or use &lt;i&gt;async&lt;/i&gt;.
&lt;script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"&gt;&lt;/script&gt;
&lt;ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-5655726184152350"
     data-ad-slot="4436077185"&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;h2&gt;
5. Optimize Static Image Performance&lt;/h2&gt;
When loading assets from the Javascript package, React Native requires the asset file from the package and then sends it across the bridge to the UI Layer to be rendered.
Static images can be optimized by loading it from the app package via &lt;i&gt;Xcode asset catalogs&lt;/i&gt; or in the &lt;i&gt;Android drawable folder&lt;/i&gt; against the JavaScript package.
When the asset is already within the app package, React can just tell the UI layer to render the specific image without having to require or transfer the image data across the bridge.

&lt;br /&gt;
&lt;h3&gt;
Adding Static assets for iOS&lt;/h3&gt;
To add your static asset images, simply click on your asset catalog in Xcode i.e project (Images.xcassets)  and drag your asset files into it. Or once the asset catalog is open in Xcode, you can use the plus button in the lower left-hand corner to add assets.

&lt;br /&gt;
&lt;h3&gt;
Adding Static assets for Android&lt;/h3&gt;
Add your static asset images to the drawable folder of the android project (android/app/src/main/res/drawable). Keep this folder single level, anything placed in subdirectories android won't see. Make sure every file name starts with a letter or you will get an error when compiling the project.

&lt;br /&gt;
&lt;h3&gt;
Usage in Javascript&lt;/h3&gt;
You can now load the image in your JS code like below:
&lt;br /&gt;
&lt;div class="code"&gt;
&amp;lt;Image source="{{uri:"my_image"}} /&amp;gt;
&lt;/div&gt;
&lt;em&gt;Note:&lt;/em&gt; Without the extension.
&lt;br /&gt;
&lt;h2&gt;
6. Use Global State&lt;/h2&gt;
Calls to &lt;i&gt;setState&lt;/i&gt; can be very very expensive and your app performance can drop very fast, It's better to use libraries like &lt;i&gt;Redux&lt;/i&gt; for managing states in your app, apart from making your app state sync with your views Redux state also update your props making your views render only when necessary. If you are writing a component where you only need the props an no state it better to use React.PureComponent.

&lt;br /&gt;
&lt;h2&gt;
7. Don't Bind Methods inside Render&lt;/h2&gt;
Binding action/ function inside render method is as dangerous as declaring function inside the render method.
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #0b5394;"&gt;&amp;lt;TextInput &lt;/span&gt;&lt;span style="color: #45818e;"&gt;onChangeText&lt;/span&gt;={this.textChanged.bind(this)} /&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&lt;span style="color: #0b5394;"&gt;&amp;lt;TextInput&lt;/span&gt; &lt;span style="color: #45818e;"&gt;onChangeText&lt;/span&gt;={()=&amp;gt;this.textChanged()} /&amp;gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
Such functions get created each time your view get re-rendered, It's better done inside the constructor like so:

&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #cc0000;"&gt;class &lt;/span&gt;&lt;span style="color: #6aa84f;"&gt;MyApp&lt;/span&gt; &lt;span style="color: #cc0000;"&gt;extends &lt;/span&gt;&lt;span style="color: #0b5394;"&gt;React.Component&lt;/span&gt;{&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #0b5394;"&gt;constructor&lt;/span&gt;(props) {&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;super&lt;/span&gt;(props);&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;this&lt;/span&gt;.setValue = &lt;span style="color: #134f5c;"&gt;this&lt;/span&gt;.setValue.&lt;span style="color: #351c75;"&gt;bind&lt;/span&gt;(this);&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
...&lt;br /&gt;
...&lt;br /&gt;
setValue(val) {&lt;br /&gt;
&amp;nbsp;this.setState({ search: val });&lt;br /&gt;
}&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;render&lt;/span&gt;() {&lt;br /&gt;
&lt;span style="color: #cc0000;"&gt;return&lt;/span&gt; (
&lt;span style="color: #45818e;"&gt;&amp;lt;TextInput&amp;nbsp; &lt;/span&gt;&amp;nbsp; style={{height: 40}}&lt;br /&gt;
&lt;span style="color: #351c75;"&gt;
          placeholder&lt;/span&gt;="Type here to translate!"&lt;br /&gt;
&lt;span style="color: #134f5c;"&gt;
          onChangeText&lt;/span&gt;={this.setValue}&lt;br /&gt;
/&amp;gt;);&lt;br /&gt;
}&lt;br /&gt;
}&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;
8. Use Immutable Attributes&lt;/h2&gt;
When using &lt;i&gt;React.PureComponent&lt;/i&gt; it only updates when props change, If you are using immutable it has an added advantage because object don't just change unless they need to, immutable data cannot be changed once created.
Immutable Js provides many Persistent Immutable data structures including List, Stack, Map, OrderedMap, Set, OrderedSet, and Record.
PureComponent only does shallow comparison which means it doesn't compare internal attributes of an object, Immutable attributes and PureComponents are the good matches when you only need to re-render views only when necessary.    
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaIom3BZPiGAunIj-lbxKfupFZvY21zmVG0K86LTyd4AnHRbQP9erfPRpQGqFXd1Q5a4WZQTK6vM9WNs8UwqPHexRulg3MgkPaf7cj-4CDpw4ev-qgtJLKNh05-9_JGTETjIjutFebaGEZ/s72-c/speed.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author></item><item><title>Flutter vs React Native : What You Need to Know Before Diving</title><link>http://www.codingsavvy.com/2018/08/flutter-vs-react-native-what-you-need.html</link><category>Flutter</category><category>Mobile Application</category><category>React Native</category><pubDate>Wed, 22 Aug 2018 00:11:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-7427977144996924209</guid><description>&lt;div class="bigInt"&gt;
About a Decayed ago, smartphones were not widely used. Since then, smartphones have become an essential tool to browse our everyday lives, Mobile Apps are the tools that made it so.
Mobile app development has evolved, Since the last decayed, Ways of developing a mobile application 
has taken a new shape.
Developers want to be more efficient without compromising on speed and performance, We want to ship code more quickly by leveraging on cross-platform nature.
&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img alt="Flutter vs React Native : What You Need to Know Before Diving 2018" class="sri" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfOrOW32FsdUeckyh46AxaiHtIf8cn8u5JpeFcpY5cNfKTjv8SDjJAlMD8eEobek21dozMyQbdwqbKURgdZaPD7rBcW8JWvuf4dkk0SzdQVJnGnLV-b-e1LZr-dFT2gtkFqECFmvUqrSyX/s1600/flutter-vs-react-native.png" /&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;
Frameworks has been built to help facilitate and speed up Mobile Application Development Tech Companies want to write product code once for mobile instead of twice but most of us have issues choosing what framework to use when we are starting a new project.
&amp;nbsp; Firstly, Cross-Platform Mobile App Development frameworks have taken over the large portion of the market since it started.
The three most debated frameworks for cross-platform development, Ionic, React Native and Flutter are more useful now more than ever for rapid Mobile Application development.&lt;br /&gt;
Should you user Flutter backed by Google or React Native backed by Facebook for your next project, Let's find out.
&lt;br /&gt;
&lt;h2&gt;
Flutter Pros&lt;/h2&gt;
&lt;h3&gt;
Performance&lt;/h3&gt;
Flutter's engine, written primarily in C++. React Native has a Bridge that connects the Native side with Javascript, Communication between these two sides can be quiet expensive.
&lt;script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"&gt;&lt;/script&gt;
&lt;ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-5655726184152350"
     data-ad-slot="4436077185"&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;h2&gt;
Getting Started&lt;/h2&gt;
Undoubtedly, Flutter excels because Google knows how to write easy and detailed documentation for their frameworks and programming languages. It’s really pleasant and useful to explore.
Learning React Native require dealing with Android and iOS specific setups.

&lt;br /&gt;
&lt;h3&gt;
Animations&lt;/h3&gt;
Animations render more smoothly and Faster on Flutter compare to React Native Animations Library, Flutter does low-level rendering support using Google's Skia graphics library

&lt;br /&gt;
&lt;h3&gt;
Built-in navigator&lt;/h3&gt;
Flutter comes shipped with built-in Navigator, Route creation is very seamless,  unlike React Native where you need to connect any of native navigation packages or opt for a JS base Navigation.

&lt;br /&gt;
&lt;h2&gt;
Flutter Cons&lt;/h2&gt;
&lt;h3&gt;
Immaturity&lt;/h3&gt;
React Native has been around longer than Flutter and RN has a larger community and grows rapidly more than Flutter as at the moment, It's safe to say React Native is more mature that Flutter as at the time of this posting. 

&lt;br /&gt;
&lt;h3&gt;
Darts&lt;/h3&gt;
Developers are like "Did you say Darts?", Darts has been around for a while, It was meant to be a replacement for Javascript at Google for dynamic rendering but OOP can be difficult to learn for a beginner with its inheritance, polymorphism and all OOP hurts, You need to write more to get things done in Darts.

&lt;br /&gt;
&lt;h3&gt;
Templating&lt;/h3&gt;
Unlike React Native there is no division of Darts files into the template therefore data management and styling becomes unpleasant for Developers.

&lt;br /&gt;
&lt;h3&gt;
Animating&lt;/h3&gt;
Flutter animation might be smoother but it requires more to get simple animations done in Flutter compare to React Native.

&lt;br /&gt;
&lt;h2&gt;
React Native Pros&lt;/h2&gt;
&lt;h3&gt;
React&lt;/h3&gt;
React is simple yet powerful and scalable web Framework. React make it easy to maintain large codebases. Here are Some of the things it brought to React Native are:&lt;br /&gt;
&lt;b&gt;Components:&lt;/b&gt; React Components enforce separation of concerns with well-defined props and state. This is a major contributor to React’s scalability.&lt;br /&gt;
&lt;b&gt;Simplified Lifecycles:&lt;/b&gt; Android and, to a slightly lesser extent, iOS lifecycles are notoriously complex. Functional reactive React components fundamentally solve this problem and made learning React Native dramatically simpler than learning Android or iOS.&lt;br /&gt;
&lt;b&gt;Declarative:&lt;/b&gt; The declarative nature of React helped keep our UI in sync with the underlying state.

&lt;br /&gt;
&lt;h3&gt;
IDE's&lt;/h3&gt;
React Native has existed for long and it's now supported by almost every available IDE. Flutter is currently supported by Android Studio, VS Code, and IntelliJ IDEA.

&lt;br /&gt;
&lt;h3&gt;
Javascript&lt;/h3&gt;
If not the easiest programming language, Javascript is beginner friendly compare to Darts and most developers coming from the web can ease into mobile development in React Native.

&lt;br /&gt;
&lt;h3&gt;
App Size&lt;/h3&gt;
Though it's faster Dart Bridge is bigger than React Native bridge, If two apps were built with equal functionality on Flutter and React Native, The size ratio of the app bundle, in the end, will always favor React Native.

&lt;br /&gt;
&lt;h3&gt;
Flexbox&lt;/h3&gt;
React Native handles layout with Yoga, a cross-platform C library that handles layout calculations via the flexbox API.
Most Web App developers are used to using Flexbox, This makes it easy for developers to build layouts in React Native. 

&lt;br /&gt;
&lt;h3&gt;
Development Time&lt;/h3&gt;
Because of Maturity and Community Modules, Developer skills and JavaScript, App Development in with React Native can be faster than Flutter.

&lt;br /&gt;
&lt;h3&gt;
Redux&lt;/h3&gt;
Though Redux usage is optional for React, Redux is mostly used to prevent the UI from ever getting out of sync with state and enabled easy data sharing across screens.

&lt;br /&gt;
&lt;h2&gt;
React Native Cons&lt;/h2&gt;
&lt;h3&gt;
Performance&lt;/h3&gt;
One of the largest concerns around React Native was its performance. However, It's been worked on. moving business logic and layout off of the main thread actually improves render performance in many cases.

&lt;br /&gt;
&lt;h3&gt;
JavaScript Tooling&lt;/h3&gt;
JavaScript is an untyped language. The lack of type safety was both difficult to scale and became a point of contention for mobile engineers used to typed languages who may have otherwise been interested in learning React Native.

&lt;br /&gt;
&lt;h3&gt;
Initial Render Time&lt;/h3&gt;
Unlike with native screens, rendering React Native requires at least one full main thread -&amp;gt; js -&amp;gt; yoga layout thread -&amp;gt; main thread round trip before there is enough information to render a screen for the first time.

&lt;br /&gt;
&lt;h3&gt;
Upgrading React Native&lt;/h3&gt;
Although most React Native upgrades were trivial, there were a few that wound up being painful. In particular, it was nearly impossible to use React Native 0.43 (April 2017) to 0.49 (October 2017) because it used React 16 alpha and beta.

&lt;br /&gt;
&lt;h2&gt;
Personal 
Recommendation to Mobile App Developers&lt;/h2&gt;
Personally, I will recommend to a developer base on their skill-sets, the project requirement and Timeline.
You only have to work with what will make you more efficient, give you less headache and consume less development time.
However, If you are totally new to mobile app development and has no prior experience with JavaScript, I will recommend you go with &lt;i&gt;Flutter&lt;/i&gt;.
Meanwhile, If you have prior experience with React, Javascript, Android Development or iOS Development, I will recommend you go for &lt;i&gt;React Native&lt;/i&gt;.

</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfOrOW32FsdUeckyh46AxaiHtIf8cn8u5JpeFcpY5cNfKTjv8SDjJAlMD8eEobek21dozMyQbdwqbKURgdZaPD7rBcW8JWvuf4dkk0SzdQVJnGnLV-b-e1LZr-dFT2gtkFqECFmvUqrSyX/s72-c/flutter-vs-react-native.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author></item><item><title>React Native Navigation v2 with Redux and Google Analytics</title><link>http://www.codingsavvy.com/2018/08/react-native-navigation-v2-with-redux.html</link><category>Google Analytics</category><category>React Native</category><category>React Native Navigation</category><category>React Redux</category><category>Redux</category><pubDate>Mon, 20 Aug 2018 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-4192667237809332884</guid><description>&lt;div class="bigInt"&gt;
Navigation is one of the core aspects of Mobile app development, With the right navigation module your app will have the native look and feel it deserves. There are lots of Navigation Modules for React-Native out there but most of them are built on JavaScript, JavaScript base Navigations are only trying to fake the native navigation but you can get the real native navigation performance with the look and feel by using React Native Navigation for your Android and iOS app. React Native Navigation is written in native codes to give the best performance and the same look and feel you will get on a native mobile application. In this tutorial, we are using React Native Navigation with Redux and React Native Google Analytics Bridge. Redux and Google Analytics Bridge are just and added the bonus to our app, We use Redux to maintain our app state then we will use Google Analytics Bridge to Track our app and receive detailed usage information from the app.&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img alt="React Native Navigation v2 with Redux and Google Analytics" class="sri" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9xXs9hY58EHv9tO-SNmrpRw6hd2G_wNCj1b1Q9yLcnJI5m5qfw1VvdMHxaZW7Ug-ChBzatXKQPUhvyE_zAzvlW8nB9-KUbQ-wiZax6NOCe2lZzM5CA-R2uzN6qC1eolWnaeSMat-ELuwj/s1600/RNNV2.png" /&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;a href="https://github.com/timotew/RNN2ReduxGoogle" target="_blank"&gt;&lt;img align="absmiddle" alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6tGHhJXSAvmAyQWUzQ3RRlEuXxe-uiJfJwZ7E-glIu59TGhTIK_Fa8Q6fOddR4q6qNUyvZziAP3vGr4WFew_JLgvOcXhEyVJJCD6xv_3JmrR9J7ojSdcKvU4AV1tJSO2NVYkrjzIq1zP4/" style="cursor: pointer;" /&gt; Download Script&lt;/a&gt; &lt;a href="https://app.box.com/s/hehnmh78fxt9atus26o476tea7e5rzu0" target="_blank"&gt;&lt;img align="absmiddle" alt="React Native Navigation v2 with Redux and Google Analytics Demo" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6hJTwTdoChlspM4RCmC1lBewH0_gwp1-7RFBRi4s2tI74dgZjNOuTNuzI-WBfWacHQsfkL0yqrJ4QgmFRhYsrh-E2jQGBcVzGpcKEyvosqTjJUjx_yeLHNz95fDUxj35M7aKqqUQSeoYQ/" style="cursor: pointer;" /&gt; Live Demo&lt;/a&gt;

&lt;br /&gt;
&lt;h2&gt;
Initiating React Native Google Analytics Bridge&lt;/h2&gt;
&lt;blockquote class="tr_bq"&gt;
The key difference with the native bridge is that you get a lot of the metadata handled automatically by the Google Analytics native library. This will include the device UUID, device model, viewport size, OS version etc.
&lt;/blockquote&gt;
Initialize Google analytics in our app with the following line of code:&lt;br /&gt;
&lt;div class="code"&gt;
import { GoogleAnalyticsTracker } from 'react-native-google-analytics-bridge';&lt;br /&gt;
const tracker = new GoogleAnalyticsTracker('UA-124024789-1');&lt;/div&gt;
For more info about React Native Google Analytics Bridge, you can visit the repo page &lt;a href="https://github.com/idehub/react-native-google-analytics-bridge" rel="nofollow" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;h2&gt;
Using React Native Navigation&lt;/h2&gt;
We are going to be using React Native Navigation API that is also available &lt;a href="https://wix.github.io/react-native-navigation/v2/#/" rel="nofollow" target="_blank"&gt;here&lt;/a&gt;. Starting Activity in React Native Navigation is event base, We need to listen for &lt;i&gt;registerAppLaunchedListener(callback)&lt;/i&gt; This event is called once the app is launched. It's where you will initialize the app with the layout you want, via the SetRoot command.
&lt;script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"&gt;&lt;/script&gt;
&lt;ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-5655726184152350"
     data-ad-slot="4436077185"&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;div class="code"&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #134f5c;"&gt;Navigation&lt;/span&gt;.&lt;span style="color: #3d85c6;"&gt;events().registerAppLaunchedListener&lt;/span&gt;(() =&amp;gt; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #741b47;"&gt;tracker&lt;/span&gt;&lt;span style="color: #444444;"&gt;.trackEvent('lunch', 'appLunched');&lt;/span&gt; &lt;span style="color: #e69138;"&gt;// Google Analytics tracker object&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #3d85c6;"&gt;store&lt;/span&gt;.&lt;span style="color: #444444;"&gt;subscribe&lt;/span&gt;(&lt;span style="color: #3d85c6;"&gt;this&lt;/span&gt;.&lt;span style="color: #444444;"&gt;onStoreUpdate.bind(this));&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #3d85c6;"&gt;store&lt;/span&gt;.&lt;span style="color: #444444;"&gt;dispatch(&lt;/span&gt;&lt;span style="color: #674ea7;"&gt;appActions&lt;/span&gt;&lt;span style="color: #444444;"&gt;.appInitialized());&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; });&lt;/div&gt;
&lt;br /&gt;
&lt;h3&gt;
React Native Navigation Single Screen Activity&lt;/h3&gt;
To create a single screen activity we are going to use the stack API:&lt;br /&gt;
&lt;div class="code"&gt;
&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #45818e;"&gt;Navigation&lt;/span&gt;&lt;span style="color: #444444;"&gt;.setRoot({&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #0b5394;"&gt;root&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;stack:&lt;/span&gt;&lt;span style="color: #444444;"&gt; {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;id&lt;/span&gt;&lt;span style="color: #444444;"&gt;: &lt;/span&gt;&lt;span style="color: #e69138;"&gt;'Auth'&lt;/span&gt;&lt;span style="color: #444444;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;children&lt;/span&gt;&lt;span style="color: #444444;"&gt;: [&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt; component&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; name: &lt;/span&gt;&lt;span style="color: #e69138;"&gt;'tlikes.WelcomeScreen',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; passProps: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; str:&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #e69138;"&gt;"This is a prop passed in 'startSingleScreenApp()'!"&lt;/span&gt;&lt;span style="color: #444444;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; obj: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; str:&lt;/span&gt;&lt;span style="color: #e69138;"&gt; 'This is a prop passed in an object!'&lt;/span&gt;&lt;span style="color: #444444;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; arr: [&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; str:&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #e69138;"&gt;'This is a prop in an object in an array in an object!'&lt;/span&gt;&lt;span style="color: #444444;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ],&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;arr2&lt;/span&gt;&lt;span style="color: #444444;"&gt;: [&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [&lt;/span&gt;&lt;span style="color: #e69138;"&gt;'array of strings', 'with two strings'&lt;/span&gt;&lt;span style="color: #444444;"&gt;],&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [1, 2, 3],&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ],&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; num: 1234,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fn: function() {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return 'Hello from a function!';&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ],&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;/span&gt;&lt;/div&gt;
&lt;h3&gt;
React Native Navigation Tabs Screen Activity&lt;/h3&gt;
To create screen with multiple tabs using React Native Navigation we can use the Bottom Tabs API:&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #134f5c;"&gt;Navigation&lt;/span&gt;.&lt;span style="color: #444444;"&gt;setRoot({&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;root&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;sideMenu&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;left&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;component&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;name&lt;/span&gt;&lt;span style="color: #444444;"&gt;: &lt;/span&gt;&lt;span style="color: #e69138;"&gt;'tlikes.BottomTabsSideMenu'&lt;/span&gt;&lt;span style="color: #444444;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;center&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;bottomTabs&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;id&lt;/span&gt;&lt;span style="color: #444444;"&gt;: &lt;/span&gt;&lt;span style="color: #e69138;"&gt;'Dashboard'&lt;/span&gt;&lt;span style="color: #444444;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;options&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;bottomTabs&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;titleDisplayMode: &lt;/span&gt;&lt;span style="color: #e69138;"&gt;'alwaysShow'&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; barStyle: &lt;/span&gt;&lt;span style="color: #e69138;"&gt;'black'&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; translucent: &lt;/span&gt;&lt;span style="color: #351c75;"&gt;true&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; hideShadow: &lt;/span&gt;&lt;span style="color: #674ea7;"&gt;false&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;popGesture&lt;/span&gt;&lt;span style="color: #444444;"&gt;: &lt;/span&gt;&lt;span style="color: #674ea7;"&gt;true&lt;/span&gt;&lt;span style="color: #444444;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;statusBar&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;visible&lt;/span&gt;&lt;span style="color: #444444;"&gt;: &lt;/span&gt;&lt;span style="color: #674ea7;"&gt;true&lt;/span&gt;&lt;span style="color: #444444;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;style&lt;/span&gt;&lt;span style="color: #444444;"&gt;: &lt;/span&gt;&lt;span style="color: #e69138;"&gt;'light'&lt;/span&gt;&lt;span style="color: #444444;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;topBar:&lt;/span&gt;&lt;span style="color: #444444;"&gt; {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;visible&lt;/span&gt;&lt;span style="color: #444444;"&gt;: &lt;/span&gt;&lt;span style="color: #674ea7;"&gt;true&lt;/span&gt;&lt;span style="color: #444444;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;hideOnScroll&lt;/span&gt;&lt;span style="color: #444444;"&gt;: &lt;/span&gt;&lt;span style="color: #674ea7;"&gt;false&lt;/span&gt;&lt;span style="color: #444444;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;buttonColor&lt;/span&gt;&lt;span style="color: #444444;"&gt;: &lt;/span&gt;&lt;span style="color: #e69138;"&gt;'white'&lt;/span&gt;&lt;span style="color: #444444;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;drawBehind&lt;/span&gt;&lt;span style="color: #444444;"&gt;: &lt;/span&gt;&lt;span style="color: #674ea7;"&gt;true&lt;/span&gt;&lt;span style="color: #444444;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;layout&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;orientation&lt;/span&gt;&lt;span style="color: #444444;"&gt;: [&lt;/span&gt;&lt;span style="color: #e69138;"&gt;'portrait'&lt;/span&gt;&lt;span style="color: #444444;"&gt;],&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;topMargin&lt;/span&gt;&lt;span style="color: #444444;"&gt;: &lt;/span&gt;&lt;span style="color: #134f5c;"&gt;Navigation.&lt;/span&gt;&lt;span style="color: #444444;"&gt;constants().statusBarHeight,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; children: [&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; stack: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; children: [&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;component&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; name: &lt;/span&gt;&lt;span style="color: #e69138;"&gt;'tlikes.TrendingScreen'&lt;/span&gt;&lt;span style="color: #444444;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; options: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; statusBar: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; visible: true,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; style: 'light',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; popGesture: true,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;topBar&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; visible: true,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; hideOnScroll: false,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; buttonColor: 'white',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; hideOnScroll: true,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; title: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; text: 'Trending on T-Likes',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fontSize: 20,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; color: 'white',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; background: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; color: '#6B609A',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt; rightButtons&lt;/span&gt;&lt;span style="color: #444444;"&gt;: [&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; icon: require('../img/tlogo.png'),&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; id: 'tlogo',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; color: 'white',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ],&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;leftButtons&lt;/span&gt;&lt;span style="color: #444444;"&gt;: [&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; icon: require('../img/men.png'),&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; id: 'menu',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; color: 'white',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ],&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #45818e;"&gt;bottomTab&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fontSize: 12,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; badge: 'New',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; text: 'Trending',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; icon: require('../img/trending.png'),&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; selectedIcon: require('../img/trending_selected.png'),&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ],&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;stack&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;children&lt;/span&gt;&lt;span style="color: #444444;"&gt;: [&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;component&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; name: 'tlikes.TalentsScreen',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; options: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; statusBar: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; visible: true,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; style: 'light',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; popGesture: true,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;topBar&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; visible: true,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; hideOnScroll: false,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; buttonColor: 'white',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; hideOnScroll: true,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; title: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; text: 'Discover Great Talents on T-Likes',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fontSize: 20,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; color: 'white',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;background&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; color: '#6B609A',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;rightButtons&lt;/span&gt;&lt;span style="color: #444444;"&gt;: [&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; icon: require('../img/tlogo.png'),&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; id: 'tlogo',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; color: 'white',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ],&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;leftButtons&lt;/span&gt;&lt;span style="color: #444444;"&gt;: [&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; icon: require('../img/men.png'),&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; id: 'menu',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; color: 'white',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ],&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt; bottomTab&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fontSize: 12,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; text: 'Discover',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; icon: require('../img/discover.png'),&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; selectedIcon: require('../img/discover_selected.png'),&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ],&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;stack&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;children&lt;/span&gt;&lt;span style="color: #444444;"&gt;: [&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;component&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; name: 'tlikes.ContestsScreen',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #0b5394;"&gt;options&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; statusBar: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; visible: true,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; style: 'light',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; popGesture: true,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;topBar&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; visible: true,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; hideOnScroll: false,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; buttonColor: 'white',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; hideOnScroll: true,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; title: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; text: 'Compete With the Best of Bests',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fontSize: 20,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; color: 'white',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; background: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; color: '#6B609A',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;rightButtons&lt;/span&gt;&lt;span style="color: #444444;"&gt;: [&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; icon: require('../img/tlogo.png'),&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; id: 'tlogo',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; color: 'white',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ],&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;leftButtons&lt;/span&gt;&lt;span style="color: #444444;"&gt;: [&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; icon: require('../img/men.png'),&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; id: 'menu',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; color: 'white',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ],&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #0b5394;"&gt;bottomTab&lt;/span&gt;&lt;span style="color: #444444;"&gt;: {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fontSize: 12,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; text: 'Contests',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; icon: require('../img/contest.png'),&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; selectedIcon: require('../img/contest_selected.png'),&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ],&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ],&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #444444;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;/span&gt;&lt;/div&gt;
You can view the complete source code or download the Demo App via the link above. If you have any question, Leave a comment below I will answer as soon as I can.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9xXs9hY58EHv9tO-SNmrpRw6hd2G_wNCj1b1Q9yLcnJI5m5qfw1VvdMHxaZW7Ug-ChBzatXKQPUhvyE_zAzvlW8nB9-KUbQ-wiZax6NOCe2lZzM5CA-R2uzN6qC1eolWnaeSMat-ELuwj/s72-c/RNNV2.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author></item><item><title>Quick and Fast Image Loading on Android and iOS with React-Native</title><link>http://www.codingsavvy.com/2018/08/quick-and-fast-image-loading-on-android.html</link><category>Android</category><category>iOS</category><category>React Native</category><category>React Native Fast Image</category><category>React Native Image Progress</category><category>React Native Progress</category><pubDate>Tue, 14 Aug 2018 23:02:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-8288748662100252775</guid><description>&lt;div class="bigInt"&gt;
On this version of React-Native Tutorial we are going to look into how to load Images Quick, Fast and Easy with React-Native Module &lt;a href="https://github.com/DylanVann/react-native-fast-image" rel="nofollow" target="_blank"&gt;React-Native Fast Image&lt;/a&gt;, We are also going to add a little animation using &lt;a href="https://github.com/oblador/react-native-image-progress" rel="nofollow" target="_blank"&gt;React-Native Image Progress&lt;/a&gt; Module to allow users know when image loading is in progress and when it's completed. There are three Major modules Involve in this Project that is written by Trusted React-Native Developers and backed by the great community. The main Objective of this Project is to see how we can avoid loading Images twice on Android and iOS each time our app is launched therefore saving us some bandwidth data, React-Native Fast Image does this by caching the images that have been loaded by the app. As stated on the Repo, FastImage is a wrapper around &lt;a href="https://github.com/rs/SDWebImage" rel="nofollow" target="_blank"&gt;SDWebImage (iOS)&lt;/a&gt; and &lt;a href="https://github.com/bumptech/glide" rel="nofollow" target="_blank"&gt;Glide (Android)&lt;/a&gt;, These are two powerful and efficient image caching libraries on Android and iOS platform.&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img alt="Quick and Fast Image Loading on Android and iOS with React-Native" class="sri" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNY2LaSvzjjDwRrQF7Sf73OoQZiKpqpjFrQXPFqFggGcuNUvuXNzlGyH8stTa7UeAZqI8ZWZysab8XJgJeV9BnMVEJp1TjHxdBEhLnDONIKlZWXjIzJalPjkuLQ1CVMVmEeFbjRscByhLl/s1600/imageloading.png" /&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;h3&gt;
React-Native Tutorial Platform Modules&lt;/h3&gt;
&lt;table class="table"&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Module&lt;/th&gt;&lt;th&gt;Version&lt;/th&gt;&lt;th&gt;Repo&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;i&gt;react&lt;/i&gt;&lt;/td&gt;&lt;td&gt;&lt;i&gt;16.4.1&lt;/i&gt;&lt;/td&gt; &lt;td&gt;&lt;a href="https://github.com/facebook/react" rel="nofollow" target="_blank"&gt;React&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;i&gt;react-native&lt;/i&gt;&lt;/td&gt;&lt;td&gt;&lt;i&gt;0.56.0&lt;/i&gt;&lt;/td&gt; &lt;td&gt;&lt;a href="https://github.com/facebook/react-native"&gt;React-Native&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;i&gt;react-native-fast-image&lt;/i&gt;&lt;/td&gt;&lt;td&gt;&lt;i&gt;0.15&lt;/i&gt;&lt;/td&gt; &lt;td&gt;&lt;a href="https://github.com/DylanVann/react-native-fast-image" rel="nofollow" target="_blank"&gt;React-Native Fast Image&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;i&gt;react-native-image-progress&lt;/i&gt;&lt;/td&gt;&lt;td&gt;&lt;i&gt;1.1.1&lt;/i&gt;&lt;/td&gt; &lt;td&gt;&lt;a href="https://github.com/oblador/react-native-image-progress" rel="nofollow" target="_blank"&gt;React-Native Image Progress&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;i&gt;react-native-progress&lt;/i&gt;&lt;/td&gt;&lt;td&gt;&lt;i&gt;3.5.0&lt;/i&gt;&lt;/td&gt; &lt;td&gt;&lt;a href="https://github.com/oblador/react-native-progress" rel="nofollow" target="_blank"&gt;React-Native Progress&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"&gt;&lt;/script&gt;
&lt;ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-5655726184152350"
     data-ad-slot="4436077185"&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;h3&gt;
Installing Required Modules&lt;/h3&gt;
&lt;div class="code"&gt;
$ yarn add react-native-fast-image&lt;br /&gt;
or&lt;br /&gt;
$ npm install react-native-fast-image&lt;/div&gt;
&lt;div class="code"&gt;
$ react-native link react-native-fast-image&lt;/div&gt;
&lt;h3&gt;
React-Native Progress Loader&lt;/h3&gt;
&lt;div class="code"&gt;
$ yarn add react-native-progress&lt;br /&gt;
or&lt;br /&gt;
$ npm install react-native-progress&lt;/div&gt;
&lt;br /&gt;
&lt;div class="code"&gt;
$ react-native link react-native-fast-image&lt;/div&gt;
&lt;h4&gt;
For CocoaPod users&lt;/h4&gt;
Add the ART subspec like so:&lt;br /&gt;
&lt;div class="code"&gt;
pod 'React', path: '../node_modules/react-native', subspecs: [ 'ART', ]&lt;/div&gt;
&lt;h4&gt;
Or manually:&lt;/h4&gt;
Add the &lt;b&gt;ART.xcodeproj &lt;/b&gt;(found in node_modules/react-native/Libraries/ART) to the Libraries group and add libART.a to Link Binary With Libraries under Build Phases. &lt;a href="http://facebook.github.io/react-native/docs/linking-libraries-ios.html#content" rel="nofollow" target="_blank"&gt;More info and screenshots about how to do this are available in the React Native documentation&lt;/a&gt;.&lt;br /&gt;
&lt;h3&gt;
React-Native Image Progress Loader&lt;/h3&gt;
&lt;div class="code"&gt;
$ yarn add react-native-image-progress&lt;br /&gt;
or&lt;br /&gt;
$ npm install react-native-image-progress&lt;/div&gt;
&lt;h2&gt;
Putting It All Together (Sample Usage)&lt;/h2&gt;
&lt;div class="code"&gt;
&lt;span style="color: #cc0000;"&gt;import&lt;/span&gt; &lt;span style="color: #674ea7;"&gt;FastImage&lt;/span&gt; from &lt;span style="color: #e69138;"&gt;'react-native-fast-image'&lt;/span&gt;;&lt;br /&gt;
&lt;span style="color: #cc0000;"&gt;import&lt;/span&gt; &lt;span style="color: #3d85c6;"&gt;* &lt;/span&gt;as &lt;span style="color: #3d85c6;"&gt;Progress&lt;/span&gt; from &lt;span style="color: #e69138;"&gt;'react-native-progress'&lt;/span&gt;;&lt;br /&gt;
&lt;span style="color: #cc0000;"&gt;import&lt;/span&gt; { &lt;span style="color: #674ea7;"&gt;createImageProgress&lt;/span&gt; } from &lt;span style="color: #e69138;"&gt;'react-native-image-progress'&lt;/span&gt;;&lt;br /&gt;
&lt;span style="color: #0b5394;"&gt;const&lt;/span&gt; &lt;span style="color: #674ea7;"&gt;FImage&lt;/span&gt; = createImageProgress(FastImage);&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #351c75;"&gt;FImage&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #3d85c6;"&gt;style={{ height: 200, width: '100%' }}&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: #3d85c6;"&gt; source={{&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #674ea7;"&gt;uri: &lt;/span&gt;&lt;span style="color: #e69138;"&gt;'&lt;/span&gt;&lt;span style="color: #38761d;"&gt;&amp;lt;image_url_here&amp;gt;&lt;/span&gt;&lt;span style="color: #e69138;"&gt;'&lt;/span&gt;&lt;span style="color: #674ea7;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #674ea7;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; priority: FastImage.priority.normal,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #674ea7;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; headers: { 'accept-encoding': '' },&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }}&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #3d85c6;"&gt;resizeMode={&lt;/span&gt;&lt;span style="color: #674ea7;"&gt;FastImage&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;.&lt;/span&gt;&lt;span style="color: #741b47;"&gt;resizeMode&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;.&lt;/span&gt;&lt;span style="color: #674ea7;"&gt;contain&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; indicator={&lt;/span&gt;&lt;span style="color: #0b5394;"&gt;Progress&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;.&lt;/span&gt;&lt;span style="color: #a64d79;"&gt;Pie&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; indicatorProps={{&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color: #674ea7;"&gt; size:&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt; &lt;/span&gt;&lt;span style="color: #cc0000;"&gt;80&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color: #674ea7;"&gt; borderWidth:&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt; &lt;/span&gt;&lt;span style="color: #cc0000;"&gt;0&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #674ea7;"&gt;color:&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt; &lt;/span&gt;&lt;span style="color: #e69138;"&gt;'rgba(60,14,101, 1)'&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #674ea7;"&gt;unfilledColor:&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt; &lt;/span&gt;&lt;span style="color: #e69138;"&gt;'rgba(60,14,101, 0.2)'&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }}&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #0b5394;"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;
There you go, The code above can be used in any component or directly in the &lt;i&gt;Render Method&lt;/i&gt; of the View.&amp;nbsp; The progress animation can also be changed by changing the &lt;i&gt;indicator&lt;/i&gt; parameter i.e &lt;i&gt;indicator={Progress.Circle}&lt;/i&gt; .&amp;nbsp; Just play around and have fun with it. If you have any suggestions or question you can leave it in the comment box below.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNY2LaSvzjjDwRrQF7Sf73OoQZiKpqpjFrQXPFqFggGcuNUvuXNzlGyH8stTa7UeAZqI8ZWZysab8XJgJeV9BnMVEJp1TjHxdBEhLnDONIKlZWXjIzJalPjkuLQ1CVMVmEeFbjRscByhLl/s72-c/imageloading.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author></item><item><title>Building Android and iOS Apps with React-Native in 5 Minutes.</title><link>http://www.codingsavvy.com/2018/08/building-android-and-ios-apps-with.html</link><category>Android</category><category>iOS</category><category>React Native</category><pubDate>Mon, 13 Aug 2018 00:18:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-2232805378168378637</guid><description>&lt;div class="bigInt"&gt;
If you haven't read the previous post, Then head straight for it &lt;a href="https://www.codingsavvy.com/2018/08/why-i-moved-from-ionic-to-react-native.html"&gt;here, &amp;nbsp;&lt;/a&gt;&lt;a href="https://www.codingsavvy.com/2018/08/why-i-moved-from-ionic-to-react-native.html"&gt;Why I Moved from Ionic to React-Native for Android and iOS Development&lt;/a&gt;, It will help you understand and appreciate the simplicity and the reason Framework matter in Mobile app development.&lt;br /&gt;
Now, We will design a mobile app for Android and iOS with React-Native in 5 Minutes. This app will run on both Android and iOS Devices, As go further in &lt;a href="https://www.codingsavvy.com/search/label/React%20Native"&gt;React-Native&lt;/a&gt; tutorial series, The magic in React-Native will reveal itself. We will demonstrate how to earnest the power of native module to create a robust Android and iOS app using React-Native.&lt;/div&gt;
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="Building Android and iOS Apps with React-Native in 5 Minutes." class="sri" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfqBCfBFI2-rXG3IXQz1Bt93ZdBiA8HIw_nT4hdGN7qSQWLE4rlYEXrbEG2d_1JlUP94wOWX-gbBaFGQ1-q6pxFD6Gwn6GiGUKPxsi_vA65JUnEbQ5upW-yjQpZCD0112iEF32o1k3OvFt/s1600/Screen+Shot+2018-08-12+at+11.29.43+PM.png" /&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;h2&gt;
Setting up your Environment&lt;/h2&gt;
There are some software needed before an Android or an iOS app can be launched, To run Android app we need to download and Install &lt;a href="https://developer.android.com/studio/#downloads" rel="nofollow" target="_blank"&gt;Android Studios here&lt;/a&gt;. Running React Native app requires Node installed on your computer, Head to Nodejs Download Page to download and install the version that is suitable for your computer. Before you continue, Remember to join our Developers group by subscribing to our notifications list, to no miss out on latest tutorials on how to develop Interactive and Powerful and Interactive Mobile Applications.&lt;br /&gt;
&lt;div class="widget HTML" id="HTML102"&gt;
&lt;h5&gt;
Subscribe Via Email&lt;/h5&gt;
&lt;span class="sidebarcolor1"&gt; Join &lt;/span&gt; over 50,000 &lt;span class="sidebarcolor2"&gt; Active &lt;/span&gt; Programmers&lt;br /&gt;
Subscribe to our newsletter to get the latest updates to your inbox. ;-)&lt;br /&gt;
&lt;br /&gt;
Your email address is safe with us!&lt;br /&gt;
&lt;div id="btntEmailsub"&gt;
&lt;form action="https://feedburner.google.com/fb/a/mailverify" class="btntEmailform" method="post" onsubmit="window.open('https://feedburner.google.com/fb/a/mailverify?uri=codingsavvy', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" target="popupwindow"&gt;
&lt;input name="uri" type="hidden" value="codingsavvy" /&gt;&lt;input name="loc" type="hidden" value="en_US" /&gt; &lt;input class="emailText subbox" name="email" onblur="if (this.value == &amp;quot;&amp;quot;) {this.value = &amp;quot;Enter your email...&amp;quot;;}" onfocus="if (this.value == &amp;quot;Enter your email...&amp;quot;) {this.value = &amp;quot;&amp;quot;}" required="" type="text" value="Enter your email..." /&gt; &lt;input class="emailButton" title="" type="submit" value="SignUp" /&gt;
&lt;/form&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;
Getting Started with React-Native&lt;/h2&gt;
Hopefully, Android studios and Node has been installed as suggested above with no errors if you encounter any error while installing any of these products visit &lt;a href="https://facebook.github.io/react-native/docs/getting-started.html" rel="nofollow" target="_blank"&gt;Getting Started with React Native for more instructions.&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;
Building Android and iOS Application with React-Native&lt;/h2&gt;
Firstly, Let's install React-Native (&lt;i&gt;If you don't have it installed already&lt;/i&gt;) using the following command:&lt;br /&gt;
&lt;div classs="code"&gt;
$ &lt;span style="color: purple;"&gt;npm&lt;/span&gt; &lt;span style="color: #3d85c6;"&gt;install &lt;/span&gt;-g &lt;span style="color: #45818e;"&gt;react-native-cli &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
If the command above executed successfully, We are good to create a new React-Native Project but if you encounter an error while executing the command make sure you have an active internet connection and retry and make sure you follow the &lt;a href="https://facebook.github.io/react-native/docs/getting-started.html" rel="nofollow" target="_blank"&gt;React-Native Getting Started Page&lt;/a&gt; carefully.
&lt;script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"&gt;&lt;/script&gt;
&lt;ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-5655726184152350"
     data-ad-slot="4436077185"&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;h3&gt;
Building React-Native Project&lt;/h3&gt;
Now we can create a new React-Native Project using this command on the terminal:&lt;br /&gt;
&lt;div class="code"&gt;
$ &lt;span style="color: #0b5394;"&gt;react-native&lt;/span&gt; &lt;span style="color: #0b5394;"&gt;init&lt;/span&gt; &lt;span style="color: #073763;"&gt;AwesomeProject &lt;/span&gt;&lt;/div&gt;
This will bootstrap a fresh React-Native project in a directory named after the project name.&lt;br /&gt;
&lt;h3&gt;
Running React-Native Project&lt;/h3&gt;
Running React-Native project can be done with a simple command depending on the platform. Firstly, Make sure to be in the project directory i.e by running:&lt;br /&gt;
&lt;div class="code"&gt;
$ &lt;span style="color: purple;"&gt;cd&lt;/span&gt; &lt;span style="color: #134f5c;"&gt;AwesomeProject &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
This command will run the app on any connected device or an existing emulator.&lt;br /&gt;
For Android, In the the terminal run the following command, :&lt;br /&gt;
&lt;div class="code"&gt;
$ &lt;span style="color: #0b5394;"&gt;react-native&lt;/span&gt; &lt;span style="color: #351c75;"&gt;run-android &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
For iOS, Application can be run using this command:&lt;br /&gt;
&lt;div class="code"&gt;
$ &lt;span style="color: #0b5394;"&gt;react-native&lt;/span&gt; &lt;span style="color: #351c75;"&gt;run-ios &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
If you follow all the instructions well, Something similar to this should appear on your screen.&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="" class="sri" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsAOhoJuyqHF-XYAySHAvBgXpSd_n-H54JhIq3cktO9Do1VHfiPaeFL4L14Oskxi0XtTmw1iySmXJZNh8sig-OwA3NIrq2GqV0q7IBue5Esz7XTsaxMVeFcEUiSS5G_Y471XfdG0OX-z6X/s1600/GettingStartediOSSuccess.png" /&gt;&lt;/div&gt;
&lt;br /&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfqBCfBFI2-rXG3IXQz1Bt93ZdBiA8HIw_nT4hdGN7qSQWLE4rlYEXrbEG2d_1JlUP94wOWX-gbBaFGQ1-q6pxFD6Gwn6GiGUKPxsi_vA65JUnEbQ5upW-yjQpZCD0112iEF32o1k3OvFt/s72-c/Screen+Shot+2018-08-12+at+11.29.43+PM.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author></item><item><title>Why I Moved from Ionic to React-Native for Android and iOS Development</title><link>http://www.codingsavvy.com/2018/08/why-i-moved-from-ionic-to-react-native.html</link><category>Ionic</category><category>React Native</category><pubDate>Sun, 12 Aug 2018 13:18:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-4252277034211222223</guid><description>&lt;div class="bigInt"&gt;
Ionic has been my preferred for cross-platform mobile application development framework for about 2 years in a row, But lately, the most project I have work on is built with React-Native, I was a big fan of react but I haven't really looked into React-Native until recently. I love Ionic Framework a lot, Many can tell from my previous posts but there are just some projects that you really want to have access to the native APIs with ease and React-Native kind of provide that bridge out of the box. In this Blog post, I will explain my experience with Ionic Framework and why I switched to React-Native on my recent project and also share my opinion whether a beginner should start with Ionic Framework or just go directly to React-Native.&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="Why I Moved from Ionic to React-Native for Android and iOS Development" class="sri" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVvGePM9t4GAQA23eQccR3nvszhYeYHWs_Fwov_ASSc9ccN4mXCQbkpfwl0gPU0XeLLfu3TZ1T0J-HDxi9_C5LbAuV1lF9tWntH0trYDUBaVmiM-26XaoRmKDU-O-aO2W9xTY9Nacp2HbS/s1600/ionic.png" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;h2&gt;
Ionic Framework&lt;/h2&gt;
A little backstory, Ionic came to life in 2012 with a mindset of allowing Web Developers to use the same skill-set from the web to build mobile applications, Today it is used by thousands of Developers around the world, Ionic allows Developer to choose whether to use Cordova or PhoneGap as the underline technology for the building of Ionic Application, Most Ionic Developers prefers the former because not all the features of the latter were free. Cordova is an Apache product that allows building mobile apps to use standard web technologies i.e HTML, CSS &amp;amp; JS for cross-platform development. Cordova works by executing applications within wrappers targeted to each platform and rely on standards-compliant API bindings to access each device's capabilities such as sensors, data, network status, etc.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://www.blogger.com/blogger.g?blogID=8698550798550906731#" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="667" data-original-width="843" height="253" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5jdNPph5lfVWXA6j8oHekesMn6O7gqSfe59MHaHDAkkG1r4xOoO-jTQ7wUlQ7vj1Bd5_qt1-Nj3xypoVBL-nB76oNpGk-sYP72lxtzYZ8NI5QZC15S5Xg9-ZplYUONznq70zc3fT3S1Me/s320/cordovaapparchitecture.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"&gt;&lt;/script&gt;
&lt;ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-5655726184152350"
     data-ad-slot="4436077185"&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
In short, Cordova works by rendering application inside a Webview by implementing the application itself as a web page. Cordova provides access to native API via plugins written by Developers and the community, They provide an interface for Cordova and native components to communicate with each other and bindings to standard device APIs. This enables you to invoke native code from JavaScript.&lt;br /&gt;
&lt;h3&gt;
Who uses Ionic in Real World&lt;/h3&gt;
MarketWatch, Pacifica, Sworkit and many more apps like Joule: Sous Vide by ChefSteps, McDonald’s Türkiye are all built using Ionic Framework.&lt;br /&gt;
&lt;h2&gt;
React-Native&lt;/h2&gt;
React-Native started at Facebook as an internal hackathon project, in the summer of 2013 and it was announced at &lt;a href="https://code.facebook.com/posts/754869551286944/f8-big-technology-bets-and-open-source-announcements/" rel="nofollow" target="_blank"&gt;React.js Con. In March of 2015&lt;/a&gt;, Facebook announced at F8 that React Native is open and available on GitHub.&lt;br /&gt;
&lt;a href="https://facebook.github.io/react-native/" rel="nofollow" target="_blank"&gt;React Native&lt;/a&gt; a platform that let Developers build native mobile applications using JavaScript and &lt;a href="https://reactjs.org/" rel="nofollow" target="_blank"&gt;ReactJS&lt;/a&gt;, &lt;a href="https://reactjs.org/" rel="nofollow" target="_blank"&gt;ReactJS&lt;/a&gt; is a library whereas &lt;a href="https://facebook.github.io/react-native/" rel="nofollow" target="_blank"&gt;React Native&lt;/a&gt; is a framework, React Native is inspired by React, so the basic idea of the information flow is similar.&lt;br /&gt;
The flow in React is one-directional.&lt;br /&gt;
React Native reduce developers work considerably by allowing developers to maintain a single codebase even when targeting multiple mobile platforms.&lt;br /&gt;
&lt;h3&gt;
Who uses React-Native in Real World&lt;/h3&gt;
Facebook and Instagram use React Native. Other companies or products using it include Bloomberg, Pinterest, Skype, Tesla, Uber, Walmart, Wix, Discord, Gyroscope, SoundCloud Pulse, Tencent QQ, Vogue, and many more.&lt;br /&gt;
&lt;h2&gt;
Why switch from Ionic to React-Native for Android and iOS Apps Development&lt;/h2&gt;
Firstly, Most of the time my choice of technology is based on client demand and application requirements.&lt;br /&gt;
Lately, Apps I have worked on requires access to the native APIs of both iOS and Android platform, Accessing native APIs is quiet easy with React-Native compare to Ionic Framework, Writing a Native module is a thing linking it to JS is another thing.&lt;br /&gt;
React-Native make this process easy for developers because regular React-Native Modules are built using the same technic.&lt;br /&gt;
&amp;nbsp;Secondly, After building my first React-Native app, I fell in love with the way it works. I notice the change in frame rate and the Native look n feel. I love apps that are fast and also the animation on React-Native are just exceptional.&lt;br /&gt;
&amp;nbsp;So thats it for me, Thats how I move from Ionic to React-Native, Of course it doesn't mean I won't use Ionic on projects again but I will think about it first before I do.&lt;br /&gt;
Ionic is still winning in terms of community support also that doesn't mean React-Native community is not growing but because of AngularJS and TypeScript, Ionic is still leading on that aspect.&lt;br /&gt;
If you have any questions or opinion about this, Feel free to leave a comment below.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVvGePM9t4GAQA23eQccR3nvszhYeYHWs_Fwov_ASSc9ccN4mXCQbkpfwl0gPU0XeLLfu3TZ1T0J-HDxi9_C5LbAuV1lF9tWntH0trYDUBaVmiM-26XaoRmKDU-O-aO2W9xTY9Nacp2HbS/s72-c/ionic.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author></item><item><title>Build your first Ionic 3 Mobile App, Detailed Beginner's Guide</title><link>http://www.codingsavvy.com/2017/11/build-your-first-ionic-3-mobile-app.html</link><category>AngularJs</category><category>IonicFramework</category><category>Mobile Application</category><pubDate>Fri, 10 Nov 2017 00:24:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-6641109202986068659</guid><description>&lt;div class="bigInt"&gt;
Ionic is the Leading Cross-Platform development framework. Ionic let you build Mobile application for Android, iOS and Windows with just a single codebase.&lt;br /&gt;
The first issue that beginner's have when they want to build an Ionic App is that they don't have previous experience with the technologies behind the Ionic Stack.&lt;br /&gt;
Ionic 3 uses Angular, Typescript and HTML5 for it main components.&lt;br /&gt;
The first two stack technologies are both based on javascript.&lt;br /&gt;
Therefore, To truly understand this tutorial you should be able to write basic JavaScript. You are expected to understand functions, Objects, arrays and variable declarations. 
&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img class="sri" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv40Hmtz30NLe6w4FgzdpdYm-nd7ogiHk0GydVzGqKCPC2IQrwpdoM9WovLUZe9km0uc_xzb9MMGTR5FcZn3ZW-OQnzVtok8QR0vJZQxOze91_Q89mEh3feR6xRNn2qi-yJm8rlqLgR3iJ/s1600/ion.png" /&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;a href="https://app.box.com/s/b4vfuvvrrgom2hagi0nf7dwse56i90es" target="_blank"&gt;&lt;img align="absmiddle" alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6tGHhJXSAvmAyQWUzQ3RRlEuXxe-uiJfJwZ7E-glIu59TGhTIK_Fa8Q6fOddR4q6qNUyvZziAP3vGr4WFew_JLgvOcXhEyVJJCD6xv_3JmrR9J7ojSdcKvU4AV1tJSO2NVYkrjzIq1zP4/" style="cursor: pointer;" /&gt; Download Script&lt;/a&gt;&lt;br /&gt;
Typescript is a superset of JavaScript, It easy and scales your JavaScript codes.
&lt;a href="https://github.com/angular/angular/blob/master/CHANGELOG.md" rel="nofollow" target="_blank"&gt;Angular 5 is currently in beta&lt;/a&gt;, It's now faster and smaller,&lt;br /&gt;
Angular application production build are now minimized and work faster.
&lt;br /&gt;
&lt;h2&gt;
Software Requirements for Building Ionic 3 Mobile App&lt;/h2&gt;
For our final source code, You will need &lt;a href="https://developer.android.com/studio/index.html" rel="nofollow" target="_blank"&gt;Android Studio&lt;/a&gt; install on your machine before we can build the Android Version of our Ionic 3 mobile app. &lt;br /&gt;
Secondly, To build the iOS version of our Ionic 3 Mobile app we will need to install Apple&amp;nbsp;&lt;a href="https://developer.apple.com/xcode/" rel="nofollow" target="_blank"&gt;xCode&lt;/a&gt;&amp;nbsp;on your MacBook.&lt;br /&gt;
Finally, To build the Windows Mobile version or our Ionic 3 App we will need to install &lt;a href="https://www.visualstudio.com/" rel="nofollow" target="_blank"&gt;Microsoft Visual Studio&lt;/a&gt;.
&lt;br /&gt;
&lt;h2&gt;
Installing NodeJs and NPM&lt;/h2&gt;
In case you are hearing about &lt;a href="https://nodejs.org/en/" rel="nofollow" target="_blank"&gt;Nodejs&lt;/a&gt; for the first time, NodeJs is a JavaScript runtime that uses an event-driven, non-blocking I/O model that makes it lightweight and efficient.&lt;br /&gt;
Simply put, A JavaScript on the server side as most developers like to see it.&lt;br /&gt;
&amp;nbsp;To build our first Ionic 3 Mobile App we need to install Nodejs.&lt;br /&gt;
&amp;nbsp;If you don't have NodeJs installed on your machine already.&lt;br /&gt;
&amp;nbsp;Visit &lt;a href="https://nodejs.org/en/download/" rel="nofollow" target="_blank"&gt;NodeJs Website Download Page.&lt;/a&gt; to download and install NodeJs in your machine.
&lt;br /&gt;
NPM also know as Node Package Manager is a JavaScript package manager that is hosting thousands of JavaScript reusable modules.&lt;br /&gt;
Firstly, If you are running on Windows PC, NodeJs has been bundled with &lt;a href="http://npmjs.org/" rel="nofollow" target="_blank"&gt;NPM&lt;/a&gt; but if your are running on **nix Machine you will need to install NPM separately.&lt;br /&gt;
Follow t&lt;a href="https://docs.npmjs.com/getting-started/" rel="nofollow" target="_blank"&gt;his link for instruction on how to install NPM.&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;
Installing Cordova&lt;/h2&gt;
Ionic can be used with &lt;a href="https://phonegap.com/" rel="nofollow" target="_blank"&gt;Phonegap&lt;/a&gt; or &lt;a href="https://cordova.apache.org/" rel="nofollow" target="_blank"&gt;Cordova&lt;/a&gt;&amp;nbsp;but for this tutorial we will be building Ionic 3 Mobile App with Apache Cordova. &lt;br /&gt;
Install Cordova, Open your terminal and input this command.&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #8e7cc3;"&gt;npm install -g cordova
&lt;/span&gt;&lt;/div&gt;
The command below uses NPM to install Cordova to your Machine.
&lt;br /&gt;
&lt;h2&gt;
Getting Started with Building Ionic 3 App&lt;/h2&gt;
Firstly let's install Ionic and all it dependencies using NPM, Open your terminal and run the code below.
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #8e7cc3;"&gt;npm install -g ionic
&lt;/span&gt;&lt;/div&gt;
The command above will install ionic-cli, IOnic, Ionic-Agular, Ionic-Material and other necessary module your machine needs to create Ionic Mobile app.&lt;br /&gt;
&amp;nbsp;For this tutorial, We are going to build a TODO APP with Ionic 3. 
&lt;br /&gt;
&lt;h2&gt;
Building a TODO Mobile APP with Ionic 3&lt;/h2&gt;
Firstly, Open your terminal and run he following code.
&lt;br /&gt;
&lt;div class="code"&gt;
ionic start todoApp sidemenu
&lt;/div&gt;
The command above will create a folder &lt;b&gt;todoApp&lt;/b&gt; and install and &lt;b&gt;ionic sidemenu starter project&lt;/b&gt; into the folder.&lt;br /&gt;
This process will take some minutes before it completes.
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img class="sri" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_4sCW7LIjYrqBqaSmMJelGDXgK_Rrj64w3BvsHTuAc12tVyVKFRoGdZXUfxxnu-izQiAa1Z6pdeOEwG5KfH_mgjt1GjWxoLkA5c1Oh2-BtpbfmHYOsJqIXwKEEHt2liPFW4VQTK1YRyHX/s1600/install.png" /&gt;
&lt;/div&gt;
After the process is done use your terminal to navigate into the project folder by running the following command.
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #8e7cc3;"&gt;cd&lt;/span&gt; &lt;span style="color: #3d85c6;"&gt;todoApp
&lt;/span&gt;&lt;/div&gt;
or Open the project folder in any editor of your choice, &lt;a href="http://code.visualstudio.com/" rel="nofollow" target="_blank"&gt;Microsoft Visual Code&lt;/a&gt; is Recommended it's a free, perfect and lite code editor.
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzpaquxkax0TucfX-wV9Iz6R6tDtrW35SmMLlyTFG-FERyd3w0I6YnFZwAbR1LND43cAGpTsjYcU84UysSK2RmbwSkoWp6NKNGxNTTwckYQD8ot9YpxdKmvpvKpYXxlI9UNbjgNt0XOltM/s1600/ioni-todo.png" /&gt;&lt;/div&gt;
From the Image above you could see the folder structure of our IOnic 3 TODOAPP.
It look like this.
&lt;br /&gt;
Let's run the todoApp by running the following command in the terminal.
To open terminal in Visual Code press &lt;i&gt;Ctrl+`&lt;/i&gt;.
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #8e7cc3;"&gt;ionic serve -l
&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
See the expected output below&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm6ATnWVHHxaQEFzDHnjdYi_kKuWmwWIaORKaOIDk6DCE5DDU63nQA4QQK1zHvAt4O-aqap1gVW5lOEc0OxaSFY6P7VD3DAVxXfHuygJqOaqmaBUduh7oZeA8kZnATCMFtPBydXqqP4UGG/s1600/vs.png" /&gt;&lt;/div&gt;
According to my terminal, our Ionic todoApp is running at port &lt;i&gt;http://localhost:8100&lt;/i&gt;
&lt;br /&gt;
If we open &lt;i&gt;http://localhost:8100/ionic-lab&lt;/i&gt; it should look like below.
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjLZlfbmXMUenAhPPHGmSbzv4mjhAiJ7y9KU7B_U5uH4SS4QxMsCyLrCVfL1JHl05CKHhsc4ZCrUbN_2PFSmH6ZcApZqDeX8l1TUVX1kx9dQH_0A1vEnoq56JEPUrNUkkr_FzGzR-SHovP/s1600/ionics.png" /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;pre&gt;/node_modules

/src

&amp;nbsp;&amp;nbsp;/app

&amp;nbsp;&amp;nbsp;/assets

&amp;nbsp;&amp;nbsp;/pages

&amp;nbsp;&amp;nbsp;/theme

&amp;nbsp;&amp;nbsp;/index.html

&amp;nbsp;&amp;nbsp;/manifest.json

&amp;nbsp;&amp;nbsp;/service-worker.js


&lt;/pre&gt;
&lt;/div&gt;
Above are the files and folders you should be introduced to for now.
&lt;br /&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;

&lt;th&gt;Folder
&lt;/th&gt;

&lt;th&gt;Description
&lt;/th&gt;

&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;node_modules&lt;/td&gt;
&lt;td&gt;In node_modules, all modules used by our ionic app is saved in this folder. This folder is managed by NPM so hands off.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;src&lt;/td&gt;
&lt;td&gt;The src directory contain our raw, uncompiled code.Most of the work for an Ionic app take place in src. When we run ionic serve, our code inside of src/ is transpiled into the correct Javascript version that the browser understands (currently, ES5). That means we can work at a higher level using TypeScript, but compile down to the older form of Javascript the browser needs.
&lt;br /&gt;
&lt;i&gt;src/app/app.module.ts&lt;/i&gt; is the entry point for our app.
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;./src/app/app.html&lt;/td&gt;
&lt;td&gt;This is the main template file.
In this template,&lt;i&gt;ion-menu&lt;/i&gt; is used as a side menu, and then an ion-nav component to act as the main content area. The ion-menu’s &lt;i&gt;[content]&lt;/i&gt; property is bound to the local variable &lt;i&gt;nav&lt;/i&gt; from our &lt;i&gt;ion-nav&lt;/i&gt;, so it knows where it should animate around.
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;../pages&lt;/td&gt;
&lt;td&gt;This folder contains all the pages in our ionic app, we will be creating a &lt;i&gt;TodoPage&lt;/i&gt; for our ionic app.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;../theme/variables.scss&lt;/td&gt;
&lt;td&gt;This contains all .scss predefined variables used by Ionic. i.e font-folder and default color scheme&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Lastly, let's create our TodoPage. Open your terminal use &lt;i&gt;Ctrl+c&lt;/i&gt; to stop the current process than input the following command.
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #8e7cc3;"&gt;ionic g page&lt;/span&gt; &lt;span style="color: #6fa8dc;"&gt;todo
&lt;/span&gt;&lt;/div&gt;
This command instruct Ionic to create a new page called &lt;i&gt;todo&lt;/i&gt; in our current App.
Ionic stores all pages under the pages folder, Check the &lt;i&gt;src/pages/&lt;/i&gt; foldersee our new page called todo.
Ionic create three files for every page it generates and put them in a folder. In our case &lt;i&gt;todo.html&lt;/i&gt;, &lt;i&gt;todo.module.ts&lt;/i&gt;, &lt;i&gt;todo.ts&lt;/i&gt; and &lt;i&gt;todo.scss&lt;/i&gt;.
Our page will not be visible yet until we add it to the &lt;i&gt;src/app/app.module.ts&lt;/i&gt; file, like below.
&lt;br /&gt;
&lt;div class="code"&gt;
import &amp;nbsp; { &amp;nbsp;BrowserModule&amp;nbsp; }&amp;nbsp; from&amp;nbsp; '@angular/platform-browser';&lt;br /&gt;
import &amp;nbsp; { ErrorHandler, NgModule }&amp;nbsp; from&amp;nbsp; '@angular/core';&lt;br /&gt;
import &amp;nbsp; { IonicApp,&amp;nbsp; IonicErrorHandler,&amp;nbsp; IonicModule&amp;nbsp; }&amp;nbsp; from&amp;nbsp; 'ionic-angular';&lt;br /&gt;
&lt;br /&gt;
import&amp;nbsp; { &amp;nbsp;MyApp&amp;nbsp; }&amp;nbsp; from &amp;nbsp;'./app.component';&lt;br /&gt;
import&amp;nbsp; {&amp;nbsp; HomePage &amp;nbsp;}&amp;nbsp; from &amp;nbsp;'../pages/home/home';&lt;br /&gt;
import&amp;nbsp; {&amp;nbsp; ListPage &amp;nbsp;}&amp;nbsp; from&amp;nbsp; '../pages/list/list';&lt;br /&gt;
&lt;br /&gt;
import&amp;nbsp; {&amp;nbsp; StatusBar &amp;nbsp;}&amp;nbsp; from &amp;nbsp;'@ionic-native/status-bar';&lt;br /&gt;
import&amp;nbsp; {&amp;nbsp; SplashScreen&amp;nbsp; } &amp;nbsp;from &amp;nbsp;'@ionic-native/splash-screen';&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;import&amp;nbsp; {&amp;nbsp; TodoPageModule &amp;nbsp;}&amp;nbsp; from&amp;nbsp; '../pages/todo/todo.module';&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@NgModule({&lt;br /&gt;
&amp;nbsp; declarations:&amp;nbsp; [&lt;br /&gt;
&amp;nbsp;&amp;nbsp; MyApp,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;  HomePage,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;  ListPage&lt;br /&gt;
&amp;nbsp; ],&lt;br /&gt;
&amp;nbsp;imports: [&lt;br /&gt;
&amp;nbsp; &amp;nbsp; BrowserModule,&lt;span style="color: #674ea7;"&gt;TodoPageModule&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; IonicModule.forRoot(MyApp),&lt;br /&gt;
&amp;nbsp; ],&lt;br /&gt;
&amp;nbsp;bootstrap: [IonicApp],&lt;br /&gt;
&amp;nbsp;entryComponents: [&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;  MyApp,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;  HomePage,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;  ListPage&lt;br /&gt;
&amp;nbsp;],&lt;br /&gt;
&amp;nbsp; providers: [&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; StatusBar,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; SplashScreen,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;  {provide: ErrorHandler, useClass: IonicErrorHandler}&lt;br /&gt;
]&lt;br /&gt;
})&lt;br /&gt;
&amp;nbsp;export class AppModule {}
&lt;/div&gt;
In the above code for &lt;i&gt;src/app/app.module.ts&lt;/i&gt;, We import the &lt;i&gt;TodoPageModule&lt;/i&gt; so that our new page &lt;i&gt;TodoPage&lt;/i&gt; will be recognized by our Ionic App.
Next, Let's make our page &lt;i&gt;TodoPage&lt;/i&gt; the welcome page for our &lt;i&gt;Todo App&lt;/i&gt;.
To do that we will need to edit the &lt;i&gt;src/app/app.component.ts&lt;/i&gt; file to look like below.
&lt;br /&gt;
&lt;div class="code"&gt;
import&amp;nbsp; {&amp;nbsp; Component,&amp;nbsp; ViewChild&amp;nbsp; }&amp;nbsp; from &amp;nbsp;'@angular/core';&lt;br /&gt;
import &amp;nbsp;{ &amp;nbsp;Nav,&amp;nbsp; Platform &amp;nbsp;} &amp;nbsp;from &amp;nbsp;'ionic-angular';&lt;br /&gt;
import&amp;nbsp; { &amp;nbsp;StatusBar&amp;nbsp; }&amp;nbsp; from&amp;nbsp; '@ionic-native/status-bar';&lt;br /&gt;
import&amp;nbsp; {&amp;nbsp; SplashScreen&amp;nbsp; }&amp;nbsp; from &amp;nbsp;'@ionic-native/splash-screen';&lt;br /&gt;
&lt;br /&gt;
import&amp;nbsp; { &amp;nbsp;HomePage }&amp;nbsp; from&amp;nbsp; '../pages/home/home';&lt;br /&gt;
import&amp;nbsp; {&amp;nbsp; ListPage &amp;nbsp;} &amp;nbsp;from &amp;nbsp;'../pages/list/list';&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;import&amp;nbsp; {TodoPage}&amp;nbsp; from&amp;nbsp; '../pages/todo/todo';&lt;/span&gt;&lt;br /&gt;
@Component({&lt;br /&gt;
&amp;nbsp;templateUrl: 'app.html'&lt;br /&gt;
})&lt;br /&gt;
export class MyApp {&lt;br /&gt;
&amp;nbsp; @ViewChild(Nav) nav: Nav;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;rootPage: any = TodoPage;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;pages: Array&amp;lt;{title: string, component: any}&amp;gt;;&lt;br /&gt;
&amp;nbsp;constructor(public platform: Platform, public statusBar: StatusBar, public splashScreen: SplashScreen) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; this.initializeApp();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; // used for an example of ngFor and navigation&lt;br /&gt;
&amp;nbsp;&amp;nbsp; this.pages = [&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;   { title: 'Home', component: HomePage },&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;   { title: 'List', component: ListPage }&lt;br /&gt;
&amp;nbsp;&amp;nbsp; ];&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;initializeApp() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;this.platform.ready().then(() =&amp;gt; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;  // Okay, so the platform is ready and our plugins are available.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;  // Here you can do any higher level native things you might need.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;  this.statusBar.styleDefault();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;  this.splashScreen.hide();&lt;br /&gt;
&amp;nbsp; });&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;openPage(page) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;  // Reset the content nav to have just this page&lt;br /&gt;
&amp;nbsp;&amp;nbsp;  // we wouldn't want the back button to show in this scenario&lt;br /&gt;
&amp;nbsp;&amp;nbsp; this.nav.setRoot(page.component);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
Secondly, Here is our &lt;i&gt;todo.html&lt;/i&gt; below.
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&amp;lt;ion-header&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: #bf9000;"&gt;&amp;nbsp; &amp;lt;ion-navbar&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ion-title&amp;gt;Todo Page&amp;lt;/ion-title&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&amp;nbsp; &amp;lt;/ion-navbar&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: #bf9000;"&gt;&amp;lt;/ion-header&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: #bf9000;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: #bf9000;"&gt;&amp;lt;ion-content padding&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&amp;nbsp; &amp;lt;ion-list-header&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&amp;nbsp; &amp;nbsp; MY TODO LIST&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&amp;nbsp; &amp;lt;/ion-list-header&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&amp;lt;ion-list&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&amp;nbsp; &amp;lt;ion-item&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ion-label&amp;gt;Todo&amp;lt;/ion-label&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ion-input [(ngModel)]="todoBox" type="text"&amp;gt;&amp;lt;/ion-input&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;button item-right secondary outlined ion-button small (click)="addTodo()" &amp;gt;Add&amp;lt;/button&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&amp;nbsp; &amp;lt;/ion-item&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&amp;nbsp; &amp;lt;ion-item *ngFor="let do of allTodos; let i=index; "&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&amp;nbsp; &amp;nbsp; {{do}}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;button item-right color="dark"&amp;nbsp; icon-only round ion-button small (click)="removeTodo(i)" &amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;ion-icon name="remove"&amp;gt;&amp;lt;/ion-icon&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/button&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&amp;nbsp; &amp;lt;/ion-item&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&amp;lt;/ion-list&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&amp;lt;/ion-content&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
Finally, Here is our  final &lt;i&gt;todo.ts&lt;/i&gt; .
&lt;br /&gt;
&lt;div class="code"&gt;
import { Component } from '@angular/core';&lt;br /&gt;
import { IonicPage, NavController, NavParams, AlertController } from 'ionic-angular';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@IonicPage()&lt;br /&gt;
@Component({&lt;br /&gt;
&amp;nbsp; selector: 'page-todo',&lt;br /&gt;
&amp;nbsp; templateUrl: 'todo.html',&lt;br /&gt;
})&lt;br /&gt;
export class TodoPage {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; public todoBox:string="";&lt;br /&gt;
&amp;nbsp; public allTodos:Array&amp;lt;string&amp;gt;=["Install Android Studio","Install Visual Code"];&lt;br /&gt;
&amp;nbsp; constructor(public alertCtrl: AlertController, public navCtrl: NavController, public navParams: NavParams) {&lt;br /&gt;
&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; addTodo(){&lt;br /&gt;
&amp;nbsp; &amp;nbsp; let self=this;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; /*&lt;br /&gt;
&amp;nbsp; &amp;nbsp; *check if the todoBox input is no empty&lt;br /&gt;
&amp;nbsp; &amp;nbsp; */&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if(self.todoBox !=="")&lt;br /&gt;
&amp;nbsp; &amp;nbsp; self.allTodos.push(self.todoBox); //add the string to all todos array&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; self.todoBox="";//clean the todoBox&lt;br /&gt;
&amp;nbsp; }&lt;br /&gt;
&amp;nbsp; removeTodo(index){&lt;br /&gt;
&amp;nbsp; &amp;nbsp; let self=this;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; let toRemove = self.allTodos[index];&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if(toRemove){&lt;br /&gt;
&amp;nbsp; &amp;nbsp; let alert = this.alertCtrl.create({&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; title: 'Are you have completed this task?',&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; subTitle: "'"+toRemove+"' will be remove from the list!",&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; buttons: [{&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; text: 'Yes',&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; handler: () =&amp;gt; {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.allTodos.splice(index,1);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; },'No']&lt;br /&gt;
&amp;nbsp; &amp;nbsp; });&lt;br /&gt;
&amp;nbsp; &amp;nbsp; alert.present();&lt;br /&gt;
&amp;nbsp; }&lt;br /&gt;
&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; ionViewDidLoad() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; console.log('ionViewDidLoad TodoPage');&lt;br /&gt;
&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLME05_X9BouZCoqRlXsoure33G_PvtAcXmAmz5ibYnAoqJ-0K-Pr0km0VWvtCOfik1yiUbdTxSZ3Xv9Zz1s5TRBN7st_NyzuAqYx3a-4gSntZq46u-dVHVERhDz209eWZkhK-T7QJybGM/s1600/td.png" /&gt;

&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7jtqabrYwiZ1xc2RrSVH5DIIu_YTPvgCPfBB-XHFKfRsT1i-FurtnBZGeiK4c3kjZ0ZPxVN4Grv9fdXkwj45Tl1PIIKUujANZRynsLpLntFgISt28JSIOkkPWZi6rXcbZ0RmdOTpHPOI5/s1600/td2.png" /&gt;
&lt;/div&gt;
To compile our Ionic 3 Mobile app for android run the command below.
&lt;br /&gt;
&lt;div class="code"&gt;
ionic cordova build android --prod 
&lt;/div&gt;
Secondly, To compile for iOS devices run this command.
&lt;br /&gt;
&lt;div class="code"&gt;
ionic cordova build ios --prod 
&lt;/div&gt;
&lt;h6&gt;
You can download the demo(TodoApp) source code below&lt;/h6&gt;
&lt;a href="https://app.box.com/s/b4vfuvvrrgom2hagi0nf7dwse56i90es" target="_blank"&gt;&lt;img align="absmiddle" alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6tGHhJXSAvmAyQWUzQ3RRlEuXxe-uiJfJwZ7E-glIu59TGhTIK_Fa8Q6fOddR4q6qNUyvZziAP3vGr4WFew_JLgvOcXhEyVJJCD6xv_3JmrR9J7ojSdcKvU4AV1tJSO2NVYkrjzIq1zP4/" style="cursor: pointer;" /&gt; Download Script&lt;/a&gt;
&lt;i&gt;Please check the readme.txt file for instructions&lt;/i&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv40Hmtz30NLe6w4FgzdpdYm-nd7ogiHk0GydVzGqKCPC2IQrwpdoM9WovLUZe9km0uc_xzb9MMGTR5FcZn3ZW-OQnzVtok8QR0vJZQxOze91_Q89mEh3feR6xRNn2qi-yJm8rlqLgR3iJ/s72-c/ion.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author></item><item><title>Why Ionic Framework is Leading Cross-Platform Development Stack</title><link>http://www.codingsavvy.com/2017/11/why-ionic-framework-is-leading-cross.html</link><category>AngularJs</category><category>HTML5</category><category>Ionic</category><category>IonicFramework</category><category>Mobile Application</category><pubDate>Wed, 8 Nov 2017 23:14:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-1608409104401956427</guid><description>&lt;div class="bigInt"&gt;
&lt;a href="http://ionicframework.com/" rel="noopener nofollow" target="_blank"&gt;Ionic Framework&lt;/a&gt; is a mobile app stack that let web developers build apps for all major app stores and the web with a&lt;strong&gt; single code base&lt;/strong&gt;. At the same time, your app looks and feels&amp;nbsp;&lt;strong&gt;awesome&lt;/strong&gt; on every device, Isn't that great?&lt;br /&gt;
In fact , All you need to know is &lt;strong&gt;Angular, JavaScript, Typescript and HTML5.&lt;/strong&gt;&lt;br /&gt;
Arguably, All these are things you can learn through a normal weekend if your'e a newbie.&lt;br /&gt;
Above all, Ionic Framework makes it easy for web developers to build mobile and web apps for &lt;strong&gt;Android, Windows, IOS, Electron and Browser&lt;/strong&gt; without stress.&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img alt="Why Ionic Framework is Leading Cross-Platform Development Stack" class="sri" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixY1tsSPIE8YYN04e9MKhPSswbPaiJThrPZMnmeX7z15ja9X278AVJShYLoC0hZWcxKHcilk_bXSOTDy3z1CDzE5DuoRGBW0QzHxlVcbESU1zogYSwj4vhk0JwP8qxyHO2xoARaTGHVGMx/s1600/ionic1.png" /&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;No doubt, Hybrid mobile apps also know as Cross-Platform mobile apps are not performing the same as Native mobile apps but it's closer than you can imagine.&lt;br /&gt;
Presently, According to recent survey nearly &lt;strong&gt;80% of developers building mobile apps&lt;/strong&gt; identify as web developers, Which is what leads us to our first point.&lt;br /&gt;
&lt;h2&gt;
Ionic Framework Technologies&lt;/h2&gt;
No doubt, Ionic stack contributes a lot to what make it the leading cross platform development stack.&lt;br /&gt;
Firstly, &lt;a href="https://angular.io/" rel="noopener nofollow" target="_blank"&gt;Angular&lt;/a&gt; is currently the &lt;strong&gt;most popular JavaScript framework&lt;/strong&gt; among web developers.&lt;br /&gt;
Secondly, &lt;a href="https://www.typescriptlang.org/" rel="noopener nofollow" target="_blank"&gt;Typescript&lt;/a&gt; is a widely know type superset of JavaScript and it's growing fast.&lt;br /&gt;
In Addition, &lt;strong&gt;Material Design&lt;/strong&gt; makes Ionic User Interface look good making your app look the same across all platforms.&lt;br /&gt;
In fact, Ionic Team create their own version of Material Design called &lt;strong&gt;Ionic Material&lt;/strong&gt; for faster User Experience.&lt;br /&gt;
&lt;h2&gt;
Ionic Framework Components&amp;nbsp;&lt;/h2&gt;
Actually, Ionic apps are made of high-level building blocks called components, Components make Ionic learning curve easier and faster.&lt;br /&gt;
Even so, Components allow you to quickly construct an interface for your app. i.e &lt;strong&gt;Tabs,&amp;nbsp;modals, popups, Virtual Scroll and cards&lt;/strong&gt;.&amp;nbsp; It's very easy to learn Ionic if you have web development skill, For a newbie Ionic is simple to learn.&lt;br /&gt;
As a result, Ionic apps look clean, simple, and functional,&amp;nbsp;It displays beautifully on all current mobile devices and platforms.&lt;br /&gt;
You can view Ionic Component Documentation &lt;a href="https://ionicframework.com/docs/components/" rel="noopener nofollow" target="_blank"&gt;Here&lt;/a&gt;.&lt;br /&gt;
&lt;h2&gt;
Supported Platforms ( Android, iOS &amp;amp; Windows )&amp;nbsp;&lt;/h2&gt;
In my opinion, Platform support contributes a lot to widely usage of Ionic Stack.&lt;br /&gt;
Ionic uses Cordova or Phonegap to deploy natively, or runs in the browser as a Progressive Web App.&lt;br /&gt;
Therefore, Ionic apps can be build to &lt;strong&gt;Android, iOS, Windows, Browser and Electron&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Developers and Community Support ( GitHub, Ionic Forum, StackOverflow )&lt;/h2&gt;
In fact , As at the time of writing Ionic has &lt;strong&gt;32106 Stars&lt;/strong&gt; and &lt;strong&gt;9304 Forks&lt;/strong&gt; on Ionic&amp;nbsp;&lt;a href="https://github.com/ionic-team/ionic" rel="noopener nofollow" target="_blank"&gt;Github Repo&lt;/a&gt;&amp;nbsp;with thousand of questions on &lt;a href="https://forum.ionicframework.com/" rel="noopener nofollow" target="_blank"&gt;Ionic Support Forum&amp;nbsp;&lt;/a&gt;&amp;nbsp;with different answers, Ionic Framework has evolve a lot/&lt;br /&gt;
No doubt, The great Support Forum contributes to wide usage of the Framework because i'ts growing.&lt;br /&gt;
As a result, Most of the question receive fast response and community members are always there to help out their fellow developers.&lt;br /&gt;
&lt;h2&gt;
Native Plugins and Custom Components&lt;/h2&gt;
Ionic Native is a TypeScript wrapper for Cordova/PhoneGap plugins that make adding any native functionality needed to&amp;nbsp;&lt;a href="https://ionicframework.com/" rel="noopener nofollow" target="_blank"&gt;Ionic&lt;/a&gt;&amp;nbsp;mobile app.&lt;br /&gt;
No doubt, Plugin make it easy for developers to access native API on Hybrid apps.&lt;br /&gt;
Presently, Ionic has more than &lt;a href="https://ionicframework.com/docs/native/" rel="noopener nofollow" target="_blank"&gt;50 plugins&amp;nbsp;&lt;/a&gt;&amp;nbsp;e.g &lt;strong&gt;SQLite, Toast, Vibration, Geo Location, Firebase, Push Notification &lt;/strong&gt;&amp;nbsp;and more.&lt;br /&gt;
Furthermore, Ionic has a lot of custom component built by developers to help create views that are not available in Ionic component doc.&lt;br /&gt;
In conclusion, Ionic is an incredible tool in right hands, It an awesome Framework to work with.&lt;br /&gt;
In addition,With my years of experience in mobile application development, A Framework like Ionic is hard to come by.&lt;br /&gt;
Ionic just do it better than others, Ionic make a newbie build like a professional with little time to spend.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixY1tsSPIE8YYN04e9MKhPSswbPaiJThrPZMnmeX7z15ja9X278AVJShYLoC0hZWcxKHcilk_bXSOTDy3z1CDzE5DuoRGBW0QzHxlVcbESU1zogYSwj4vhk0JwP8qxyHO2xoARaTGHVGMx/s72-c/ionic1.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author></item><item><title> Apple-1 PC hand-built by Steve Wozniak and Steve Jobs in 1976 sold for $355,000</title><link>http://www.codingsavvy.com/2017/06/apple-1-pc-hand-built-by-steve-wozniak.html</link><category>Apple</category><category>Technology</category><pubDate>Tue, 20 Jun 2017 09:29:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-7786275648818380831</guid><description>&lt;div class="bigInt"&gt;
Who could imagine such a machine still exists and it's still working, A working 1976 Apple-1 Personal Computer was sold for $355,000 last week in an auction hosted by &lt;a href="http://www.christies.com/lotfinder/books-manuscripts/a-working-apple-1-personal-computer-palo-alto-6082916-details.aspx"&gt;Christie's New York&lt;/a&gt;. This is the first Apple's Personal Computer, This particular version was hand-built by Steve Wozniak and Steve Jobs in the confines of Steve Jobs' garage. A similar version of this 1976 PC is sold for $671,400 in 2013 and $905,000 in 2014, This makes  $355,000 sales the cheapest Apple-1 sales till date, It comes without a casing and power supply, it's the first to have its own motherboard, which set it apart from competitors. Apple-1's success at the time is credited as the force that catapulted Apple into the personal computing industry.  The Apple-1 originally retailed for $666.66, and now only 66 computers still exist. Sound like a coincidence? Maybe!
&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img alt="First Apple Computer hand-built by Steve Wozniak and Steve Jobs in 1976 sold for $355,000 - still working" class="sri" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGhV0VIBYF08EfDKOek1b6b9OSis0XGNTqh1gzOrnPgpK38rXQAm6VRY-fJ6lusntnNn1JYDF4bjBYRwdW3hnlvkIKbkGEsi_aUYfSV_oW_JKl4WgxyhqUeRGYRAwSEt91JFsYHYQTz-xe/s1600/a-working-apple-1-personal-computer-palo-alto-1976-d6082916-003g.jpg" /&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;div class="cen"&gt;
&lt;img alt="First Apple Computer hand-built by Steve Wozniak and Steve Jobs in 1976 sold for $355,000 - still working" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQ3s_Y4TOiUqVyI7cta6Q4b7ocFCnw4QqHg5nAI_QUJSopzDiurALhPxrMLBcT5uYxskQM7vwYE8yUnZitv4adWFRLvMujHLkxd6zeePH_-6CAjElXNmI4bXEl0aFpOPLj2GqUfUCUDD_J/s1600/apple-1.jpg" /&gt;
&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGhV0VIBYF08EfDKOek1b6b9OSis0XGNTqh1gzOrnPgpK38rXQAm6VRY-fJ6lusntnNn1JYDF4bjBYRwdW3hnlvkIKbkGEsi_aUYfSV_oW_JKl4WgxyhqUeRGYRAwSEt91JFsYHYQTz-xe/s72-c/a-working-apple-1-personal-computer-palo-alto-1976-d6082916-003g.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author></item><item><title>Meet Bixby Samsung New Voice Assistant</title><link>http://www.codingsavvy.com/2017/06/meet-bixby-samsung-new-voice-assistant.html</link><category>Samsung</category><category>Technology</category><pubDate>Sun, 18 Jun 2017 23:01:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-5749600989483101126</guid><description>&lt;div class="bigInt"&gt;
Bixby digital assistant was absent from the initial release of Samsung Galaxy S8, Samsung promised would be coming at a later date. On the 1&lt;sup&gt;st&lt;/sup&gt; of May, 2017, Bixby was released for S8 and S8 Plus owners in South Korea.
Before now, S8 owners have the ability to use Bixby features like Vision augmented reality, Bixby Home, and Reminders features since launch. But the full voice control recognizes the major selling point of the new virtual assistant, which Samsung claims will allow users to accomplish anything they could do with regular touch controls through voice commands. The English version was delayed due to the company’s difficulty in optimizing it for English commands- according to report, Samsung  has announced that S8 and S8 Plus owners can test Bixby’s voice features before anyone else.
&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img class="sri" alt="Meet Bixby Samsung New Voice Assistant" data-original="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB6VybSokvTVFdrz9B_wC3XAtjr7cmRTnNo1DACUzRePVS_CyqiyvH39RWXpY5PgiyKu4i0smqMma2-76n0TUQlhOc3Gf6BDdOTSMJHolTnU1HJJLzPwZGP47im9OjWPWHmbrgxnJUquYz/s1600/bixby.jpg" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh41n78HAATICLIIr3NxMsCEegmPXAd2WZhz83QP_hHWEpwdy7Rr1KA-WuQElgd2iFTCMo71APbxi1QbgPs2Jj_fjytGWRhBZSLEo863icOISMbRFJvqojXLWB83jyMuYnIHnTG6JqSRFIx/s1600/9080607321ab98fa3e70dd24b2513a20.gif" /&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;
The Preview of Bixby is now available to limited number of S8 and S8 Plus owners, Only a limited number of people will receive this early access, Samsung says, so there are no guarantees even if you sign up. Still, you can try your luck &lt;a href="https://sso-us.samsung.com/sso/profile/bixbyepa" rel="nofollow" target="_blank"&gt;here&lt;/a&gt;.
This early access will let users send a text, change their settings, or make phone calls with their voice.
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh41n78HAATICLIIr3NxMsCEegmPXAd2WZhz83QP_hHWEpwdy7Rr1KA-WuQElgd2iFTCMo71APbxi1QbgPs2Jj_fjytGWRhBZSLEo863icOISMbRFJvqojXLWB83jyMuYnIHnTG6JqSRFIx/s72-c/9080607321ab98fa3e70dd24b2513a20.gif" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author></item><item><title>Facebook Using over 150 People and Artificial Intelligence For Counter-Terrorism  </title><link>http://www.codingsavvy.com/2017/06/facebook-using-over-150-people-and.html</link><category>Technology</category><pubDate>Sun, 18 Jun 2017 08:21:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-4008238829140017899</guid><description>&lt;div class="bigInt"&gt;
Recent Announcement by &lt;a href="https://newsroom.fb.com/news/2017/06/how-we-counter-terrorism/" rel="nofollow" target="_blank"&gt;Facebook &lt;/a&gt; that most accounts removed for terrorism-related activity are uncovered by the company itself, and that it’s using artificial intelligence to find more threats.
People have questioned the role of tech companies in fighting terrorism online, Facebook is using  image-matching for terrorist photos and videos, and detecting “clusters,” where terrorist content is posted across related accounts. 
We want to find terrorist content immediately, before people in our community have seen it. Already, the majority of accounts we remove for terrorism we find ourselves. But we know we can do better at using technology — and specifically artificial intelligence — to stop the spread of terrorist content on Facebook
&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img alt="Facebook Using over 150 People and Artificial Intelligence For Counter-Terrorism  " class="sri" data-original="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAoNC25-xdAAXClN7dHzu3Ix83rC0ZMdKeL68w90NCEyua924SMIcEl48FH4tAiYc1vXjSGxTjD99T4jX38n31LfC7OUcYLDYABAE0EHjRNFvEr7_qsUdGA4RuG6Fq175ZoUNsJz96BnFl/s1600/C3ql0veWMAISJcH.jpg" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh41n78HAATICLIIr3NxMsCEegmPXAd2WZhz83QP_hHWEpwdy7Rr1KA-WuQElgd2iFTCMo71APbxi1QbgPs2Jj_fjytGWRhBZSLEo863icOISMbRFJvqojXLWB83jyMuYnIHnTG6JqSRFIx/s1600/9080607321ab98fa3e70dd24b2513a20.gif" /&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;Theses action are no only taken on Facebook alone, According to the report.
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
Because we don’t want terrorists to have a place anywhere in the &lt;em&gt;family of Facebook apps&lt;/em&gt;, we have begun work on systems to enable us to take action against terrorist accounts across all our platforms, &lt;em&gt;including WhatsApp and Instagram&lt;/em&gt;. Given the limited data some of our apps collect as part of their service, the ability to share data across the whole family is indispensable to our efforts to keep all our platforms safe.
&lt;/blockquote&gt;
With all this in place Facebook is having 150 People on this because-
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
AI can’t catch everything. &lt;em&gt;Figuring out what supports terrorism and what does not isn’t always straightforward&lt;/em&gt;, and algorithms are not yet as good as people when it comes to understanding this kind of context. &lt;em&gt;A photo of an armed man waving an ISIS flag might be propaganda or recruiting material, but could be an image in a news story&lt;/em&gt;. Some of the most effective criticisms of brutal groups like ISIS utilize the group’s own propaganda against it. To understand more nuanced cases, we need human expertise. 
&lt;/blockquote&gt;
We want Facebook to be a hostile place for terrorists. The challenge for online communities is the same as it is for real world communities – to get better at spotting the early signals before it’s too late. We are absolutely committed to keeping terrorism off our platform, and we’ll continue to share more about this work as it develops in the future.

</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh41n78HAATICLIIr3NxMsCEegmPXAd2WZhz83QP_hHWEpwdy7Rr1KA-WuQElgd2iFTCMo71APbxi1QbgPs2Jj_fjytGWRhBZSLEo863icOISMbRFJvqojXLWB83jyMuYnIHnTG6JqSRFIx/s72-c/9080607321ab98fa3e70dd24b2513a20.gif" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author></item><item><title>Smart Keyboard that Reads Fingerprints by Microsoft</title><link>http://www.codingsavvy.com/2017/06/smart-keyboard-that-reads-fingerprints.html</link><category>Technology</category><pubDate>Sat, 17 Jun 2017 22:49:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-2155698895780335457</guid><description>&lt;div class="bigInt"&gt;
New smart Keyboard that reads Fingerprint  unveiled by the tech giant &lt;b&gt;Microsoft&lt;/b&gt; is the latest keyboard in town, With maximum security guaranteed, Microsoft has turned you to your own password. The Modern Keyboard is the successor to the Surface Keyboard, and looks identical. The only changes are a new fingerprint reader and the ability to use a cable for a wired connection instead of wireless. This super brilliant Keyboard can be used to log into Windows 10 or websites using Windows Hello. The new Modern Keyboard will work with Windows 10, MacOS, and the latest versions of Android.
&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;iframe  width="854" height="480" src="https://www.youtube.com/embed/YDpGtDzAw4I?ecver=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;
Unfortunately this keyboard is yet to be released by Microsoft,Some users complain that it is release way too early because many has purchased Microsoft Surface keyboard. This Brand new innovation from Microsoft will be available on the market soon. Stay tuned for latest Updates.
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://img.youtube.com/vi/YDpGtDzAw4I/default.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author></item><item><title>Killer Tips to Improve Website PageSpeed Performance and Optimization </title><link>http://www.codingsavvy.com/2017/06/killer-tips-to-improve-website.html</link><pubDate>Wed, 7 Jun 2017 21:06:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-3353079267904499793</guid><description>&lt;div class="bigInt"&gt;
PageSpeed is the amount of time it took web server to respond to the requests of the browser and how long it takes for it to serve all page Resource(Images, Audio, Videos, Flash Animations, e.t.c.), Content (HTML, CSS and Texts) and Meta Information (HTTP info i.e Author, Content-Type, e.t.c) to be fully downloaded and rendered by the web browser. Modern browsers have been optimized to handle page loading efficiently with time, They do have their own drawbacks but not as expensive as a slow webpage. A slowly loading webpage is not good for user experience, most users just click away or close the tab before the loading completes, These can make any potential buyer leave before the get to see any product on the website. PageSpeed improvement is a way of gaining more power above market competitors, People can browse through contents faster, make payments and review / comments. It encourage them so browse around more categories and purchase more items.    
&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img alt="Killer Tips to Improve Website PageSpeed Performance and Optimization " class="sri" data-original="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3N1wq_W_XZBuL7xAsR6jPQtLc9Bv92GzfsgXuV3lMIGc_g94fZcYh9MsdZBcTwPB0icBpZ8Pz7aL0lALXElrDrE-hFhfFRZtRRUfF5aeiM0U2-JuHbnXDTIIlJ72JyFmumoClv5mmS8A8/s1600/pagespees.png" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh41n78HAATICLIIr3NxMsCEegmPXAd2WZhz83QP_hHWEpwdy7Rr1KA-WuQElgd2iFTCMo71APbxi1QbgPs2Jj_fjytGWRhBZSLEo863icOISMbRFJvqojXLWB83jyMuYnIHnTG6JqSRFIx/s1600/9080607321ab98fa3e70dd24b2513a20.gif" /&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;
&lt;blockquote class="tr_bq"&gt;
Don't code today what you can't debug tomorrow.
&lt;/blockquote&gt;
&lt;br /&gt;
This article of focuse on Improving and Optimizing PageSpeed Performance of your website, I am going to be sharing with you how fast loading webpages get users to stay and read / view more web pages of their website.
Nobody like a slowly loading page on their browser, I can make users loose interest in the web page content and affect the entire website.&lt;br /&gt;
The loading time of any webpage is determined by the &lt;b&gt;Server Response Time&lt;/b&gt; and &lt;b&gt;Page Contents&lt;/b&gt;. HTTP state header information contribute little to the weight of page resource , Therefore it will not in the scope of this article.
&lt;br /&gt;
&lt;h2&gt;
How Loading Speed is Calculated?&lt;/h2&gt;
Page loading speed is measured by the resource, contents and server response time of the website, There are other factors added as a way of making sure that your page loads  on time and it's visible and appealing to users.&lt;br /&gt;
Some of these is the prioritization of the above the fold contents, Above the fold contents are the contents that are seen before the browser-cut( before scrolling down ) by user immediately the page is visible on user browser, This contributes a lot to user experience, Your page will look very different and unfamiliar to users when the CSS and JavaScript are not fully loaded, Only HTML elements are visible in this situation. The presentation of the above the fold contents of any webpage encourages users to stay and continue on that page. 
&lt;br /&gt;
&lt;h2&gt;
How to Improve Page Loading Speed?&lt;/h2&gt;
Loading speed improvement has many approach but the most popularly practiced and effective ways are:
&lt;br /&gt;
&lt;h3&gt;
Resource Compression, Minification &amp;amp; uglification &lt;/h3&gt;
Minification is a method of compressing source codes mostly JavaScript, CSS and HTML by reducing the variable lengths, remove empty spaces and removing necessary semi-colons, spaces and new lines. Uglification is more like a security / compression in one package, It joins sentences in source code using comma, changes property access to dot-notation&lt;i&gt;(object.property)&lt;/i&gt;  instead of square bracket method &lt;i&gt;(object['property'])&lt;/i&gt;, All these to reduce number of characters, remove dead code and remove console logs. It also simplifies conditional statements (if) to negation method &lt;i&gt;( condition ? true : false)&lt;/i&gt;, Boolean operations, constants, function declarations.&lt;br /&gt;
All these make source codes extremely difficult to read in return for better performance.
Image can be compressed by shrinking images to use less bandwidth and load faster.&lt;br /&gt;
This is better done on PNG files, It is recommended to use PNG images in your web pages because it’s the only widely supported format that can store partially transparent images.
In PNG (Portable Network Graphics) file, similar colors in your image are combined.&lt;br /&gt;
This technique is called “quantization”. By reducing the number of colors, 24-bit PNG files can be converted to much smaller 8-bit indexed color images. All unnecessary metadata can also be stripped.
This is exactly what &lt;a href="http://tinypng.com/" rel="nofollow" target="_blank"&gt;TinyPNG&lt;/a&gt; does, You can use &lt;a href="http://tinypng.com/" rel="nofollow" target="_blank"&gt;TinyPNG&lt;/a&gt; to compress your images before upload to your webpage, They are no limited to PNG file JPG file are also compressible.&lt;br /&gt;
Gzip compression is enabled via webserver configuration, it's a method of compressing files for faster network transfers(between client and server).&lt;br /&gt;
&amp;nbsp;Enabling Gzip makes web server to provide smaller file sizes which load faster for your website clients (user browsers).&lt;br /&gt;
Gzip compression can be apply via &lt;a href="http://www.codingsavvy.com/2015/07/secure-your-web-applications-through.html"&gt;.htaccess file&lt;/a&gt;, If you're no familiar with this read : &lt;a href="http://www.codingsavvy.com/2015/07/secure-your-web-applications-through.html#compress"&gt;Secure your web applications through .htaccess file&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;
Asynchronous Resource Loading&lt;/h3&gt;
Loading web resource asynchronously popularly known as async method is a way of importing web resource after page contents has been fully loaded, Using this method allow the importand parts of the page to load before they async resource kicks in. Not all resource can be loaded asynchronously but most resource can be loaded using this method. Part of things that slows down page loading are banners, images and JavaScript files.&lt;br /&gt;
Google AdSense and most popular ads company have their default loading style asynchronous.&lt;br /&gt;
To stop Scripts from consuming loading time make sure the are placed at the bottom of the page and are loaded asynchronously. Like weight JavaScript Libraries can be loaded in no time if their minified version are imported but there are some plugins that import necessary scripts, If your page has such plugin make sure they are loading resource with async method. &lt;br /&gt;
These can be done for audio, video and Images as well.&lt;br /&gt;
&lt;h3&gt;
Lazy Loading&lt;/h3&gt;
An alternate method is known as Lazy Loading method, Special thing about lazy loading is that contents are no loaded until they are needed.&lt;br /&gt;
Lazy loading is the same method Facebook timeline utilized.&lt;br /&gt;
&amp;nbsp;It works by loading contents as user is scrolling through them, This way loading time is reduced ad contents are not downloaded from the server until they are required.&lt;br /&gt;
&lt;h3&gt;
Resource Caching&lt;/h3&gt;
Caching is used in speeding up dynamic web applications by alleviating database load. It is treated as  a temporary storage area for page contents, to avoid duplicate data query from the database. Cache store contents in the memory thereby making it easily accessible by the server. Resource like Scripts (JS, CSS) and database result can be cached for a certain period of time to make the page load faster for web server.&lt;br /&gt;
Most popular caching engine is&amp;nbsp;&lt;a href="http://memcached.org/" rel="nofollow" target="_blank"&gt;memcached&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;
Reduction of Page HTML Tags &amp;amp; Elements&lt;/h3&gt;
Making use of less tags in pages is part of making the page portable and lite to deliver to clients, Large page contents will leade to more page tags.&lt;br /&gt;
It is recommended to paginate the webpage or add "redmore" button for longer contents so that page loading and navigation will be easier for visitors.&lt;br /&gt;
&lt;h3&gt;
Use CSS above Images&lt;/h3&gt;
CSS is liter than images, Try to use CSS instead of image whever possible. Things like background image, button image can take time to load. Try using CSS background style or color instead of images. If it necessary to use an image make sure it is compressed.

&lt;br /&gt;
&lt;h3&gt;
Conclusion&lt;/h3&gt;
These recommendations is not a silver bullet, There are lots of thing that affect page loading speed, These are just the most common and recommended methods. &amp;nbsp;Try to test and understand things that are really slowing down your page then use one of the methods above to solve the problem.
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh41n78HAATICLIIr3NxMsCEegmPXAd2WZhz83QP_hHWEpwdy7Rr1KA-WuQElgd2iFTCMo71APbxi1QbgPs2Jj_fjytGWRhBZSLEo863icOISMbRFJvqojXLWB83jyMuYnIHnTG6JqSRFIx/s72-c/9080607321ab98fa3e70dd24b2513a20.gif" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author></item><item><title>Getting started with Google Material Design ( Materialize ) an HTML5 Responsive Framework</title><link>http://www.codingsavvy.com/2017/05/getting-started-with-google-material.html</link><category>CSS</category><category>HTML5</category><pubDate>Wed, 10 May 2017 09:00:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-7513017763064630695</guid><description>&lt;div class="bigInt"&gt;
&lt;span style="color: #3d85c6;"&gt;G&lt;/span&gt;&lt;span style="color: #e06666;"&gt;o&lt;/span&gt;&lt;span style="color: #ffd966;"&gt;o&lt;/span&gt;&lt;span style="color: #6fa8dc;"&gt;g&lt;/span&gt;&lt;span style="color: #6aa84f;"&gt;l&lt;/span&gt;&lt;span style="color: #e06666;"&gt;e&lt;/span&gt; &lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;Materialize&lt;/span&gt; is a CSS framework&amp;nbsp;but the special thing about this powerful library is that it gives your page the look and feel of material properties(colors, typography, shapes, patterns and layout). If you have ever come across any &lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;Material Design&lt;/span&gt; CSS you will understand what&amp;nbsp;&lt;span style="color: #3d85c6;"&gt;G&lt;/span&gt;&lt;span style="color: #e06666;"&gt;o&lt;/span&gt;&lt;span style="color: #ffd966;"&gt;o&lt;/span&gt;&lt;span style="color: #6fa8dc;"&gt;g&lt;/span&gt;&lt;span style="color: #6aa84f;"&gt;l&lt;/span&gt;&lt;span style="color: #e06666;"&gt;e&lt;/span&gt;&amp;nbsp;is trying to archive by creating this powerful library. &lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;Materialize&lt;/span&gt; has it own unique characteristics( Motion and Stacking ) which is why developers don't see it as another &lt;a href="http://getbootstrap.com/" rel="nofollow" target="_blank"&gt;Twitter Bootstrap&lt;/a&gt; duplicate, It follows&amp;nbsp;&lt;span style="color: #3d85c6;"&gt;G&lt;/span&gt;&lt;span style="color: #e06666;"&gt;o&lt;/span&gt;&lt;span style="color: #ffd966;"&gt;o&lt;/span&gt;&lt;span style="color: #6fa8dc;"&gt;g&lt;/span&gt;&lt;span style="color: #6aa84f;"&gt;l&lt;/span&gt;&lt;span style="color: #e06666;"&gt;e&lt;/span&gt;&lt;a href="https://material.io/" rel="nofollow" target="_blank"&gt;&amp;nbsp;Material Design Documentation&lt;/a&gt;.&lt;br /&gt;
Material Design is a design language that combines the classic principles of successful design along with innovation and technology.:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
We want to create a visual language that synthesizes classic principles of good design with the &lt;em&gt;innovation and possibility&lt;/em&gt; of technology and science.&amp;nbsp;
 &lt;span style="color: #3d85c6;"&gt;G&lt;/span&gt;&lt;span style="color: #e06666;"&gt;o&lt;/span&gt;&lt;span style="color: #ffd966;"&gt;o&lt;/span&gt;&lt;span style="color: #6fa8dc;"&gt;g&lt;/span&gt;&lt;span style="color: #6aa84f;"&gt;l&lt;/span&gt;&lt;span style="color: #e06666;"&gt;e&lt;/span&gt;'s goal is to develop a system of design that allows for a unified user experience across all their products on any platform.&lt;/blockquote&gt;
&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;Materialize&lt;/span&gt; is the web implementation of &lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;Material Design&lt;/span&gt; to web which was initially made by&amp;nbsp;&lt;span style="color: #3d85c6;"&gt;G&lt;/span&gt;&lt;span style="color: #e06666;"&gt;o&lt;/span&gt;&lt;span style="color: #ffd966;"&gt;o&lt;/span&gt;&lt;span style="color: #6fa8dc;"&gt;g&lt;/span&gt;&lt;span style="color: #6aa84f;"&gt;l&lt;/span&gt;&lt;span style="color: #e06666;"&gt;e&lt;/span&gt;&amp;nbsp;for&lt;span style="color: #93c47d;"&gt; &lt;a href="https://www.android.com/" rel="nofollow" target="_blank"&gt;&lt;span style="color: #93c47d;"&gt;&lt;b&gt;Android&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;.&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img alt="Programming Languages and Frameworks used to build Top Nigeria Websites" class="sri" data-original="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRRKtyzXUEKywYr1lRi6Rw7A334g1UexA7uNGWlGQxKmWHRIOum9-b2kx_aIxu5wn4Y4P_KNYRrdQihjxRF27nRd9KbJi6XNwi_fdilS_ZSAyBNj7lQRZG26Fo0MxNvHYeCH9-uvedBEqp/s1600/material-design.png" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh41n78HAATICLIIr3NxMsCEegmPXAd2WZhz83QP_hHWEpwdy7Rr1KA-WuQElgd2iFTCMo71APbxi1QbgPs2Jj_fjytGWRhBZSLEo863icOISMbRFJvqojXLWB83jyMuYnIHnTG6JqSRFIx/s1600/9080607321ab98fa3e70dd24b2513a20.gif" /&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://materializecss.com/getting-started.html" target="_blank"&gt;&lt;img align="absmiddle" alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6tGHhJXSAvmAyQWUzQ3RRlEuXxe-uiJfJwZ7E-glIu59TGhTIK_Fa8Q6fOddR4q6qNUyvZziAP3vGr4WFew_JLgvOcXhEyVJJCD6xv_3JmrR9J7ojSdcKvU4AV1tJSO2NVYkrjzIq1zP4/" style="cursor: pointer;" /&gt; Download Materialize&lt;/a&gt;

&lt;a href="https://app.box.com/s/rdxf3v95nz4emuvx6qav3airzp36nce5" target="_blank"&gt;&lt;img align="absmiddle" alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6tGHhJXSAvmAyQWUzQ3RRlEuXxe-uiJfJwZ7E-glIu59TGhTIK_Fa8Q6fOddR4q6qNUyvZziAP3vGr4WFew_JLgvOcXhEyVJJCD6xv_3JmrR9J7ojSdcKvU4AV1tJSO2NVYkrjzIq1zP4/" style="cursor: pointer;" /&gt; Download Demo Script&lt;/a&gt;

&lt;a href="http://demos.codingsavvy.com/memail/" target="_blank"&gt;&lt;img align="absmiddle" alt="Getting started with Google Material Design ( Materialize ) an HTML5 Responsive Framework" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6hJTwTdoChlspM4RCmC1lBewH0_gwp1-7RFBRi4s2tI74dgZjNOuTNuzI-WBfWacHQsfkL0yqrJ4QgmFRhYsrh-E2jQGBcVzGpcKEyvosqTjJUjx_yeLHNz95fDUxj35M7aKqqUQSeoYQ/" style="cursor: pointer;" /&gt; Live Demo&lt;/a&gt;
&lt;br /&gt;
According to &lt;a href="http://materializecss.com/" rel="nofollow" target="_blank"&gt;Materialize Documentation &lt;/a&gt;, If you will prefer the &lt;a href="http://sass-lang.com/" rel="nofollow" target="_blank"&gt;Sass&lt;/a&gt; version of the framework you can download it from the &lt;em&gt;&lt;a href="http://materializecss.com/getting-started.html" rel="nofollow" target="_blank"&gt;Getting Started Page&lt;/a&gt;&lt;/em&gt;.
&lt;br /&gt;
The team working on this wonderful framework are a team of students from &lt;a href="http://cmu.edu/" rel="nofollow" target="_blank"&gt;Carnegie Mellon University &lt;/a&gt; in Pittsburgh, Pennsylvania.


&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img class="sri" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsO9V2esNZrz2e4Sy5iUwATKeP3ndZzJSc2OEegX4sUl6GfOM9IDPOHlsSgK7J7mo_6vGYxKv3Xvpzjnw4fzIzDyIXzKQ73M4p7LW5K3tCX26bIM74HmAi0rpnmGPnn80iCwRLs4i-S-o5/s1600/materialize_team.jpeg" /&gt;&lt;/div&gt;
I had to share their picture, this team did a very &lt;i&gt;incredible job&lt;/i&gt;, The team include &lt;strong&gt;Alvin Wang (Far right)&lt;/strong&gt;, &lt;strong&gt;Alan Chang(Middle left)&lt;/strong&gt;, &lt;strong&gt;Kevin Louie(Middle Right)&lt;/strong&gt;, &lt;strong&gt;Alex Mark(Far Left)&lt;/strong&gt;.
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #93c47d;"&gt;&amp;lt;!-- Compiled and minified CSS --&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #e06666;"&gt;&amp;lt;link href="&lt;/span&gt;&lt;span style="color: #8e7cc3;"&gt;https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.2/css/materialize.min.css&lt;/span&gt;&lt;span style="color: #e06666;"&gt;" rel="stylesheet"&amp;gt;&amp;lt;/link&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #93c47d;"&gt; &amp;lt;!-- Compiled and minified JavaScript (JQuery is required) --&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #93c47d;"&gt;&lt;span style="color: #93c47d;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #e06666;"&gt;&amp;lt;script src="&lt;/span&gt;&lt;span style="color: #76a5af;"&gt;https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #e06666;"&gt;"&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #e06666;"&gt;&amp;lt;script src="&lt;/span&gt;&lt;span style="color: #8e7cc3;"&gt;https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.2/js/materialize.min.js&lt;/span&gt;&lt;span style="color: #e06666;"&gt;"&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;/div&gt;
The needed framework files can be imported as above, the first line import the CSS file while the second line imports the JavaScript needed.&lt;br /&gt;
To install Materialize using &lt;a href="https://bower.io/" rel="nofollow" target="_blank"&gt;Bower&lt;/a&gt;, Use the code below.
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #6fa8dc;"&gt;bower&lt;/span&gt; &lt;span style="color: #e06666;"&gt;install&lt;/span&gt; &lt;span style="color: #a64d79;"&gt;materialize
&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
Sample markup with all needed resource should look close to this:
&lt;br /&gt;
&lt;div class="code"&gt;
&amp;nbsp;&lt;span style="color: #666666;"&gt; &amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #666666;"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: purple;"&gt;html&lt;/span&gt;&lt;span style="color: #666666;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #666666;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: purple;"&gt;head&lt;/span&gt;&lt;span style="color: #666666;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #666666;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #93c47d;"&gt;&amp;lt;!--Import Google Icon Font--&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #666666;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #e06666;"&gt;&amp;lt;link href="&lt;/span&gt;&lt;span style="color: #6fa8dc;"&gt;http://fonts.googleapis.com/icon?family=Material+Icons&lt;/span&gt;&lt;span style="color: #e06666;"&gt;" rel="stylesheet"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #666666;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #93c47d;"&gt;&amp;lt;!--Import materialize.css--&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #666666;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color: #e06666;"&gt; &amp;lt;link type="text/css" rel="stylesheet" href="&lt;/span&gt;&lt;span style="color: #6fa8dc;"&gt;css/materialize.min.css&lt;/span&gt;&lt;span style="color: #e06666;"&gt;" &amp;nbsp;media="screen,projection"/&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #666666;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: #666666;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #93c47d;"&gt;&amp;lt;!--Let browser know website is optimized for mobile--&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #666666;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #76a5af;"&gt;&amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"/&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #666666;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: purple;"&gt;head&lt;/span&gt;&lt;span style="color: #666666;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #666666;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: #666666;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: purple;"&gt;body&lt;/span&gt;&lt;span style="color: #666666;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #666666;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #93c47d;"&gt;&amp;lt;!--Import jQuery before materialize.js--&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #666666;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: purple;"&gt;script&lt;/span&gt;&lt;span style="color: #666666;"&gt; type="text/javascript" src="&lt;/span&gt;&lt;span style="color: #674ea7;"&gt;https://code.jquery.com/jquery-2.1.1.min.js&lt;/span&gt;&lt;span style="color: #666666;"&gt;"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: purple;"&gt;script&lt;/span&gt;&lt;span style="color: #666666;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #666666;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: purple;"&gt;scrip&lt;/span&gt;&lt;span style="color: #666666;"&gt;t type="text/javascript" src="&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;js/materialize.min.js&lt;/span&gt;&lt;span style="color: #666666;"&gt;"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: purple;"&gt;script&lt;/span&gt;&lt;span style="color: #666666;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #666666;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/body&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #666666;"&gt;&amp;nbsp; &amp;lt;/html&amp;gt;
&lt;/span&gt;&lt;/div&gt;
This video best explains the quality designs that can be done with Materialize
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="445" src="https://www.youtube.com/embed/Q8TXgCzxEnw?ecver=1" width="792"&gt;&lt;/iframe&gt;&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh41n78HAATICLIIr3NxMsCEegmPXAd2WZhz83QP_hHWEpwdy7Rr1KA-WuQElgd2iFTCMo71APbxi1QbgPs2Jj_fjytGWRhBZSLEo863icOISMbRFJvqojXLWB83jyMuYnIHnTG6JqSRFIx/s72-c/9080607321ab98fa3e70dd24b2513a20.gif" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author></item><item><title>Programming Languages and Frameworks used to build Top Nigeria Websites.</title><link>http://www.codingsavvy.com/2017/05/programming-languages-and-frameworks.html</link><pubDate>Fri, 5 May 2017 19:07:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-6862170817902567383</guid><description>&lt;div class="bigInt"&gt;
Nigeria websites are programmed using different languages and frameworks from &lt;b&gt;Education&lt;/b&gt;, &lt;b&gt;E-commerce&lt;/b&gt;, &lt;b&gt;News&lt;/b&gt;, &lt;b&gt;Music&lt;/b&gt; &amp;amp; &lt;b&gt;Entertainment&lt;/b&gt;, &lt;b&gt;Sports Betting&lt;/b&gt; &amp;amp; &lt;b&gt;Updates &lt;/b&gt;and &lt;b&gt;Banking &lt;/b&gt;are the top &lt;b&gt;most popular websites in Nigeria&lt;/b&gt;. Some scale well but I believe scalability has to do with the code and the database structure, This are what most visited websites fail to implement which added to the bounce rate and reduce active user capacity. All this is due to the Developers and the maintenance team of the project. I have decide to take some time out and do a research on which framework / programming languages the most popular websites in Nigeria are using and how do they affect their performance and capacity. Let choose a couple of popular Websites in Nigeria we are going to be reviewing.
&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img alt="Programming Languages and Frameworks used to build Top Nigeria Websites" class="sri" data-original="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZvsbfpHbbkk-UvXrTrFc3xSU8NcQhXf9a4WkCqI7aPeuytgv8VKkQi_4PYELlLd-Ub3ZCb_A9Tvg9KuCoj4UJt49b_tFs-KYOoIOGKstgBJsRQBz0OA25u3eBBIPmyWTwB_FPC5mDa3CJ/s1600/programming-nigeria.png" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh41n78HAATICLIIr3NxMsCEegmPXAd2WZhz83QP_hHWEpwdy7Rr1KA-WuQElgd2iFTCMo71APbxi1QbgPs2Jj_fjytGWRhBZSLEo863icOISMbRFJvqojXLWB83jyMuYnIHnTG6JqSRFIx/s1600/9080607321ab98fa3e70dd24b2513a20.gif" /&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;Considering the recent attacks on many Nigeria portals and creation of fake web portals, Most attacks happens when web server are brought to their knees by massive users, Some site will just stop responding to users requests. After looking at the statistics of this report shows that most traffic ready portals in Nigeria includes &lt;b&gt;JAMB&lt;/b&gt;, &lt;b&gt;NYSC&lt;/b&gt; e.t.c.
Kudos to &lt;b&gt;bet9ja&lt;/b&gt; for using &lt;b&gt;ASP .NET&lt;/b&gt; for their website, That has brought lot of growth to the company, That is the reason why they are able handle huge traffic and their site load faster. This is the major reason why their daily pageview is outstanding. 
&lt;br /&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Websites&lt;/th&gt;
&lt;th&gt;Popularity / Unique Visitors. month&lt;/th&gt;
&lt;th&gt;Front-End (Client Side)&lt;/th&gt;
&lt;th&gt;Back-End (Server Side)&lt;/th&gt;
&lt;th&gt;Database&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://bet9ja.com/" rel="nofollow" target="_blank"&gt;bet9ja.com&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;2,057,220&lt;/td&gt;
&lt;td&gt;Javascript&lt;/td&gt;
&lt;td&gt;ASP .NET Framework&lt;/td&gt;
&lt;td&gt;MSSQL&lt;/td&gt;
&lt;td&gt;Sport Betting website&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://naij.com/" rel="nofollow" target="_blank"&gt;Naij.com&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;1,592,841&lt;/td&gt;
&lt;td&gt;Javascript&lt;/td&gt;&lt;td&gt;PHP&lt;/td&gt;&lt;td&gt;MySQL&lt;/td&gt;&lt;td&gt;News Portal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://jumia.com.ng/" rel="nofollow" target="_blank"&gt;Jumia.com.ng&lt;/a&gt;&lt;/td&gt;&lt;td&gt;371,813&lt;/td&gt;&lt;td&gt;Javascript&lt;/td&gt;&lt;td&gt;Nodejs&lt;/td&gt;&lt;td&gt;MySQL&lt;/td&gt;&lt;td&gt;Online Shopping Mall&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://nairaland.com/" rel="nofollow" target="_blank"&gt;Nairaland.com&lt;/a&gt;&lt;/td&gt;&lt;td&gt;589,095&lt;/td&gt;&lt;td&gt;Javascript&lt;/td&gt;&lt;td&gt;PHP&lt;/td&gt;&lt;td&gt;MySQL&lt;/td&gt;&lt;td&gt;Online Forum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://vanguardngr.com/" rel="nofollow" target="_blank"&gt;Vanguardngr.com&lt;/a&gt;&lt;/td&gt;&lt;td&gt;515,110&lt;/td&gt;&lt;td&gt;JavaScript&lt;/td&gt;&lt;td&gt;PHP / JavaScript (NodeJs) ( Wordpress )&lt;/td&gt;&lt;td&gt;MySQL&lt;/td&gt;&lt;td&gt;News Portal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://lindaikejisblog.com/" rel="nofollow" target="_blank"&gt;Lindaikejisblog.com&lt;/a&gt;&lt;/td&gt;&lt;td&gt;336,366&lt;/td&gt;&lt;td&gt;JavaScript&lt;/td&gt;&lt;td&gt;Java&lt;/td&gt;&lt;td&gt;BigData&lt;/td&gt;&lt;td&gt;News Blog&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://punchng.com/" rel="nofollow" target="_blank"&gt;Punchng.com&lt;/a&gt;&lt;/td&gt;&lt;td&gt;300,894&lt;/td&gt;&lt;td&gt;JavaScript&lt;/td&gt;&lt;td&gt;PHP&lt;/td&gt;&lt;td&gt;MySQL&lt;/td&gt;&lt;td&gt;News Website&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://naijaloaded.com.ng/" rel="nofollow" target="_blank"&gt;Naijaloaded.com.ng&lt;/a&gt;&lt;/td&gt;&lt;td&gt;137,147&lt;/td&gt;&lt;td&gt;JavaScript&lt;/td&gt;&lt;td&gt;PHP / JavaScript (NodeJs) ( Wordpress )&lt;/td&gt;&lt;td&gt;MySQL&lt;/td&gt;&lt;td&gt;News / Entertainment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://jamb.org.ng/" rel="nofollow" target="_blank"&gt;Jamb.org.ng&lt;/a&gt;&lt;/td&gt;&lt;td&gt;77,718&lt;/td&gt;&lt;td&gt;JavaScript&lt;/td&gt;&lt;td&gt;ASP .NET Framework&lt;/td&gt;&lt;td&gt;MSSQL&lt;/td&gt;&lt;td&gt;Government / Education&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://nysc.org.ng/" rel="nofollow" target="_blank"&gt;Nysc.org.ng&lt;/a&gt;&lt;/td&gt;&lt;td&gt;40,238&lt;/td&gt;&lt;td&gt;JavaScript&lt;/td&gt;&lt;td&gt;ASP .NET Framework&lt;/td&gt;&lt;td&gt;MSSQL&lt;/td&gt;&lt;td&gt;Government / Education&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://konga.com/" rel="nofollow" target="_blank"&gt;Konga.com&lt;/a&gt;&lt;/td&gt;&lt;td&gt;110,736&lt;/td&gt;&lt;td&gt;JavaScript&lt;/td&gt;&lt;td&gt;PHP , JavaScript  (Node.js)&lt;/td&gt;&lt;td&gt;MySQL&lt;/td&gt;&lt;td&gt;Online Shopping Mall&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://gtbank.com/" rel="nofollow" target="_blank"&gt;Gtbank.com&lt;/a&gt;&lt;/td&gt;&lt;td&gt;115,311&lt;/td&gt;&lt;td&gt;JavaScript&lt;/td&gt;&lt;td&gt;PHP / ASP .NET Framework&lt;/td&gt;&lt;td&gt;MSSQL / Oracle DB&lt;/td&gt;&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
It not a surprise that Nigerians love to bet and read News. If you have any website you will like to be added to the list you can drop it in the comments.
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh41n78HAATICLIIr3NxMsCEegmPXAd2WZhz83QP_hHWEpwdy7Rr1KA-WuQElgd2iFTCMo71APbxi1QbgPs2Jj_fjytGWRhBZSLEo863icOISMbRFJvqojXLWB83jyMuYnIHnTG6JqSRFIx/s72-c/9080607321ab98fa3e70dd24b2513a20.gif" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author><enclosure length="-1" type="application/octet-stream" url="http://gtbank.com/"/></item><item><title>Programming Languages and Frameworks Nigeria Programmers Should Learn in 2017</title><link>http://www.codingsavvy.com/2016/12/programming-languages-and-frameworks.html</link><category>Technology</category><pubDate>Fri, 23 Dec 2016 13:27:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-6780139846836578644</guid><description>&lt;div class="bigInt"&gt;
The web and &lt;strong&gt;Software Development&lt;/strong&gt; industry is growing fast at an unpredictable rate, &lt;strong&gt;Nigerian Programmers&lt;/strong&gt; need to relentlessly be marching forward each day. Lots of popular Programming Languages, Frameworks and Tools were released in &lt;strong&gt;2016&lt;/strong&gt;  which gives us more power and change the way we work.
It is difficult to keep track of everything that is new, so I decided to give you my take on what is important and what you should learn during the next twelve months of &lt;strong&gt;2017&lt;/strong&gt;.
So am going to be talking about the &lt;strong&gt;Trends&lt;/strong&gt;, &lt;strong&gt;Frontend&lt;/strong&gt;, &lt;strong&gt;Backend&lt;/strong&gt;, &lt;strong&gt;Tools&lt;/strong&gt;, &lt;strong&gt;Databases&lt;/strong&gt; and &lt;strong&gt;Tech&lt;/strong&gt;.
&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img alt="Programming Languages and Frameworks Nigeria Programmers Should Learn in 2017" class="sri" data-original="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhigt34yYMxI0juwXyIlUrma-QiCPJ8ZYKIo1V5kkjZdLjqD0phrcwGVKcul79_MKFBn4arPy_UOGqOrtqvRE3WxtcBZdjqDvW0ZlCaS_aWE0g6xi3H6SiOCQvqqOdcoOsti7pkLHaqjNzT/s1600/nigeria-2017.png" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh41n78HAATICLIIr3NxMsCEegmPXAd2WZhz83QP_hHWEpwdy7Rr1KA-WuQElgd2iFTCMo71APbxi1QbgPs2Jj_fjytGWRhBZSLEo863icOISMbRFJvqojXLWB83jyMuYnIHnTG6JqSRFIx/s1600/9080607321ab98fa3e70dd24b2513a20.gif" /&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;h2&gt;
The Trends&lt;/h2&gt;
2016 Top Tech Trends includes the &lt;strong&gt;The Progressive Web App&lt;/strong&gt; Concept, &lt;strong&gt;The Bots&lt;/strong&gt;, &lt;strong&gt;The Cloud&lt;/strong&gt; and &lt;strong&gt;Frontend Frameworks&lt;/strong&gt;. 
&lt;br /&gt;
&lt;h3&gt;
Progressive Web Apps (PWA)&lt;/h3&gt;
In 2016 we saw the rise of the &lt;strong&gt;&lt;a href="https://developers.google.com/web/progressive-web-apps/" rel="nofollow" target="_blank"&gt;Progressive Web App concept&lt;/a&gt;&lt;/strong&gt;. It represents web applications that works &lt;strong&gt;Supports all Browsers&lt;/strong&gt;, &lt;strong&gt;&lt;a target="_blank" href="http://www.codingsavvy.com/2016/01/how-to-design-mobile-responsive-web.html"&gt;Responsive&lt;/a&gt; &lt;/strong&gt; to support most popular screen sizes(desktop, mobile, tablet, or whatever is next),&lt;strong&gt;Safe and Secure&lt;/strong&gt; to use with the help of &lt;strong&gt;&lt;a href="https://en.wikipedia.org/wiki/HTTPS" target="_blank"&gt;HTTPS&lt;/a&gt;&lt;/strong&gt; to prevent snooping and to ensure content hasn't been tampered with, User friendly URL e.t.c. They can be added to your smartphone homescreen and can even send &lt;strong&gt;&lt;a href="https://developers.google.com/web/updates/2015/03/push-notifications-on-the-open-web" target="_blank"&gt;Push Notifications&lt;/a&gt;&lt;/strong&gt;, bridging the gap with &lt;strong&gt;Native Mobile Apps&lt;/strong&gt;. I think that in 2017 Progressive Web Apps are going to become even more important and are well worth investigating. Luckily &lt;strong&gt;&lt;a href="http://konga.com" rel="nofollow" target="_blank"&gt;Konga&lt;/a&gt; a Nigerian Ecommerce Company&lt;/strong&gt; has started moving towards &lt;strong&gt;PWA&lt;/strong&gt;.
&lt;br /&gt;
&lt;h3&gt;
The Bot Hype&lt;/h3&gt;
Everybody is talking about bots right now. A chatbot is a service or tool that you can communicate with via text messages. The chatbot understands what you are trying to say and replies with a coherent, relevant message or directly completes the desired task for you. . Bots are the new mobile apps, and if you hurry up you can catch the wave while everyone is excited. Modern chatbots do not rely solely on text, and will often show useful cards, images, links, and forms, providing an app-like experience. Once the novelty wears off, bots will probably be relegated to some boring role such as automated customer support. But hey, we can dream!
&lt;br /&gt;
&lt;h3&gt;
Consolidation of Frontend Frameworks&lt;/h3&gt;
In the &lt;strong&gt;JavaScript community&lt;/strong&gt; we have an incredible churn of frameworks and tools, with new ones being born almost every week. Until recently, the expectation was that the old tools would just be replaced by the new, but this is not what we saw in 2016. Instead, we saw the popular frameworks exchanging ideas and incorporating the innovations put forth by newcomers. So in 2017 it won’t matter much which of the major JS frameworks you choose, their features are mostly comparable.
&lt;br /&gt;
&lt;h3&gt;
The Cloud&lt;/h3&gt;
Companies and developers everywhere are embracing &lt;strong&gt;the cloud&lt;/strong&gt;. This is virtualized computer know as &lt;strong&gt; &lt;a target="_blank" href="http://www.codingsavvy.com/2016/05/amazon-aws-ec2-elastic-cloud-setup-with.html" target="_blank"&gt;Virtual Private Server(VPS)&lt;/a&gt;&lt;/strong&gt;, It is an infrastructure that is available on demand and fully configurable from a control panel. The most popular cloud companies on the web are &lt;strong&gt;&lt;a href="https://aws.amazon.com/" rel="nofollow" target="_blank"&gt;Amazon Web Service&lt;/a&gt;&lt;/strong&gt; popularly known as &lt;strong&gt;AWS&lt;/strong&gt;, &lt;strong&gt;&lt;a href="https://cloud.google.com/" rel="nofollow" target="_blank"&gt;Google Cloud&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href="https://azure.microsoft.com/" rel="nofollow" target="_blank"&gt;Microsoft Azure&lt;/a&gt;&lt;/strong&gt;. Thanks to their ongoing competition prices have been falling, bringing it within the budgets of smaller companies and individual developers. Familiarizing yourself with the cloud workflow would be a good investment for 2017.
&lt;br /&gt;
&lt;h3&gt;
Machine Learning (ML)&lt;/h3&gt;
&lt;strong&gt;Machine Learning (ML)&lt;/strong&gt; has exploded in popularity during the last twelve months. And with the historic AlphaGo vs Lee Sedol match in March, it entered the mainstream. 
It’s been almost 20 years since &lt;strong&gt;&lt;a href="https://www.technologyreview.com/s/541276/deep-learning-machine-teaches-itself-chess-in-72-hours-plays-at-international-master/" rel="nofollow" target="_blank"&gt;IBM’s Deep Blue supercomputer&lt;/a&gt;&lt;/strong&gt; beat the reigning world chess champion, Gary Kasparov, for the first time under standard tournament rules.  Since then, chess-playing computers have become significantly stronger, leaving the best humans little chance even against a modern chess engine running on a smartphone.
Smart computer systems that learn from raw data are revolutionizing the way we interact with our mobile devices. By the looks of it, ML will be an even bigger factor in 2017.&lt;br /&gt;
&lt;h2&gt;
The Techs&lt;/h2&gt;
The &lt;strong&gt;cloud&lt;/strong&gt; has won over the entire software industry, with large companies closing down their datacenters and moving their entire infrastructure there. The three main platforms are AWS, Google Cloud and Azure. All three have powerful, ever expanding feature sets, including virtual machines, hosted databases, machine learning services and more. Prices are going down rapidly, and the cloud is within reach of small companies and individual developers. For 2017, it would be a good learning experience to deploy a side project to one of these providers.
&lt;br /&gt;
&lt;strong&gt;Artificial Intelligence&lt;/strong&gt; was the buzzword of 2016. Speech recognition and image recognition and classification are only two of the user facing applications of the technology, with machines reaching and even surpassing human level performance. AI has been used to make &lt;strong&gt;Facebook&lt;/strong&gt; recognize your friends faces automatically when you upload pictures and There are a lot of new startups that apply AI and &lt;strong&gt;Machine Learning&lt;/strong&gt; to new domains. And a lot of open source projects were released like &lt;strong&gt;&lt;a href="https://www.tensorflow.org/" rel="nofollow" target="_bank"&gt;Google’s Tensor Flow&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href="https://www.microsoft.com/en-us/research/product/cognitive-toolkit/" rel="nofollow" target="_bank"&gt;Microsoft’s Cognitive Toolkit&lt;/a&gt;&lt;/strong&gt;. Machine Learning is a very math-heavy topic, and for those just starting out there are comprehensive online courses available.
&lt;br /&gt;
&lt;strong&gt;Virtual Reality (VR)&lt;/strong&gt; and &lt;strong&gt;Augmented Reality (AR)&lt;/strong&gt; have been around for a while, but finally the technology is mature enough to offer a compelling experience. &lt;strong&gt;&lt;a href="https://web.facebook.com/oculusvr/" rel="nofollow" target="_bank"&gt;Facebook (Oculus Rift)&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a href="https://vr.google.com/daydream/" rel="nofollow" target="_bank"&gt;Google (Daydream)&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href="https://developer.microsoft.com/en-us/windows/holographic" rel="nofollow" target="_bank"&gt;Microsoft (Windows Holographic)&lt;/a&gt;&lt;/strong&gt; all have virtual reality platforms that welcome third party developers. VR headsets still face challenges like eliminating nausea and offering compelling use cases outside of gaming, but they are getting there.
&lt;br /&gt;
Learn one of these: Cloud deployment, a Machine Learning library, VR Development.


&lt;br /&gt;
&lt;h2&gt;
Languages&lt;/h2&gt;
In 2016 we witness the domination of powerful programming languages that make work easy for programmers, Node.Js really gain much recognition in the year, With powerful tools like &lt;strong&gt;&lt;a href="http://gulpjs.com/" rel="nofollow" target="_blank"&gt;Gulp&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a href="http://gruntjs.com/" rel="nofollow" target="_blank"&gt;Grunt&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href="http://socket.io/" rel="nofollow" target="_blank"&gt;Socket.io&lt;/a&gt;&lt;/strong&gt; there are endless things you can achieve with such flexibility and project flow. Which is why JavaScript is at the top of the list.We have some already &lt;strong&gt;excellent languages&lt;/strong&gt; on the list.
&lt;br /&gt;
&lt;h3&gt;
JavaScript&lt;/h3&gt;
&lt;strong&gt;JavaScript&lt;/strong&gt; continues its incredible pace of innovation. Catalyzed by the quick release schedules of web browsers, the JS standard is updated every year. The next edition, &lt;strong&gt;ES2017&lt;/strong&gt;, is expected to be finalized in mid 2017. It will bring the dream feature of many JS developers – &lt;i&gt;аsync/аwait&lt;/i&gt; for working with asynchronous functions. And thanks to &lt;strong&gt;&lt;a rel="nofollow" target="_blank" href="https://babeljs.io/"&gt;Babel&lt;/a&gt;&lt;/strong&gt;, you can write &lt;strong&gt;ES2017&lt;/strong&gt; in every browser even today.
&lt;br /&gt;
&lt;h3&gt;
TypeScript&lt;/h3&gt;
&lt;strong&gt;&lt;a href="https://www.typescriptlang.org/" rel="nofollow" target="_blank"&gt;TypeScript&lt;/a&gt;&lt;/strong&gt; 2.1 was released in late 2016, as it tagline says &lt;i&gt;"JavaScript that scales"&lt;/i&gt;. Typescript is a strong tools for large apps  bringing &lt;i&gt;async/await&lt;/i&gt; for old browsers and improved type inference. TypeScript is a statically typed language which &lt;strong&gt;compiles to JavaScript&lt;/strong&gt;. It adds powerful features like a &lt;strong&gt;classic OOP model&lt;/strong&gt; and optional static typing to make large codebases easier to maintain. It is the preferred language for writing Angular 2 apps, and we recommend giving it a try. Here is our quick start guide about it.
&lt;br /&gt;
&lt;h3&gt;
C# 7.0&lt;/h3&gt;
&lt;strong&gt;C# 7.0 &lt;/strong&gt;is expected in 2017 and will enhance an already excellent language. C# 7.0 adds a number of new features and brings a focus on data consumption, code simplification and performance. &lt;strong&gt;Microsoft&lt;/strong&gt; surprised everyone when they introduced the open source &lt;strong&gt;&lt;a href="https://code.visualstudio.com/" rel="nofollow" target="_blank"&gt;Visual Studio Code editor&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href="https://github.com/Microsoft/dotnet" rel="nofollow" target="_blank"&gt;.Net Core&lt;/a&gt;&lt;/strong&gt;. Both of these run on Linux, Windows and macOS and allow you to write &lt;strong&gt;faster and efficient applications in C#&lt;/strong&gt;.
&lt;br /&gt;
&lt;h3&gt;
Python 3.6&lt;/h3&gt;
&lt;strong&gt;Python 3.6&lt;/strong&gt; was released in December. It is bundled with major improvement on Windows, Security and CPython implementation plus and upgrade in it standard libraries. It is solidifying its place as the scripting language of choice for devs, IT pros and scientists. It is suitable for automation, web development, machine learning and scientific computing. The Python 2/3 split has been an years-long struggle for the community, but these days you can confidently choose 3 and enjoy full library support. For those in need of extra performance, they can take a look at &lt;strong&gt;&lt;a href="http://pypy.org/" rel="nofollow" target="_blank"&gt;PyPy&lt;/a&gt;&lt;/strong&gt;, an alternative JIT enabled Python runtime.
&lt;br /&gt;
&lt;h3&gt;
Ruby 2.3&lt;/h3&gt;
&lt;strong&gt;&lt;a href="https://www.ruby-lang.org/en/news/2015/12/25/ruby-2-3-0-released/" rel="nofollow" target="_blank"&gt;Ruby 2.3&lt;/a&gt;&lt;/strong&gt; was released earlier this year with a number of performance improvements. This is the first stable release of the Ruby 2.3 series. It introduces many new features. Ruby is also a good choice as a general purpose scripting language, but it shines when paired with Rails. The Ruby 3×3 initiative was announced, which will attempt to make the upcoming Ruby 3 release 3 times faster that the current version, opening the doors to using Ruby in more contexts.
&lt;br /&gt;
&lt;h3&gt;
PHP 7.1&lt;/h3&gt;
&lt;strong&gt;&lt;a target="_blank" href="http://www.codingsavvy.com/2016/03/whats-new-in-php7-how-dose-it-compares.html"&gt;PHP 7.1&lt;/a&gt;&lt;/strong&gt; was released in December, and brings minor enhancements to the language such as &lt;em&gt;Nullable types&lt;/em&gt;, &lt;em&gt;Square bracket syntax for array destructuring assignment&lt;/em&gt; , &lt;em&gt;Class Constant Visibility&lt;/em&gt; e.t.c. This builds upon the major performance improvements that were had in version 7.0 last year, turning PHP into a fast platform for building web applications. We recommend PHP The Right Way for good practices and a modern take on building web apps in the language.
&lt;br /&gt;
&lt;h3&gt;
Java 9&lt;/h3&gt;
&lt;strong&gt;Java 9&lt;/strong&gt; is expected in 2017 and will come with welcome new features like a repl for evaluating code, HTTP 2.0 support and new APIs.The official HTTP 2.0 RFC was approved just a few months ago, building on top of Google’s SPDY algorithm. SPDY has already shown great speed improvements over HTTP 1.1 ranging between 11.81% to 47.7% and its implementation already exists in most modern browsers.Java 9 will have &lt;strong&gt;&lt;a href="http://openjdk.java.net/jeps/110" rel="nofollow" target="_blank"&gt;full support for HTTP 2.0&lt;/a&gt;&lt;/strong&gt; and feature a new HTTP client for Java that will replace HttpURLConnection, and also implement HTTP 2.0 and websockets. There is a strong demand for talented Java developers and a breadth of exciting projects that use the language. If Java is not your thing, there are a number of &lt;strong&gt;&lt;a rel="nofollow" target=""_blank" href="https://en.wikipedia.org/wiki/Java_virtual_machine"&gt;JVM&lt;/a&gt;&lt;/strong&gt; based languages like &lt;strong&gt;&lt;a href="https://kotlinlang.org/" rel="nofollow" target="_blank"&gt;Kotlin&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href="https://www.scala-lang.org/" rel="nofollow" target="_blank"&gt;Scala&lt;/a&gt;&lt;/strong&gt; that you can check out. &lt;strong&gt;&lt;a href="https://twitter.com/" rel="nofollow" target="_blank"&gt;Twitter&lt;/a&gt;&lt;/strong&gt; has started transiting into &lt;strong&gt;Scala&lt;/strong&gt;.
&lt;br /&gt;
&lt;h3&gt;
Swift 3&lt;/h3&gt;
&lt;strong&gt;Swift 3&lt;/strong&gt; was released earlier this year. This is Apple’s vision for a modern programming language that eases the development of apps on iOS and macOS. The biggest update in Swift 3 involves the standard library adopting consistent naming conventions across libraries. Swift is open source and has attracted a large community. Version 4 is planned for 2017, which will improve the language and introduce server APIs, making it a good choice for writing web apps and backends.
The API Design &lt;strong&gt;&lt;a href="https://swift.org/documentation/api-design-guidelines/" rel="nofollow" target="_blank"&gt;Guidelines&lt;/a&gt;&lt;/strong&gt; contain the rules that the team settled on as they were building Swift 3, which place a high value on readability and accessibility to new programmers.
&lt;br /&gt;
If you are looking for something more exciting, you can try out &lt;strong&gt;&lt;a href="https://crystal-lang.org/" rel="nofollow" target="_blank"&gt;Crystal&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href="http://elixir-lang.org/" rel="nofollow" target="_blank"&gt;Elixir&lt;/a&gt;&lt;/strong&gt;, which both combine a friendly ruby-like syntax with superior performance. Or you can look into a functional language like &lt;strong&gt;&lt;a href="https://www.haskell.org/" rel="nofollow" target="_blank"&gt;Haskell&lt;/a&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;a href="https://clojure.org/" rel="nofollow" target="_blank"&gt;Clojure&lt;/a&gt;&lt;/strong&gt;. Two other fast languages are Rust and Go which we recommend.
&lt;br /&gt;
Learn one or more of these: &lt;strong&gt;JS (ES2017)&lt;/strong&gt;, &lt;strong&gt;TypeScript&lt;/strong&gt;, &lt;strong&gt;C#&lt;/strong&gt;, &lt;strong&gt;Python&lt;/strong&gt;, &lt;strong&gt;Ruby&lt;/strong&gt;, &lt;strong&gt;PHP7&lt;/strong&gt;, &lt;strong&gt;Java/Kotlin/Scala&lt;/strong&gt;.



&lt;br /&gt;
&lt;h2&gt;
Databases&lt;/h2&gt;
In 2016 scaleable database are what big tech companies are after,I personally have tried MongoDb in as lot of applications with scalabiliy issues and it worked fine, It has Simplified data governance with document validation, coupled with GUI-based schema discovery and visualization, We have also seen how such database can be used to &lt;strong&gt;&lt;a target="_blank" href="http://www.codingsavvy.com/2016/08/how-to-use-database-mongodb-as-session.html"&gt;manage session in PHP&lt;/a&gt;&lt;/strong&gt;. 
&lt;h3&gt;MongoDb 3.2&lt;/h3&gt;
MongoDB 3.2 is a gian &lt;strong&gt;&lt;a rel="nofolow" target="_bank" href="https://docs.mongodb.com/v3.2/release-notes/"&gt;release&lt;/a&gt;&lt;/strong&gt; in Early November. MongoDB is an open-source document database and the leading NoSQL database. MongoDB was developed by the company &lt;em&gt;10gen (now called MongoDB Inc) in October 2007&lt;/em&gt;. MongoDB has been used by many high-trafficked highly-scalable websites such as &lt;strong&gt;&lt;a rel="nofolow" target="_bank" href="http://www.craigslist.org"&gt;Craigslist&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a target="_blank" rel="nofollow" href="http://ebay.com"&gt;eBay&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a target="_blank" rel="nofollow" href="https://foursquare.com/"&gt;Foursquare&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a rel="nofolow" target="_bank" href="https://sourceforge.net/"&gt;SourceForge&lt;/a&gt;&lt;/strong&gt;.
MongoDB 3.2 is a giant leap forward that helps organizations standardize on a single, modern database for their new, mission-critical applications.MongoDb 3.2 was shipped with new pluggable storage engines optimized for in-memory computing and the most security-sensitive applications, Faster business insight with enhanced real-time analytics and search, coupled with seamless connectivity to industry-standard SQL-based BI tools for sophisticated data exploration. 
&lt;h3&gt;
PostgreSQL&lt;/h3&gt;
&lt;strong&gt;PostgreSQL&lt;/strong&gt; saw two whole releases this year – 9.5 and 9.6. They brought the long awaited UPSERT functionality that we know from MySQL (aka ON DUPLICATE KEY UPDATE), better full text search and speed improvements thanks to parallel queries, more efficient replication, aggregation, indexing and sorting. Postgres is used for massive, terabyte scale datasets, as well as for busy web apps, and these optimizations are welcome.
&lt;br /&gt;
&lt;h3&gt;
MySQL 8.0&lt;/h3&gt;
&lt;strong&gt;MySQL 8.0&lt;/strong&gt; is going to be the next major release of the database. It is expected sometime in 2017 and it will bring a lot of improvements to the system. MySQL is still the most popular database management system and the entire industry benefits from these new releases.
&lt;br /&gt;
For &lt;strong&gt;NoSQL&lt;/strong&gt; fans, we can recommend &lt;strong&gt;CouchDB&lt;/strong&gt;. It is a fast and scalable JSON storage system which exposes a REST-ful HTTP API. The database is easy to use and offers great performance. &lt;strong&gt;PouchDB&lt;/strong&gt; is a spiritual counterpart to CouchDB that works entirely in the browser and can sync with Couch. This allows you to use Pouch in an offline ready web app, and get automatic syncing once internet connectivity is available.
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Redis&lt;/h3&gt;
&lt;strong&gt;Redis&lt;/strong&gt; is developers favorite key value store. It is small, fast and versatile. You can use it as a smart memcache alternative, as a NoSQL data store or a process messaging and synchronization channel. It offers a large number of data structures to choose from, and the upcoming 4.0 release will have a module system and improved replication.
&lt;br /&gt;
&lt;br /&gt;
Learn one of these: &lt;strong&gt;MongoDb&lt;/strong&gt;, &lt;strong&gt;Postgres&lt;/strong&gt;, &lt;strong&gt;MySQL&lt;/strong&gt;, &lt;strong&gt;CouchDB&lt;/strong&gt;, &lt;strong&gt;Redis&lt;/strong&gt;.

&lt;br /&gt;
&lt;h2&gt;
Frontend&lt;/h2&gt;
The web platform made two major advancements recently – Web Assembly and Service Workers. They open the gates for fast and performant web applications that bridge the gap with native compiled applications. Service Workers in particular are the enabling technology for Progressive Web Apps and bring support for Notifications to the web platform, with more APIs to follow in the future.
&lt;br /&gt;
&lt;h3&gt;
Angular.js&lt;/h3&gt;
&lt;strong&gt;&lt;a rel="nofollow" target="_blank" href="http://angular.io"&gt;Angular.js&lt;/a&gt;&lt;/strong&gt; 2 was released this year. The framework is backed by Google and is very popular with enterprises and large companies. It has a vast number of features that make writing everything from web to desktop and mobile apps possible. The framework is written in TypeScript, which is also the recommended language to write applications in. There is a lot to read about, but we think learning Angular 2 in 2017 would be a good investment.
&lt;br /&gt;
&lt;h3&gt;
Vue.js&lt;/h3&gt;
Vue.js also saw its &lt;a rel="nofollow" target="_blank" href="https://medium.com/the-vue-point/vue-2-0-is-here-ef1f26acf4b8"&gt;2.0 release&lt;/a&gt; this year. It borrows the good ideas from Angular, React and Ember, and puts them into an easy to use package. It is also quite a bit leaner and faster than the first two. We suggest that you give it a try this year, by starting with one of our Vue.js tutorials.
&lt;br /&gt;
&lt;h3&gt;
Ember&lt;/h3&gt;
&lt;strong&gt;&lt;a rel="nofollow" target="_blank" href="http://emberjs.com/"&gt;Ember&lt;/a&gt;&lt;/strong&gt; is another solid choice for a JavaScript framework. It supports data bindings, auto-updating templates, components and server-side rendering. One benefit that it has over its competitors, is that it is more mature and stable. Breaking changes are much less frequent and the community values backwards compatibility. This makes the framework a good choice for long-lived applications.
&lt;br /&gt;
Two other frameworks that are worth a look are &lt;strong&gt;&lt;a rel="nofollow" target="_blank" href="http://aurelia.io/"&gt;Aurelia&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a rel="nofollow" target="_blank" href="https://facebook.github.io/react/"&gt;React&lt;/a&gt;&lt;/strong&gt;. The ecosystem around React has grown considerably more complicated in the last year, making it difficult to recommend for beginners. But experienced devs can combine the library with &lt;strong&gt;&lt;a rel="nofollow" target="_blank" href="http://graphql.org/"&gt;GraphQL&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a rel="nofollow" target="_blank" href="https://facebook.github.io/relay/"&gt;Relay&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a rel="nofollow" target="_blank" href="http://facebook.github.io/flux/"&gt;Flux&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a rel="nofollow" target="_blank" href="http://facebook.github.io/immutable-js/"&gt;Immutable.js&lt;/a&gt;&lt;/strong&gt; into a comprehensive full stack solution.
&lt;br /&gt;
No frontend compilation would be complete without mentioning &lt;strong&gt;&lt;a rel="nofollow" target="_blank" href="http://getbootstrap.com/"&gt;Bootstrap&lt;/a&gt;&lt;/strong&gt;. Version 4 is currently in Alpha and a release is expected in 2017. Notable changes are the new versatile card component and the flexbox grid (see our comparison with the regular grid here), which modernize the framework and make it a joy to work with.
&lt;br /&gt;
&lt;strong&gt;&lt;a rel="nofollow" target="_blank" href="http://sass-lang.com/"&gt;SASS&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a rel="nofollow" target="_blank" href="http://lesscss.org/"&gt;LESS&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a rel="nofollow" target="_blank" href="http://stylus-lang.com/"&gt;Stylus&lt;/a&gt;&lt;/strong&gt; remain the three most popular &lt;strong&gt;CSS preprocessors&lt;/strong&gt; today. Although vanilla CSS is finally getting support for variables, SASS and LESS are still superior with their support for mixins, functions and code organization. If you haven’t already, take a look at our SASS and LESS quick start guides.
&lt;br /&gt;
Learn one or more of these: Angular 2, Vue.js, Ember, Bootstrap, LESS/SASS.


&lt;br /&gt;
&lt;h2&gt;
Backend&lt;/h2&gt;
There is plenty of choice for the backend, all coming down to your preference of a programming language or specific performance needs. An ongoing trend in web development is business logic to move away from the backend, turning that layer into an API which is consumed by the frontend and mobile apps. But a full stack framework is often simpler and faster to develop in, and is still a valid choice for a lot of web apps.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Node.js&lt;/h3&gt;
&lt;strong&gt;&lt;a rel="nofollow" target="_blank" href="http://nodejs.org/"&gt;Node.js&lt;/a&gt;&lt;/strong&gt; is the primary way for running JS outside the browser. It saw many new releases this year, which increased performance and added coverage for the entire ES6 spec. Node has frameworks for building fast APIs, servers, desktop apps and even robots, and a vast community creating every kind of module imaginable. Some frameworks that you may like to look into: Express, Koa, Next, Nodal.
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
PHP&lt;/h3&gt;
&lt;strong&gt;PHP&lt;/strong&gt; is a web language first and foremost, and has a large number of web frameworks to choose from. Thanks to its excellent documentation and features, Laravel has formed an active community. Zend Framework released version 3, which marks a great upgrade for this business oriented framework. Symfony also saw a lot of new releases this year, making it an even better choice as a full stack solution.
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Ruby&lt;/h3&gt;
For Ruby, the Rails framework is the premier choice. Version 5.0 was released in 2016, bringing support for Web Sockets, API mode and more. Sinatra is also a good choice for small apps, with version 2.0 expected sometime in 2017.
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Python&lt;/h3&gt;
&lt;strong&gt;Python&lt;/strong&gt; has its own full stack/minimal framework combo in the form of Django and Flask. Django 1.10 was released in August introducing full text search for Postgres and an overhauled middleware layer.
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Java&lt;/h3&gt;
The &lt;strong&gt;Java&lt;/strong&gt; ecosystem also has popular web frameworks to choose from. Play and Spark are two solid choices, and as a bonus they can be used with Scala as well.
&lt;br /&gt;
For the enthusiasts there is also Phoenix, which is written in Elixir and attempts to be a feature complete alternative to Rails with superior performance. If Elixir is one of the languages you would like to learn in 2017, give Phoenix a try.
&lt;br /&gt;
Learn one of these: A full stack backend framework, a micro framework.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh41n78HAATICLIIr3NxMsCEegmPXAd2WZhz83QP_hHWEpwdy7Rr1KA-WuQElgd2iFTCMo71APbxi1QbgPs2Jj_fjytGWRhBZSLEo863icOISMbRFJvqojXLWB83jyMuYnIHnTG6JqSRFIx/s72-c/9080607321ab98fa3e70dd24b2513a20.gif" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author></item><item><title>Interactive &amp; Animated Checkout Payment Design with Card</title><link>http://www.codingsavvy.com/2016/12/interactive-animated-checkout-payment.html</link><category>ecommerce</category><category>JavaScript</category><pubDate>Sat, 17 Dec 2016 20:23:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-4280773478800175489</guid><description>&lt;div class="bigInt"&gt;
You website &lt;strong&gt;Checkout Payment&lt;/strong&gt; Page is should be one of the most inviting pages of your website either your running a large &lt;strong&gt;&lt;a href="http://www.codingsavvy.com/search/label/ecommerce"&gt;E-Commerce Site&lt;/a&gt;&lt;/strong&gt; or &lt;strong&gt;Mini-Store&lt;/strong&gt;.
&lt;strong&gt;Card&lt;/strong&gt; is a tiny vanilla &lt;strong&gt;&lt;a href="http://www.codingsavvy.com/search/label/JavaScript"&gt;JavaScript&lt;/a&gt;&lt;/strong&gt; project (with a &lt;strong&gt;&lt;a href="http://www.codingsavvy.com/search/label/JQuery"&gt;JQuery&lt;/a&gt;&lt;/strong&gt; version) that will make your credit card forms much more fun and interactive. After a quick installation, the library will take your form and transform it into an animated CSS-only credit card that gets filled as users input their data.
With &lt;a href="https://github.com/jessepollak/card" rel="nofollow"&gt;Card.js&lt;/a&gt; and animation that will make your &lt;strong&gt;Store Payment Page&lt;/strong&gt; interactive and attractive to buyers is as easy and simple as it can get.
&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img alt="Interactive &amp;amp; Animated Checkout Payment Design with Card" class="sri" data-original="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXUM48efcVXWqClqWApxE2RfcbB8-Quxu3ocR9PqXi72xivO9mz16cXtnUqJRtI9o1p4liFBEeAXGz-RlnuRdDh7k-2BgjAkeUKAYYhUDajAlZeCi0y60x2E6C51BPUGbmyEeV8aNiHy_3/s1600/card-front.PNG" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh41n78HAATICLIIr3NxMsCEegmPXAd2WZhz83QP_hHWEpwdy7Rr1KA-WuQElgd2iFTCMo71APbxi1QbgPs2Jj_fjytGWRhBZSLEo863icOISMbRFJvqojXLWB83jyMuYnIHnTG6JqSRFIx/s1600/9080607321ab98fa3e70dd24b2513a20.gif" /&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;a href="https://app.box.com/s/4vfciftsqs2stwgw0a21wamrgym3fnyt" target="_blank"&gt;&lt;img align="absmiddle" alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6tGHhJXSAvmAyQWUzQ3RRlEuXxe-uiJfJwZ7E-glIu59TGhTIK_Fa8Q6fOddR4q6qNUyvZziAP3vGr4WFew_JLgvOcXhEyVJJCD6xv_3JmrR9J7ojSdcKvU4AV1tJSO2NVYkrjzIq1zP4/" style="cursor: pointer;" /&gt; Download Script&lt;/a&gt; &lt;a href="http://demos.codingsavvy.com/card/index.html" target="_blank"&gt;&lt;img align="absmiddle" alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6hJTwTdoChlspM4RCmC1lBewH0_gwp1-7RFBRi4s2tI74dgZjNOuTNuzI-WBfWacHQsfkL0yqrJ4QgmFRhYsrh-E2jQGBcVzGpcKEyvosqTjJUjx_yeLHNz95fDUxj35M7aKqqUQSeoYQ/" style="cursor: pointer;" /&gt; Live Demo&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;
 How to use without JQuery&lt;/h3&gt;
&lt;div class="code"&gt;
&lt;span style="color: purple;"&gt;var&lt;/span&gt; &lt;span style="color: #674ea7;"&gt;card&lt;/span&gt; = &lt;span style="color: purple;"&gt;new&lt;/span&gt; C&lt;span style="color: #e06666;"&gt;a&lt;/span&gt;&lt;span style="color: #76a5af;"&gt;r&lt;/span&gt;&lt;span style="color: #ffd966;"&gt;d&lt;/span&gt;({&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;// a selector or DOM element for the form where users will&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;// be entering their information&lt;/span&gt;&lt;br /&gt;
form: &lt;span style="color: #f6b26b;"&gt;'form'&lt;/span&gt;, &lt;span style="color: #6aa84f;"&gt;// *required*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;// a selector or DOM element for the container&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;// where you want the card to appear&lt;/span&gt;&lt;br /&gt;
container: &lt;span style="color: #f6b26b;"&gt;'.card-wrapper'&lt;/span&gt;, &lt;span style="color: #6aa84f;"&gt;// *required*&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
formSelectors: {&lt;br /&gt;
numberInput: &lt;span style="color: #f6b26b;"&gt;'input#number'&lt;/span&gt;, &lt;span style="color: #6aa84f;"&gt;// optional — default input[name="number"]&lt;/span&gt;&lt;br /&gt;
expiryInput: &lt;span style="color: #f6b26b;"&gt;'input#expiry'&lt;/span&gt;, &lt;span style="color: #6aa84f;"&gt;// optional — default input[name="expiry"]&lt;/span&gt;&lt;br /&gt;
cvcInput: &lt;span style="color: #f6b26b;"&gt;'input#cvc'&lt;/span&gt;, &lt;span style="color: #6aa84f;"&gt;// optional — default input[name="cvc"]&lt;/span&gt;&lt;br /&gt;
nameInput: &lt;span style="color: #f6b26b;"&gt;'input#name'&lt;/span&gt;&lt;span style="color: #6aa84f;"&gt; // optional - defaults input[name="name"]&lt;/span&gt;&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
width: &lt;span style="color: #e06666;"&gt;200&lt;/span&gt;, &lt;span style="color: #6aa84f;"&gt;// optional — default 350px&lt;/span&gt;&lt;br /&gt;
formatting: true, &lt;span style="color: #6aa84f;"&gt;// optional - default true&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: #6aa84f;"&gt;// Strings for translation - optional&lt;/span&gt;&lt;br /&gt;
messages: {&lt;br /&gt;
validDate: &lt;span style="color: #f6b26b;"&gt;'valid\ndate'&lt;/span&gt;, &lt;span style="color: #6aa84f;"&gt;// optional - default 'valid\nthru'&lt;/span&gt;&lt;br /&gt;
monthYear: &lt;span style="color: #f6b26b;"&gt;'mm/yyyy'&lt;/span&gt;, &lt;span style="color: #6aa84f;"&gt;// optional - default 'month/year'&lt;/span&gt;&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #38761d;"&gt;// Default placeholders for rendered fields - optional&lt;/span&gt;&lt;br /&gt;
placeholders: {&lt;br /&gt;
number: &lt;span style="color: #f6b26b;"&gt;'•••• •••• •••• ••••'&lt;/span&gt;,&lt;br /&gt;
name:&lt;span style="color: #f6b26b;"&gt; 'Full Name'&lt;/span&gt;,&lt;br /&gt;
expiry:&lt;span style="color: #f6b26b;"&gt; '••/••'&lt;/span&gt;,&lt;br /&gt;
cvc: &lt;span style="color: #f6b26b;"&gt;'•••'&lt;/span&gt;&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
masks: {&lt;br /&gt;
cardNumber: &lt;span style="color: #f6b26b;"&gt;'•'&lt;/span&gt; &lt;span style="color: #6aa84f;"&gt;// optional - mask card number&lt;/span&gt;&lt;br /&gt;
}&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;// if true, will log helpful messages for setting up Card&lt;/span&gt;&lt;br /&gt;
debug: &lt;span style="color: #c27ba0;"&gt;false&lt;/span&gt; &lt;span style="color: #6aa84f;"&gt;// optional - default false&lt;/span&gt;&lt;br /&gt;
});&lt;/div&gt;
&lt;h3&gt;
Using with Jquery&lt;/h3&gt;
&lt;div class="code"&gt;
$(&lt;span style="color: #f6b26b;"&gt;'form'&lt;/span&gt;).card({&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;// a selector or DOM element for the container&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;// where you want the card to appear&lt;/span&gt;&lt;br /&gt;
container: &lt;span style="color: #f6b26b;"&gt;'.card-wrapper'&lt;/span&gt;,&lt;span style="color: #6aa84f;"&gt; // *required*&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;// all of the other options from above&lt;/span&gt;&lt;br /&gt;
});
&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh41n78HAATICLIIr3NxMsCEegmPXAd2WZhz83QP_hHWEpwdy7Rr1KA-WuQElgd2iFTCMo71APbxi1QbgPs2Jj_fjytGWRhBZSLEo863icOISMbRFJvqojXLWB83jyMuYnIHnTG6JqSRFIx/s72-c/9080607321ab98fa3e70dd24b2513a20.gif" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author></item><item><title>How to use Database ( MongoDb ) as session Handler PHP - 2016</title><link>http://www.codingsavvy.com/2016/08/how-to-use-database-mongodb-as-session.html</link><category>MongoDb</category><category>PHP</category><pubDate>Wed, 10 Aug 2016 15:43:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-1163611211743039905</guid><description>
&lt;div class="bigInt"&gt;
By default PHP has an inbuilt session handler that stores session variable by saving  session variables into a file.
The native sessions just depend on writing a small cookie and file on the server. Database based session allows you to add security functionality to the session layer,
Any performance lose or gain by putting your sessions in a database won't be noticeable for the vast majority of applications, however it's more secure if you put your sessions in the database, that being the most developers primary reason for doing so.
 Database-based sessions are also perfect in server farm environments because a user could visit each server in the course of their visit; file-based sessions would only be valid on that one server. But we can override PHP's built-in session handlers by using &lt;i&gt; session_set_save_handler &lt;/i&gt;.
When your app gets big and you start thinking of scaling Database based session makes things easier.
MongoDB (from humongous) is a free and open-source cross-platform document-oriented database.
You can read more about MongoDB at http://www.mongodb.org.
Using MongoDb is a way of separating the session management database from the primary sever Database, It is well known that most PHP websites use MySQL as their primary database. I prefer not to let the session handler implementation affect the primary database performance.
MongoDb can also store some special data format and an Object as a whole without any data loss.
&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img alt="How to use Database ( MongoDb ) as session Handler PHP" class="sri" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh41n78HAATICLIIr3NxMsCEegmPXAd2WZhz83QP_hHWEpwdy7Rr1KA-WuQElgd2iFTCMo71APbxi1QbgPs2Jj_fjytGWRhBZSLEo863icOISMbRFJvqojXLWB83jyMuYnIHnTG6JqSRFIx/s1600/9080607321ab98fa3e70dd24b2513a20.gif" data-original="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm6sTvNkZHctEAe-EvvFu8HCvzNRsYDjDw6TKssi9mlj-GYrcLHKZyXrA5-dFWaWp_i4jDvuWRpVtCqxDaU7yD3ch5n2tv_ZXcpcSGXa2M2v8n4qKG5bWX01G58IqKwm4RW3MfC2toKaiy/s640/maxresdefault.jpg" width="640" /&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;a href="https://app.box.com/s/26s55kh7tuofd2n0t3995uag7mpi7njg" target="_blank"&gt;&lt;img align="absmiddle" alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6tGHhJXSAvmAyQWUzQ3RRlEuXxe-uiJfJwZ7E-glIu59TGhTIK_Fa8Q6fOddR4q6qNUyvZziAP3vGr4WFew_JLgvOcXhEyVJJCD6xv_3JmrR9J7ojSdcKvU4AV1tJSO2NVYkrjzIq1zP4/" style="cursor: pointer;" /&gt; Download Script&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;To properly overide the default PHP session handler we need to use &lt;i&gt;session_set_save_handler&lt;/i&gt;
. It is necessary for the costume session handler method implement &lt;i&gt;SessionHandlerInterface &lt;/i&gt; Interface so as to 
incorporate the required session handling methods like &lt;i&gt;open()&lt;/i&gt; , &lt;i&gt;close()&lt;/i&gt;,&lt;i&gt;read()&lt;/i&gt;,&lt;i&gt;write()&lt;/i&gt;,&lt;i&gt;destroy()&lt;/i&gt; and finally the garbage collection method &lt;i&gt;gc()&lt;/i&gt; these methods are useful to complete our session handler class.
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #674ea7;"&gt;session_set_save_handler&lt;/span&gt;(&lt;span style="color: #e69138;"&gt;$this&lt;/span&gt;,&lt;span style="color: #3d85c6;"&gt; true&lt;/span&gt;);&lt;br /&gt;
&lt;span style="color: #674ea7;"&gt;&amp;nbsp;session_set_save_handler&lt;/span&gt;(&lt;span style="color: #3d85c6;"&gt;array&lt;/span&gt;&lt;span style="color: #e69138;"&gt;($this, &lt;/span&gt;&lt;span style="color: #6aa84f;"&gt;'open'&lt;/span&gt;&lt;span style="color: #e69138;"&gt;),&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;array&lt;/span&gt;&lt;span style="color: #e69138;"&gt;($this, &lt;/span&gt;&lt;span style="color: #6aa84f;"&gt;'close'&lt;/span&gt;&lt;span style="color: #e69138;"&gt;),&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;array&lt;/span&gt;&lt;span style="color: #e69138;"&gt;($this, &lt;/span&gt;&lt;span style="color: #6aa84f;"&gt;'read'&lt;/span&gt;&lt;span style="color: #e69138;"&gt;),&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;array&lt;/span&gt;&lt;span style="color: #e69138;"&gt;($this, &lt;/span&gt;&lt;span style="color: #6aa84f;"&gt;'write'&lt;/span&gt;&lt;span style="color: #e69138;"&gt;),&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;array&lt;/span&gt;&lt;span style="color: #e69138;"&gt;($this, &lt;/span&gt;&lt;span style="color: #6aa84f;"&gt;'destroy'&lt;/span&gt;&lt;span style="color: #e69138;"&gt;),&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;array&lt;/span&gt;&lt;span style="color: #e69138;"&gt;($this,&lt;/span&gt;&lt;span style="color: #6aa84f;"&gt; 'gc'&lt;/span&gt;&lt;span style="color: #e69138;"&gt;)&lt;/span&gt;);&lt;br /&gt;
&lt;span style="color: #674ea7;"&gt;&amp;nbsp;register_shutdown_function&lt;/span&gt;(&lt;span style="color: #6aa84f;"&gt;'session_write_close'&lt;/span&gt;);
&lt;/div&gt;
We are going to implement the &lt;i&gt;open()&lt;/i&gt; method like so:

&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #674ea7;"&gt;public function&lt;/span&gt; &lt;span style="color: #6aa84f;"&gt;open&lt;/span&gt;(&lt;span style="color: #cc0000;"&gt;$savePath&lt;/span&gt;=null, &lt;span style="color: #cc0000;"&gt;$sessionName&lt;/span&gt;=null)&lt;br /&gt;
&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #cc0000;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #3d85c6;"&gt;_link&lt;/span&gt;-&amp;gt;&lt;span style="color: #6aa84f;"&gt;connect&lt;/span&gt;();&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #a64d79;"&gt;return&lt;/span&gt; &lt;span style="color: #cc0000;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #3d85c6;"&gt;_link&lt;/span&gt;-&amp;gt;&lt;span style="color: #674ea7;"&gt;_isConnected&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;}&lt;/div&gt;
The &lt;i&gt;open()&lt;/i&gt; method is a simple method, It ensures that our database is set to receive data, it enable connection to the database (MongoDb).
Now let write the &lt;i&gt;close()&lt;/i&gt; method:

&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #674ea7;"&gt;public function close&lt;/span&gt;()
      {&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #cc0000;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #674ea7;"&gt;gc&lt;/span&gt;(&lt;span style="color: #3d85c6;"&gt;get_cfg_var&lt;/span&gt;(&lt;span style="color: #6aa84f;"&gt;"session.gc_maxlifetime"&lt;/span&gt;));&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #cc0000;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #3d85c6;"&gt;_link&lt;/span&gt;-&amp;gt;&lt;span style="color: #a64d79;"&gt;disconnect&lt;/span&gt;();&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #351c75;"&gt;return&lt;/span&gt; !&lt;span style="color: #cc0000;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #3d85c6;"&gt;_link&lt;/span&gt;-&amp;gt;&lt;span style="color: #3d85c6;"&gt;_isConnected&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;}&lt;/div&gt;
Let see the write and read method :

&lt;br /&gt;
&lt;div class="code"&gt;
&lt;br /&gt;
&lt;span style="color: #674ea7;"&gt;public function&lt;/span&gt; &lt;span style="color: #741b47;"&gt;read&lt;/span&gt;(&lt;span style="color: #cc0000;"&gt;$id&lt;/span&gt;)
      {&lt;br /&gt;
&lt;span style="color: #cc0000;"&gt;&amp;nbsp;$result&lt;/span&gt; = &lt;span style="color: #cc0000;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #3d85c6;"&gt;_link&lt;/span&gt;-&amp;gt;&lt;span style="color: #0b5394;"&gt;from&lt;/span&gt;(&lt;span style="color: #cc0000;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #3d85c6;"&gt;_schema&lt;/span&gt;)-&amp;gt;&lt;span style="color: #3d85c6;"&gt;where&lt;/span&gt;(&lt;span style="color: #6aa84f;"&gt;"active = ?"&lt;/span&gt;,&lt;span style="color: #351c75;"&gt;true&lt;/span&gt;)
        -&amp;gt;&lt;span style="color: #3d85c6;"&gt;where&lt;/span&gt;(&lt;span style="color: #6aa84f;"&gt;"id = ?"&lt;/span&gt;,&lt;span style="color: #cc0000;"&gt;$id&lt;/span&gt;)-&amp;gt;&lt;span style="color: #3d85c6;"&gt;where&lt;/span&gt;(&lt;span style="color: #93c47d;"&gt;"expires &amp;gt; ?"&lt;/span&gt;,&lt;span style="color: #20124d;"&gt;New&lt;/span&gt; \&lt;span style="color: #bf9000;"&gt;MongoDB\BSON\UTCDateTime&lt;/span&gt;(&lt;span style="color: #741b47;"&gt;time()&lt;/span&gt;))-&amp;gt;&lt;span style="color: #3d85c6;"&gt;first&lt;/span&gt;();&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #3d85c6;"&gt;if&lt;/span&gt;(&lt;span style="color: #cc0000;"&gt;$result&lt;/span&gt;){  &lt;span style="color: #351c75;"&gt;return&lt;/span&gt; &lt;span style="color: #cc0000;"&gt;$result&lt;/span&gt;-&amp;gt;&lt;span style="color: #45818e;"&gt;data&lt;/span&gt;;}&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;&amp;nbsp;else&lt;/span&gt;  {&lt;span style="color: #741b47;"&gt;return&lt;/span&gt; &lt;span style="color: #351c75;"&gt;null&lt;/span&gt;;}&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #674ea7;"&gt;&amp;nbsp;public function&lt;/span&gt; &lt;span style="color: #a64d79;"&gt;write&lt;/span&gt;(&lt;span style="color: #cc0000;"&gt;$id&lt;/span&gt;, &lt;span style="color: #cc0000;"&gt;$data&lt;/span&gt;)
      {&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #cc0000;"&gt;$diff&lt;/span&gt; = &lt;span style="color: #741b47;"&gt;60&lt;/span&gt; * &lt;span style="color: #cc0000;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #3d85c6;"&gt;_increment&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #cc0000;"&gt;$mongotime&lt;/span&gt; = &lt;span style="color: #a64d79;"&gt;New&lt;/span&gt; \&lt;span style="color: #bf9000;"&gt;MongoDB\BSON\UTCDateTime&lt;/span&gt;(&lt;span style="color: #a64d79;"&gt;time()&lt;/span&gt;+&lt;span style="color: #cc0000;"&gt;$diff&lt;/span&gt;);&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #cc0000;"&gt;$result&lt;/span&gt; =&lt;span style="color: #cc0000;"&gt; $this&lt;/span&gt;-&amp;gt;&lt;span style="color: #3d85c6;"&gt;_link&lt;/span&gt;-&amp;gt;&lt;span style="color: #674ea7;"&gt;from&lt;/span&gt;(&lt;span style="color: #cc0000;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #3d85c6;"&gt;_schema&lt;/span&gt;)-&amp;gt;&lt;span style="color: #674ea7;"&gt;where&lt;/span&gt;(&lt;span style="color: #6aa84f;"&gt;"id = ?"&lt;/span&gt;, &lt;span style="color: #cc0000;"&gt;$id&lt;/span&gt;)-&amp;gt;&lt;span style="color: #3d85c6;"&gt;where&lt;/span&gt;(&lt;span style="color: #6aa84f;"&gt;"active = ?"&lt;/span&gt;, &lt;span style="color: #3d85c6;"&gt;true&lt;/span&gt;)
                    -&amp;gt;&lt;span style="color: #3d85c6;"&gt;save&lt;/span&gt;(&lt;span style="color: #674ea7;"&gt;array&lt;/span&gt;(&lt;span style="color: #6aa84f;"&gt;"id"&lt;/span&gt; =&amp;gt; &lt;span style="color: #cc0000;"&gt;$id&lt;/span&gt;, &lt;span style="color: #6aa84f;"&gt;"active"&lt;/span&gt;=&amp;gt;&lt;span style="color: #3d85c6;"&gt;true&lt;/span&gt;,&lt;span style="color: #6aa84f;"&gt; "expires"&lt;/span&gt; =&amp;gt; &lt;span style="color: #cc0000;"&gt;$mongotime&lt;/span&gt;, &lt;span style="color: #6aa84f;"&gt;"data"&lt;/span&gt; =&amp;gt; &lt;span style="color: #cc0000;"&gt;$data&lt;/span&gt;,&lt;span style="color: #6aa84f;"&gt;"ip"&lt;/span&gt; =&amp;gt;&lt;span style="color: #cc0000;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #3d85c6;"&gt;_ip&lt;/span&gt;));&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #741b47;"&gt;return&lt;/span&gt; &lt;span style="color: #cc0000;"&gt;$result&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #674ea7;"&gt;public function&lt;/span&gt; &lt;span style="color: #a64d79;"&gt;destroy&lt;/span&gt;(&lt;span style="color: #cc0000;"&gt;$id&lt;/span&gt;)
      {&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #cc0000;"&gt;$result&lt;/span&gt; =  &lt;span style="color: #cc0000;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #3d85c6;"&gt;_link&lt;/span&gt;-&amp;gt;&lt;span style="color: #674ea7;"&gt;from&lt;/span&gt;(&lt;span style="color: #cc0000;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #0b5394;"&gt;_schema&lt;/span&gt;)
                -&amp;gt;&lt;span style="color: #3d85c6;"&gt;where&lt;/span&gt;(&lt;span style="color: #6aa84f;"&gt;"id = ?"&lt;/span&gt;,&lt;span style="color: #cc0000;"&gt;$id&lt;/span&gt;)-&amp;gt;&lt;span style="color: #3d85c6;"&gt;delete&lt;/span&gt;();&lt;br /&gt;
&lt;span style="color: #a64d79;"&gt;&amp;nbsp;return&lt;/span&gt; &lt;span style="color: #cc0000;"&gt;$result&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;}&lt;/div&gt;
Finally to make use of our session handler class in any PHP file:

&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #674ea7;"&gt;include&lt;/span&gt; &lt;span style="color: #351c75;"&gt;"include/session.php"&lt;/span&gt;;&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;&amp;nbsp;/*inject your session database as parameter&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;*if database dosent exists Mongodb will create it for you.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;&amp;nbsp;/*Initiate session
*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #cc0000;"&gt;$session &lt;/span&gt;= &lt;span style="color: #e69138;"&gt;new&lt;/span&gt; &lt;span style="color: #f1c232;"&gt;Session&lt;/span&gt;(&lt;span style="color: #e69138;"&gt;"myAppSession"&lt;/span&gt;);&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #6aa84f;"&gt;/*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;&amp;nbsp;*Add item to session&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #cc0000;"&gt;&amp;nbsp;$_SESSION&lt;/span&gt;[&lt;span style="color: #e69138;"&gt;"foo"&lt;/span&gt;]=&lt;span style="color: #e69138;"&gt;"Bar"&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #6aa84f;"&gt;/*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;*get itemfrom session
*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: #6aa84f;"&gt;/*Regular string from session*/&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #3d85c6;"&gt;var_dump&lt;/span&gt;(&lt;span style="color: #cc0000;"&gt;$_SESSION&lt;/span&gt;[&lt;span style="color: #6aa84f;"&gt;"foo"&lt;/span&gt;]);&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;&amp;nbsp;/*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;*adding object to session&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #3d85c6;"&gt;class&lt;/span&gt; &lt;span style="color: #e69138;"&gt;user&lt;/span&gt; {&lt;span style="color: #3d85c6;"&gt; public&lt;/span&gt; &lt;span style="color: #cc0000;"&gt;$name&lt;/span&gt;=&lt;span style="color: #6aa84f;"&gt;"Peters"&lt;/span&gt;; &lt;span style="color: #3d85c6;"&gt;public&lt;/span&gt; &lt;span style="color: #cc0000;"&gt;$hobbies&lt;/span&gt;=&lt;span style="color: #3d85c6;"&gt;array&lt;/span&gt;(&lt;span style="color: #6aa84f;"&gt;"coding"&lt;/span&gt;); }&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #cc0000;"&gt;$olduser&lt;/span&gt; = &lt;span style="color: #f1c232;"&gt;new&lt;/span&gt; &lt;span style="color: #cc0000;"&gt;user&lt;/span&gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;/*Username before saving to session*/&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #45818e;"&gt;echo&lt;/span&gt; &lt;span style="color: #cc0000;"&gt;$olduser&lt;/span&gt;-&amp;gt;&lt;span style="color: #3d85c6;"&gt;name&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&lt;span style="color: #6aa84f;"&gt;/*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;*Save user object inside database&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #cc0000;"&gt;$_SESSION&lt;/span&gt;[&lt;span style="color: #6aa84f;"&gt;"user"&lt;/span&gt;] = &lt;span style="color: #0b5394;"&gt;serialize&lt;/span&gt;(&lt;span style="color: #cc0000;"&gt;$olduser&lt;/span&gt;);&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;&amp;nbsp;/*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;*Get user object from session&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #cc0000;"&gt;$newuser&lt;/span&gt; = &lt;span style="color: #674ea7;"&gt;unserialize&lt;/span&gt;(&lt;span style="color: #cc0000;"&gt;$_SESSION&lt;/span&gt;[&lt;span style="color: #6aa84f;"&gt;"user"&lt;/span&gt;]);&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #6aa84f;"&gt;/*Username after retreiving from session*/&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #45818e;"&gt;echo&lt;/span&gt; &lt;span style="color: #cc0000;"&gt;$newuser&lt;/span&gt;-&amp;gt;&lt;span style="color: #3d85c6;"&gt;name&lt;/span&gt;;&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh41n78HAATICLIIr3NxMsCEegmPXAd2WZhz83QP_hHWEpwdy7Rr1KA-WuQElgd2iFTCMo71APbxi1QbgPs2Jj_fjytGWRhBZSLEo863icOISMbRFJvqojXLWB83jyMuYnIHnTG6JqSRFIx/s72-c/9080607321ab98fa3e70dd24b2513a20.gif" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author></item><item><title>Amazon aws EC2 'Elastic Cloud' Setup with Ubuntu, PHP, Apache, Node.js, MySQL and PHPMyAdmin Installation</title><link>http://www.codingsavvy.com/2016/05/amazon-aws-ec2-elastic-cloud-setup-with.html</link><category>PHP</category><pubDate>Thu, 26 May 2016 14:07:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-1796500569559019991</guid><description>&lt;div class="bigInt"&gt;
Amazon EC2 stands for Amazon Elastic Compute Cloud it is a &lt;s&gt;Amazon&lt;/s&gt; web service (aws)  that provides resizable compute capacity in the cloud. It will be really selfish of me not to share the benefits of this wonderful cloud platform. We are not only going to setup an EC2 Server instance but I will educate you on the benefits of this great cloud platform that comes almost free to developers, If you have been wasting your time with hosting companies this is your chance to save money and pay for just what you use.  Amazon EC2 provides developers the tools to build failure resilient applications and isolate themselves from common failure scenarios.
After reading this amazon aws tutorial You should know How to setup Amazon EC2 Instance , Install Apache , PHP, Node.js MySQL, PHPMyAdmin and lastly we are going to setup a website on the Instance. The good part is that Amazon give you the chance to start using this wonderful platform free for 12 months with 1GB RAM.

&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img alt="Amazon aws EC2 'Elastic Cloud' Setup with Ubuntu, PHP, Apache and Node.js Installation" class="sri" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh41n78HAATICLIIr3NxMsCEegmPXAd2WZhz83QP_hHWEpwdy7Rr1KA-WuQElgd2iFTCMo71APbxi1QbgPs2Jj_fjytGWRhBZSLEo863icOISMbRFJvqojXLWB83jyMuYnIHnTG6JqSRFIx/s1600/9080607321ab98fa3e70dd24b2513a20.gif" data-original="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEWWKgjTT7LsucDrW8PdzYsZ2_gzLokyOIatOteaCLL-1NX0stnA3v09qD5TP5CjBCA3e0LNVR6OVucizAcu4NLn4GkL86YE4h9dtxcmguTmZSQEeVc2iu-D70lhWhfIQbIxyRbQLet4eL/s1600/ec2.png" /&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;h3&gt;
Creating Amazon AWS Account&lt;/h3&gt;
The first step is to login to register on Amazon AWS page, You will require a valid credit card and a reachable mobile number don't worry you will not be charged for the first 12 month they are just using your card detail for record purpose and for future billing.  Goto &lt;a href="https://console.aws.amazon.com/ec2/"&gt;Amazon AWS Hompage&lt;/a&gt; and sign up.

&lt;br /&gt;
&lt;h3&gt;
Step 1: Setup EC2 Instance&lt;/h3&gt;
On completing your registration, The next page will display Amazon AWS console HomePage as below:
Click on &lt;i&gt;EC2&lt;/i&gt; under The &lt;i&gt;Compute&lt;/i&gt; Category. 
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="Amazon aws EC2 'Elastic Cloud' Hompage" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBejmZNMvsGYUNCouVkqJvPoMNDprqU2dAoef4wtHCy0l-RISS0G_BATCiPpvvaM56hYWI5DQhDoPE2R6DdaRSSdH5AVJ9hfc9QvRvUtXG3LuuWsJ0HfH3gMEpop1Izhe3wpvFfSEDYfsM/s1600/Screen+Shot+2016-05-25+at+10.00.59+PM.png" /&gt;
&lt;/div&gt;
&lt;h3&gt;
Step 2: Lunch An Instance&lt;/h3&gt;
Click the &lt;i&gt;Lunch Instance&lt;/i&gt; button to create new EC2 instance.
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="Lunch EC2 instance" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikyiaA6BhMMSRpw4xZNgDa9jNBdw-aBnnsoudKWujU31Kq3_vfY8sqGgcHRQz_sL0RWB56Jc4exErSxbmQBgYsiqW0LgnaiuQjZjGbyO8wflcw-87nu8vdWUozpp_PUjUoh0KQ7vGS4cpB/s1600/Screen+Shot+2016-05-25+at+10.07.12+PM.png" /&gt;
&lt;/div&gt;
&lt;h3&gt;
Step 3: Select An Operating System(OS)&lt;/h3&gt;
For more advantages we are going to be using &lt;i&gt;Ubuntu&lt;/i&gt; as the OS on our new instance, I should be listed under &lt;i&gt;free tier&lt;/i&gt;.
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="Ubuntu OS on EC2 Instance" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIpml8vLmmNeSs9PsqaYjDYBgDdcePj56XnKI4krTibuN1ykvgSuYygqffobtFm48A_K2vON3HiEiCmRL-OvEfIlZcezAZyVbIz-WYjUjeBGghQkbmGIuCFeyP9TjAChNv8B4HitqKHC9g/s1600/Screen+Shot+2016-05-25+at+10.16.23+PM.png" /&gt;
&lt;/div&gt;
&lt;h3&gt;
Step 4: Choose Server Type&lt;/h3&gt;
We need to choose the server type this time we are to use the &lt;i&gt;t2.micro : free tier&lt;/i&gt;  
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="t2.micro free tier" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyVlfYSQk4P0osx7lzWIq6Mf5KCuDtDM0W9xRsLvJO6cHa1EveRQzfOdUtzL3-7yWgOdtO08DsdFUX5RQ8P4XHNR4V2VDGWeeBkSeVW4frBuOnfxMEC6XZBoaystsTRdsyJ1WNLLxxt-La/s1600/Screen+Shot+2016-05-25+at+10.20.37+PM.png" /&gt;
&lt;/div&gt;
&lt;h3&gt;
Step 5: Create EC2 Instance Key File for Authentication&lt;/h3&gt;
Skip all steps till the step 6 .&lt;i&gt;Configure Security Group&lt;/i&gt; by clicking &lt;i&gt;Next&lt;/i&gt;.&lt;br /&gt;
Now here is where things get confidential , You key file serves as you login credential to you instance, without the key file you may not be able to login to your instance.
What we are doing in this step is to generate a new key file for our new instance, If you already have a key file you can choose to use it but be sure you still have it, But in this tutorial I assume you are creating your first instance so let generate a new key file. Remember to to add rules for accepting connection from HTTP, SSH and HTTPS[optional] from anywhere on specified ports so that we can have access to the instance anywhere on the internet with web browser and terminals.
Lastly click the &lt;i&gt;Review and Lunch button&lt;/i&gt; You can review your setting to see if it correct then click the &lt;i&gt;Lunch&lt;/i&gt; Button.

&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="Ec2 security group setup" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCSWpzOiq2dpfQCyckBvErdS7g1fZR1QtEqGmVU9sfQagKLbvHJW2y4TYqlzciDr0YsUtyeVEh-uZkhamNFVnqogZYeH2QXNjPoF9tHHP_-nMWOLMaIviDmdHjwikE4jhUWnfRHXCAUZe7/s1600/Screen+Shot+2016-05-25+at+10.39.19+PM.png" /&gt;
&lt;/div&gt;
&lt;h3&gt;
Download Key Pair&lt;/h3&gt;
After clicking the lunch button a pop-in window should display for the option to download key pair, Name your key then click &lt;i&gt;Download Key pair&lt;/i&gt; Button before clicking the &lt;i&gt;Lunch Instances&lt;/i&gt; button. &lt;b&gt;If you do not download the Key Pair you will not have access to your instance&lt;/b&gt; .
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="Download Key Pair" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiC9TbgiqA3xRt1JrMoFHTzJ7h9lHbD1akaiCLPc55v2gF_pp2men4DepzzfcYEe2EzJVh8f_bGZdqVi_2JAa8_1Jux9FWkcC0c4B6ZoHfmbaNR0eHOI_-UiAWdFKirlm3qaWHxT6AEZ-w5/s1600/Screen+Shot+2016-05-25+at+10.44.41+PM.png" /&gt;
&lt;/div&gt;
Then let the magic happen in the background:
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="Installing instance" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC0Gs_xs1ADdDsCctdl03DXqIKFJ6z_CBm5czvwae-u3n85x8iXLnF_PlQOip2hJRdsTNiuwXMTvdTWakGhhssXDJi8VVcD2Eig4t5Bl4EOdyV5PFWwuRDarAFTvVB-EmRlWBsB3EIMLPB/s1600/Screen+Shot+2016-05-25+at+10.51.51+PM.png" /&gt;
&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img alt="Installation completed" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKpou4KCrauTfoZ2ullRSGtn8b8a30f7kVrNFuvFZNpD1G4z7yhYvnU6G1Cdr1YzdtlBYdV2WhJUceloMKuHEf46tPR9xAqYzUubbc-cJP_Eihp4Gan-p1SYTD0ukx_eXEg2Ah2b9VCuyk/s1600/Screen+Shot+2016-05-25+at+10.52.10+PM.png" /&gt;
&lt;/div&gt;
&lt;br /&gt;
Scroll to the bottom of the page and click the &lt;i&gt;View Instances&lt;/i&gt; Button.
&lt;br /&gt;
By now you should see the running status on your instance.
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="Installation completed" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-t12M_gZPDnHyXkPoBKSoZIxVYn1i-3-4t4MzLZnD6CZBsP9DCSSnkU5wyety-La1eIH3xr3yZl_hGV25nWjVHN7DAcHmW4aswgvhc6Sj1e29gR_OSS8MfT0oTC-eJKGXyvmOeN4CLkFb/s1600/Screen+Shot+2016-05-25+at+10.58.20+PM.png" /&gt;
&lt;/div&gt;
Now that the creation of our EC2 instance is completed, We need to create and &lt;i&gt;Elastic IP&lt;/i&gt; so that we can connect to our instance, Amazon Generates Elastic IP address randomly so let do it.
&lt;br /&gt;
&lt;h3&gt;
Create an Elastic IP Address&lt;/h3&gt;
&lt;br /&gt;
Click &lt;i&gt;Elastic IP&lt;/i&gt; on the left menu under &lt;i&gt;NETWORK &amp;amp; SECURITY&lt;/i&gt; .
Click the &lt;i&gt;Allocate New Address&lt;/i&gt; button.
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="Create an Elastic IP" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilbZ6wMlhYZtu_Y0F6oUNQZbqYbntMZOgZxkAc6HS3k4ugkenb5QsDKkPm1QLeOBrjSwEH6tBlLgLpVdkP0rDKygv5IWKv4RyUP2ytd7CfZGM7DGESeTJ8ntdm8iO9pTGklSJ-vujp-Q1T/s1600/Create_Elastic_IP.png" /&gt;
&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img alt="an Elastic IP" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvGYgXIiZ8DzBbt49miWg96kjymootFi7Y5pg10ANkBE7MvsENVDLsQ9-MVkci_jtD6UqBudeUquaZP7Ki2iziSk4QhVS3G4XQ7tN7Ujs_SHw3wkvTL0kFROD8r6oHv27CW2NEB4p9XnSy/s1600/Screen+Shot+2016-05-25+at+11.14.16+PM.png" /&gt;
&lt;/div&gt;
This newly allocated IP address will not automatically connect to our instance, we need to associate them together to have a perfect connection to the right instance.
To do this mark the newly generate Elastic IP and click &lt;i&gt;Associate Address&lt;/i&gt; on the &lt;i&gt;Action &lt;/i&gt; Menu Drop Down.
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="Associate an Elastic IP" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiSE_Ttf58tbUiOgJgsLQIugcRzqAUQJFIAYEeJ-wKM8nKod9hK3qdjr8nXyPEuFUtjMYDxIZuhyphenhyphen_jTCnlhOVA07y_DuYL6gKw2PkZ6M6XyG97iysjrCWKRiew8wGTrkEXWSlXu4NtnGK0/s1600/Screen+Shot+2016-05-25+at+11.18.11+PM.png" /&gt;
&lt;/div&gt;
Immediately you click on the instance field you should see all the available instances by their ID, You have to click the ID of your new instance so that it can be selected and then click the &lt;i&gt;Associate Button&lt;/i&gt;  . And we are good to go.

&lt;br /&gt;
&lt;h2&gt;
Connect to our EC2 Instance from the Terminal&lt;/h2&gt;
Secure Shell (SSH) is a network protocol for secure data communication, remote shell services or command execution and other secure network services.{wikipedia}
&lt;br /&gt;
&lt;h3&gt;
Connect to EC2 Instance with Windows OS&lt;/h3&gt;
If you are using Windows OS your browser should save it in your &lt;i&gt;Download&lt;/i&gt; Folder by default if not you can move it there. 
You will most likely be using &lt;i&gt;PuTTy&lt;/i&gt; for SSH commands. PuTTy uses the extension &lt;i&gt;.ppk&lt;/i&gt; for its key files, while Amazon creates a &lt;i&gt;.pem&lt;/i&gt; file. 
You will need to run this .pem file through the &lt;a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html"&gt;PuTTygen tool&lt;/a&gt; to use it.
&lt;br /&gt;
Lunch &lt;strong&gt;Puttygen&lt;/strong&gt; -&amp;gt; &lt;strong&gt;File&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Load Private&lt;/strong&gt;.&lt;br /&gt;
Key Under &lt;strong&gt;Type of key to generate&lt;/strong&gt;  select &lt;i&gt;SSH-2 RSA&lt;/i&gt; then click the  &lt;i&gt;Load&lt;/i&gt; button. &lt;br /&gt;
By default PuTTYgen displays only files with the extension &lt;i&gt;.ppk. &lt;/i&gt;To locate your &lt;i&gt;.pem file&lt;/i&gt; &lt;strong&gt;File Types&lt;/strong&gt; to &lt;i&gt;All Files&lt;/i&gt; on the select dialog. Select your .pem file and click &lt;i&gt;Open&lt;/i&gt;. Click &lt;i&gt;OK&lt;/i&gt; to dismiss the selection dialog box. Click &lt;i&gt;Save private key&lt;/i&gt; button. &lt;br /&gt;
Sometimes, PuTTYgen displays a warning about saving the key without a pass phrase. Click &lt;i&gt;Yes&lt;/i&gt;.
&lt;br /&gt;
&lt;h3&gt;
Connect using PuTTY&lt;/h3&gt;
Download &lt;a alt="Download PuTTY" href="https://the.earth.li/~sgtatham/putty/latest/x86/putty.exe"&gt;PuTTY&lt;/a&gt;.
We will be needing the .ppk file we saved earlier to complete the SSH connection. &lt;br /&gt;
1. Start &lt;i&gt;PuTTY &lt;/i&gt;(from the Start menu, click &lt;strong&gt;All Programs&lt;/strong&gt; -&amp;gt; &lt;strong&gt;PuTTY&lt;/strong&gt;).&lt;br /&gt;
2. In the Category pane, select Session and complete the following fields: &lt;br /&gt;
In the Host Name box, enter &lt;span style="color: #a64d79;"&gt;ubuntu@&lt;/span&gt;&lt;span style="color: #cc0000;"&gt;IP_ADDRESS&lt;/span&gt;. 
&lt;br /&gt;
Be sure to use your own IP address (The one generated above).&lt;br /&gt;
In the&lt;i&gt; Category &lt;/i&gt; pane, expand &lt;strong&gt;Connection&lt;/strong&gt;, expand &lt;strong&gt;SSH&lt;/strong&gt;, and then select &lt;i&gt;Auth&lt;/i&gt;. &lt;br /&gt;
Complete the following: Click &lt;i&gt;Browse&lt;/i&gt; . &lt;br /&gt;
Select the &lt;i&gt;.ppk&lt;/i&gt; {i.e myFirstInstance.ppk} file that was generate by PuTTYgen Earlier from our instance key pair and click &lt;i&gt;Open&lt;/i&gt;. &lt;br /&gt;
&lt;b&gt;Optional: If you plan to start this session again later, you can save the session information for future use.&lt;br /&gt;
 Select &lt;strong&gt;Session&lt;/strong&gt; in the Category tree, enter a name for the session in Saved Sessions, and then click &lt;i&gt;Save&lt;/i&gt;.&lt;br /&gt;
&lt;/b&gt;
Click &lt;i&gt;Open&lt;/i&gt; to start the PuTTY session. &lt;br /&gt;
If this is the first time you have connected to this instance, 
PuTTY displays a security alert dialog box that asks whether you trust the host you are connecting to.&lt;br /&gt;
Click &lt;i&gt;Yes&lt;/i&gt; A window opens and you are connected to your instance.&lt;br /&gt;
&lt;h3&gt;
Connect to EC2 Instance with MAC OS X&lt;/h3&gt;
If you are using MAC the pair key we downloaded (myFirstInstance.pem) is possibly in the &lt;i&gt;Download&lt;/i&gt; folder you need to move it to the &lt;i&gt;Home&lt;/i&gt; folder for easy access.
after doing this, Open the &lt;i&gt;Terminal &lt;/i&gt; Window (it can be found under Application in Utilities). Now type this command with the generate IP Address in the terminal.
&lt;b&gt;Remember to replace this IP address with your own generated IP address&lt;/b&gt;
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #a64d79;"&gt;ssh -i&lt;/span&gt; &lt;span style="color: #6aa84f;"&gt;myFirstInstance.pem&lt;/span&gt; &lt;span style="color: #3d85c6;"&gt;ubuntu@&lt;/span&gt;&lt;span style="color: #cc0000;"&gt;IP_ADDRESS
&lt;/span&gt;&lt;/div&gt;
80% of the time you will get permission error on MAC such as this

&lt;br /&gt;
&lt;div class="code"&gt;
&lt;div class="p1"&gt;
&lt;span class="s1"&gt;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="s1"&gt;@ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WARNING: UNPROTECTED PRIVATE KEY FILE!&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="s1"&gt;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="s1"&gt;Permissions &lt;span style="color: #cc0000;"&gt;0644&lt;/span&gt; for '&lt;span style="color: #6aa84f;"&gt;myFirstInstance.pem&lt;/span&gt;' are too open.&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="s1"&gt;It is required that your private key files are &lt;span style="color: #cc0000;"&gt;NOT&lt;/span&gt; accessible by others.&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="s1"&gt;This private key will be ignored.&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="s1"&gt;Load key "myFirstInstance.pem": bad permissions&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="p1"&gt;
&lt;span class="s1"&gt;Permission denied (publickey).&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
or it might be
&lt;br /&gt;
&lt;div class="code"&gt;
Permissions 
&lt;span style="color: #cc0000;"&gt;0640&lt;/span&gt; for '&lt;span style="color: #6aa84f; font-family: &amp;quot;times&amp;quot;; font-size: small; line-height: normal;"&gt;myFirstInstance.pem&lt;/span&gt;' are too open.&lt;br /&gt;
It is required that your private key files are NOT accessible by others.&lt;br /&gt;
This private key will be ignored.&lt;br /&gt;
Load key "&lt;span style="color: #6aa84f; font-family: &amp;quot;times&amp;quot;; font-size: small; line-height: normal;"&gt;myFirstInstance.pem&lt;/span&gt;": bad permissions&lt;br /&gt;
Permission denied (publickey).
&lt;/div&gt;
The solution is to Give only READ permission for key pair &lt;i&gt;.pem&lt;/i&gt; file, Which is in our case &lt;i&gt;myFirstIntsnace.pem&lt;/i&gt; using this code.
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #a64d79;"&gt;sudo chmod&lt;/span&gt; &lt;span style="color: #cc0000;"&gt;400&lt;/span&gt; &lt;span style="color: #6aa84f;"&gt;myFirstInstance.pem
&lt;/span&gt;&lt;/div&gt;
To make sure we are working on a good environment let use this code to update Ubuntu OS Packages.
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #a64d79;"&gt;sudo apt-get&lt;/span&gt; &lt;span style="color: #3d85c6;"&gt;update
&lt;/span&gt;&lt;/div&gt;
&lt;h2&gt;
 Install Apache Server to EC2 Instance&lt;/h2&gt;
First of all let update and upgrade. In the terminal type:
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #3d85c6;"&gt;sudo apt-get update &lt;/span&gt;&lt;span style="color: #134f5c;"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt; sudo apt-get upgrade
&lt;/span&gt;&lt;/div&gt;
Now let install Apache, its documentation, and a collection of utilities.
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #3d85c6;"&gt;sudo apt-get install apache2 apache2-doc apache2-utils
&lt;/span&gt;&lt;/div&gt;
Now you can test if your server is running by typing your IP_ADDRESS in the browser URL to see if "it works!".
&lt;br /&gt;
Here is how it look like with the instance and IP address created for this tutorial.
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhRLhgSHmvRRO85sKpmlDVOdekEmh6ln47n1mrp9fqFjyIN_by0_48h3qKaZM74F_T0uy6SpR7Amaf5ajMpSmFuf-fw76rSAOZgWQ7in2BLpLDABAsXVfmyJaKoBkaPTVOkceqTUx_jEXo/s1600/Screen+Shot+2016-05-26+at+12.39.45+AM.png" /&gt;
&lt;/div&gt;
&lt;h2&gt;
Install PHP on EC2 Instance&lt;/h2&gt;
To install the latest version of PHP PHP7 for faster performance use the command below.
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #3d85c6;"&gt;sudo apt-get install python-software-properties&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;sudo apt-get update
&lt;/span&gt;&lt;/div&gt;
Then we will now install PHP7:
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #3d85c6;"&gt;sudo apt-get install php7.0 php7.0-fpm php7.0-mysql -y
&lt;/span&gt;&lt;/div&gt;
Optionally clean up unneeded packages afterwards:
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #3d85c6;"&gt;sudo apt-get --purge autoremove -y
&lt;/span&gt;&lt;/div&gt;
To check the PHP version you can type:
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #3d85c6;"&gt;php -v
&lt;/span&gt;&lt;/div&gt;
&lt;h2&gt;
Install Node.Js on EC2 Instance&lt;/h2&gt;
You should know that if you only want to run Node.js code on your instance and not PHP there is no reason to install PHP and Apache.
 Node comes with it own server.
To install node to our EC2 instance :
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #3d85c6;"&gt;sudo apt-get install &lt;/span&gt;&lt;span style="color: #674ea7;"&gt;nodejs
&lt;/span&gt;&lt;/div&gt;
Install Node Package Manager:
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #3d85c6;"&gt;sudo apt-get install &lt;/span&gt;&lt;span style="color: #674ea7;"&gt;npm
&lt;/span&gt;&lt;/div&gt;
Create a symbolic link for node, as many Node.js tools use this name to execute.
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #3d85c6;"&gt;sudo ln -s /usr/bin/nodejs /usr/bin/node
&lt;/span&gt;&lt;/div&gt;
Now let check the installed version:
&lt;br /&gt;
&lt;div class="code"&gt;
$ &lt;span style="color: #3d85c6;"&gt;node -v&lt;/span&gt;&lt;br /&gt;
v0.10.25&lt;br /&gt;
$ &lt;span style="color: #3d85c6;"&gt;npm -v&lt;/span&gt;&lt;br /&gt;
1.3.10
&lt;/div&gt;
&lt;h2&gt;
Install MySQL on EC2 Instance
&lt;/h2&gt;
To install MySQL on our instance we make use of this command:
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #3d85c6;"&gt;sudo apt-get install mysql-server
&lt;/span&gt;&lt;/div&gt;
MySQL terminal will ask you to choose the root user password. Remember to choose a password that you can remember and make sure it a safe password.
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="MySQL choose password" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg59rq2qDcAWErwfCn8a4_ivmy35DpMpjxW2QP2XJW6YLseaRAShP7P11EKWD7viuh8rVpMxPSsdt0J3Ym5WNgbmXkfJSt-Bjy7B-7BptRTTQy7DxpwBgRY6h0RygNvQALW7ZAYbfAdiMHB/s1600/Screen+Shot+2016-05-26+at+1.12.11+AM.png" /&gt;
&lt;/div&gt;
We can check our MySQL version with&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #3d85c6;"&gt;mysql --version
&lt;/span&gt;&lt;/div&gt;
&lt;h2&gt;
Install PHPMyAdmin on EC2 Instance&lt;/h2&gt;
To install PHPMyAdmin input this command into the terminal.
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #3d85c6;"&gt;sudo apt-get install phpmyadmin
&lt;/span&gt;&lt;/div&gt;
You will be prompted to choose a sever, Apache is chosen as default you can just press the &lt;i&gt;Enter&lt;/i&gt; Key to proceed.
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="phpmyadmin  server selection" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCz56h_JUR1aESGHKgBsUuI59OQDZvE6Id1oA46h6EmYR4IS_V9RK9n_5nAok4hAkEybPThmRQsj9OZUgjv0e8DN31fSGbKrxAG5S3lbucqcw4pFCfcOkJYarhuv33vnU162MChoM_SNBV/s1600/phpmyaddminselect.png" /&gt;
&lt;/div&gt;
At the second screen, which asks “configure the database for phpmyadmin with dbconfig-common?”, select Yes, then hit enter to continue.
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="phpmyadmin  server selection" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJYswuS6rA6bXDV6xDzqOOVNv5WB5NLWdzrvnTINfU-owkhF4yqFB_Oh4-cvfmFSYwimIoWiVdPK6wCzOpBf4_AjpLoKR-AQNj2FshxvM-oEfUf-5B3R4r1UfplrCLGisUeJCCHjnBwi-9/s1600/Screen+Shot+2016-05-26+at+1.22.18+AM.png" /&gt;
&lt;/div&gt;
At the third screen enter your MySQL password, then hit enter to continue.
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="phpmyadmin  password selection" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFUE0uuQdwvO012s6eaIyDm0iQU5b3uPS9ntFSSQ8tR9knKdbDGjfsNUVy3ZoHNn1q2O5ngaUEKMTtCbfcpC2WZO3oW9B9KQFuh-FKLJYUV_oSnDDkTZlfv8sb5JfT3Hoao2wz3XlSoO14/s1600/password-phpmyadmin.png" /&gt;
&lt;/div&gt;
And finally at the fourth screen set the password you’ll use to log into phpmyadmin, hit enter to continue, and confirm your password.
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="phpmyadmin  password confirm" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4omJGB18GYZvMaB8Qo9tQ_sN87cThbP0lXtGuDV1Bc8tyI0RVGy6WNXmqilB9YT5t0qz9Rj1qHnOgtzXy_4QQkm070qmgrqJTFMwa6rrVW75-cVcUg_1DQv2EF3u7S1Gfw2wR3w4FQ4EA/s1600/pass.png" /&gt;
&lt;/div&gt;
To finalize the installation of PHPMyAdmin we need to make apache load it configuration file.
Let edit Apache configuration file through the vim editor.
using this code
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #3d85c6;"&gt;sudo vim /etc/apache2/apache2.conf
&lt;/span&gt;&lt;/div&gt;
Add the following to the bottom of the file:&lt;br /&gt;
hint: press &lt;i&gt;i&lt;/i&gt; or&lt;i&gt; insert&lt;/i&gt; button to enable edit then press the &lt;i&gt;Esc&lt;/i&gt; button to stop edit. &lt;br /&gt;
Press &lt;i&gt;:wq&lt;/i&gt; and then press enter to save.&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #666666;"&gt;# phpMyAdmin Configuration&lt;/span&gt;&lt;span style="color: #674ea7;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #674ea7;"&gt;Include /etc/phpmyadmin/apache.conf
&lt;/span&gt;&lt;/div&gt;
Then Restart apache
&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #3d85c6;"&gt;sudo service apache2 restart
&lt;/span&gt;&lt;/div&gt;
Now navigate to you server IP_ADDRESS/phpmyadmin using your browser
just like mine below:
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="phpmyadmin display" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpNEoRFkGUf-BsL0uIW165eCk3Z0VRAu-Ad6dH370x7ova52SiyNo_7ZbsJPeotC-fbUPz5ALBkJJAmswtJx4uY-6GlbMwjW3bwXwhXVAKo_OrMsIimLOmOwTE03VlUL4KjrghFUa7FEO-/s1600/Screen+Shot+2016-05-26+at+1.43.32+AM.png" /&gt;
&lt;/div&gt;
After login using the password set during installation of PHPMyAdmin:
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="phpmyadmin interface" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEip4mPvQHpRo8MjQztG9vbhs_Xu_U6Ss9TNOhUnva35wKDv8cOSdDNTKdCkaEClinwymZyQYUmE16SBmsm238wuLAf-Z8cWGAy8OAiu1qtuic0rhhrnBLKU5UBUdO1uxj3XsFRcufQGIZ-D/s1600/Screen+Shot+2016-05-26+at+1.43.45+AM.png" /&gt;
&lt;/div&gt;
&lt;h2&gt;
Setup Website on Amazon aws EC2 Instance&lt;/h2&gt;
Before we can setup a website on our instance we need to have access to our files directory to do that we are going to use an FTP software. for this tutorial we are using 
&lt;a href="https://filezilla-project.org/download.php"&gt;Filezilla&lt;/a&gt; Client.
Lunch Filezilla after completing the installation.&lt;br /&gt;
&lt;strong&gt;Edit (Preferences) &lt;/strong&gt;-&amp;gt; &lt;strong&gt;Settings&lt;/strong&gt;-&amp;gt; &lt;strong&gt;Connection&lt;/strong&gt; -&amp;gt; &lt;strong&gt;SFTP&lt;/strong&gt;, Click &lt;i&gt;Add key file&lt;/i&gt;.&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="Filezilla Setting" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTTrBUsYFGD-ZJNhbDsMtfTDb_WiSf5HD0iJJ7bzMIcmeH0SXpYNNhpfpT-ct7AkQMg7xUS_85mTcIKVbqseHAdTDC6WTokzSDC2_TLTTKGH0Fve8VAVC_9Ya1nQ504x5bgUzYj8ME8_vW/s1600/Screen+Shot+2016-05-26+at+11.24.44+AM.png" /&gt;
&lt;/div&gt;
Browse to the location of your &lt;i&gt;.pem&lt;/i&gt; or &lt;i&gt;.ppk&lt;/i&gt; file and select it. i.e myFirstInstance.pem or the file we generate using PuTTYgen myFirstInstance.ppk
&lt;b&gt;Note: &lt;/b&gt;If you are selecting a .pem file a dialog box will appear asking your permission to convert the file into ppk format. Click &lt;i&gt;Yes&lt;/i&gt;  then give the file a name and store it somewhere. If the new file is shown in the list of Keyfiles, then continue to the next step. If not, then click &lt;i&gt;Add keyfile...&lt;/i&gt; and select the newly converted file. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="Filezilla Setting" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfx4vSYWWxgRCi8IHnorw0eSUTZ515NuGiBKqqaDiRC-cl8fRhf-hYrxkhxT2CUt6DkADfcujKAYDSWNKCNnFCebNG6eagKlTyRI2j_CgW8f2YkP1jXbBO3kqhdfT10olnmV2nM383TbI-/s1600/Screen+Shot+2016-05-26+at+11.54.46+AM.png" /&gt;
&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img alt="Filezilla Setting" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqUaM-MYpha7m3Ik1827KvaHZXup8VUAWpuN8O-xM-CohzbdRK5hj-G3FGiBnaks4p-25ZHOJnmTSzZC__xupxdQbvuoVw-EBdgNNBomzFx6cKpsauCfWv2MyQdELotCiLnG2B-ADbPvRc/s1600/Screen+Shot+2016-05-26+at+11.55.19+AM.png" /&gt;
&lt;/div&gt;
Now to create profile for our instance on Filezilla: &lt;br /&gt;
Goto &lt;strong&gt;Files&lt;/strong&gt;-&amp;gt;&lt;strong&gt;Site Manager&lt;/strong&gt;-&amp;gt; &lt;i&gt;New Site&lt;/i&gt;
in the host field enter your IP_ADDRESS leave the port and password blank.
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="Filezilla Setting" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtTjJPDfuFPzxlMo_hv4vk_oYx5NNrIXpYGmNL4EnY2xL_U0s9CL15mtrV-9ow8gMWPJnFhFYvwPQSON5O_knwc6zh2oFvUYwlU_hWcocvDaaILz8QRhoJ_k8BV2zVNiz4X92x700zk2_q/s1600/Screen+Shot+2016-05-26+at+11.19.03+AM.png" /&gt;
&lt;/div&gt;
In the Logon type set it to Normal on the protocol select SFTP - SSH File Transfer Protocol
set the username as ubuntu and leave the password and port field blank.

Click &lt;i&gt;Connect Button&lt;/i&gt; - If saving of passwords has been disabled, you will be prompted that the logon type will be changed to Ask for password. Say OK and when connecting, at the password prompt push OK without entering a password to proceed past the dialog. 
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="Filezilla Setting" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwK8R4dEs5u5b_RxnBvRKk3fWBVwS3M2ismBTEsMlJTbORxEhTKnMQwhv3RToJJgMBeBaZmeLB0U4lK6iho060Iojazmm9p-V8cdO6jzfOndMMQYn_SWlPNM6uuKo1T45DZ144wiqUGvKO/s1600/Screen+Shot+2016-05-26+at+11.56.12+AM.png" /&gt;
&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img alt="Filezilla Setting" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcRHiAI7LD-z71TtRpRGPM62x15ZU9ceoV2CQyaRV6OusaRaYJLVk_QQll1DUkada_czXp5739_zpRDzWoRfzdm6eRy0yO8xICbDkHFuV9idlQLgIFlEiGTlR153CC6o7Kwa0IJ7uY0Z7S/s1600/Screen+Shot+2016-05-26+at+11.57.15+AM.png" /&gt;
&lt;/div&gt;
Now Your should have access to your instance files.
&lt;br /&gt;

&lt;div class="cen"&gt;
&lt;img alt="GoDaddy Setting" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5RoB-1YzWF997z-pkb1zo6hHoze5rMrLwd5k79lAgrL1xtZKgl3LUZ1o71D0CQwjVdR4nMiFWG8xTqpPg-GvSqREHOcNOD2D5Vsd-gdHcc2fZ88pudopvsaSFsZgRqpzBqVvH_oVQDcGx/s1600/Screen+Shot+2016-05-26+at+11.58.15+AM.png" /&gt;
&lt;/div&gt;
Uploading Files to EC2 Instance
After login you will find yourself in the &lt;i&gt;ubuntu&lt;/i&gt; directory you need to go up the directory tree twice to get to the root folder
 Navigate into the &lt;i&gt;var&lt;/i&gt; directory -&amp;gt; &lt;i&gt;www&lt;/i&gt; -&amp;gt; &lt;i&gt;html&lt;/i&gt;.
The &lt;strong&gt;html&lt;/strong&gt; directory is your server public directory. 
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="Setting" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibN0jmGMiNWuuHMwhDd7VsJinImGrIGVON8B7WiEHpGDtPE7G7gnPVufo9XijagLbfChlcaeA324HPpGV4HCpcuodcKWQWvy8hHpdpo6nE-d5_fVPTaKZcpwmar_6goek_DZ1XZ7ngPu4R/s1600/Screen+Shot+2016-05-26+at+1.06.49+PM.png" /&gt;
&lt;/div&gt;
&lt;h3&gt;
Setting up Domain for EC2 Instance&lt;/h3&gt;
We can not hand out ugly IP_ADDRESS to visitors before they can have access to our instance on the web, We need to purchase a Domain name and connect it with our instance.
Read:  &lt;a href="http://www.codingsavvy.com/2016/01/how-to-buy-and-setup-custom-domain.html"&gt;How to buy and Setup a Custom Domain Through Blogger in 2 minutes&lt;/a&gt;
It should give you some information on how to setup a domain&lt;br /&gt;
Now I will assume you have already registered a domain name, go to domain DNS(Domain name settings). Add host value &lt;i&gt;@&lt;/i&gt; points to &lt;i&gt;IP_ADDRESS&lt;/i&gt;.
&lt;br /&gt;
&lt;div class="cen"&gt;
&lt;img alt="GoDaddy Setting" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyi-KaUe23aR9UzXM43ChfsfwzOyP8eGEFJHqliB2b3u25szMfGgaKVVCAWgjL1-rSeaTYWw5PHnG79HYx8EbinfZJahfGUrzQIypB_ilFyork_5kK0JK0IwmnZueftuSvuFPoXXdRlMfw/s1600/godaddy.png" /&gt;
&lt;/div&gt;
Now visit your domain, Your Amazon instance will show up.
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh41n78HAATICLIIr3NxMsCEegmPXAd2WZhz83QP_hHWEpwdy7Rr1KA-WuQElgd2iFTCMo71APbxi1QbgPs2Jj_fjytGWRhBZSLEo863icOISMbRFJvqojXLWB83jyMuYnIHnTG6JqSRFIx/s72-c/9080607321ab98fa3e70dd24b2513a20.gif" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author><enclosure length="1347880" type="application/x-msdos-program" url="https://the.earth.li/~sgtatham/putty/latest/x86/putty.exe"/></item><item><title>How to Create Computer Based Assessment Test Interface with AngularJs</title><link>http://www.codingsavvy.com/2016/05/how-to-create-computer-based-assessment.html</link><category>AngularJs</category><pubDate>Mon, 16 May 2016 11:00:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8698550798550906731.post-7292175108335579788</guid><description>&lt;div class="bigInt"&gt;
AngularJs is young powerful and efficient, It is a very good framework for javaScript design and a flexible client side framework it let you write less code and do more things. Read &lt;a alt="5 Minutes Head-start on How to use AngularJs for web Design
" href="http://www.codingsavvy.com/2015/12/5-minutes-head-start-on-how-to-use.html"&gt; 5 Minutes Head-start on How to use AngularJs for web Design
 &lt;/a&gt;  to know more about AngularJs, You can also read
&lt;a alt="Real Time live data Graph Plotting Application with AngularJs and PHP (Google Analytics, Adsense Style)" href="http://www.codingsavvy.com/2015/12/real-time-live-data-graph-plotting.html"&gt;Real Time live data Graph Plotting Application with AngularJs and PHP (Google Analytics, Adsense Style)&lt;/a&gt; to see how you can use this powerful MVC library to create a real time graph for your websites and other web based applications. The point off this tutorial is to design a simple user interface assessment page. 
&lt;/div&gt;
&lt;div class="cen"&gt;
&lt;img alt="How to Create Computer Based Assessment Test Interface with AngularJs" class="sri" data-original="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhK8aHqTc2k4xGLt0JyvPbc5dPVFb6jjZVK8xNngv4whfA5tk4MthlSId8TJw01u4duUOQUws549BazJ6-mdgkvQkLNb2bjkldkDhAM_7_7khyOJyk57RpnXRoI3vTf4joS5olB4RCItIpx/s1600/angcbt.png" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh41n78HAATICLIIr3NxMsCEegmPXAd2WZhz83QP_hHWEpwdy7Rr1KA-WuQElgd2iFTCMo71APbxi1QbgPs2Jj_fjytGWRhBZSLEo863icOISMbRFJvqojXLWB83jyMuYnIHnTG6JqSRFIx/s1600/9080607321ab98fa3e70dd24b2513a20.gif" /&gt;
&lt;/div&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://app.box.com/s/3y6yvwngf7b3dlaahkb2uyzhzyedjdfx" target="_blank"&gt;&lt;img align="absmiddle" alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6tGHhJXSAvmAyQWUzQ3RRlEuXxe-uiJfJwZ7E-glIu59TGhTIK_Fa8Q6fOddR4q6qNUyvZziAP3vGr4WFew_JLgvOcXhEyVJJCD6xv_3JmrR9J7ojSdcKvU4AV1tJSO2NVYkrjzIq1zP4/" style="cursor: pointer;" /&gt; Download Script&lt;/a&gt;
&lt;a href="http://demos.codingsavvy.com/base/index.php" target="_blank"&gt;&lt;img align="absmiddle" alt="Real Time live data Graph Plotting Application with AngularJs and PHP (Google Analytics, Adsense Style)" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6hJTwTdoChlspM4RCmC1lBewH0_gwp1-7RFBRi4s2tI74dgZjNOuTNuzI-WBfWacHQsfkL0yqrJ4QgmFRhYsrh-E2jQGBcVzGpcKEyvosqTjJUjx_yeLHNz95fDUxj35M7aKqqUQSeoYQ/" style="cursor: pointer;" /&gt; Live Demo&lt;/a&gt;
&lt;br /&gt;
This will allow users to do their computer base tests and exams on your web application.
We are less concerned about the user interface design (CSS) this time around what we are focusing on is the powerful small lines of Angular code that are responsible for the superb actions that are done on the UI structure(HTML).&lt;br /&gt;
The interface will have Next and Previous button so that users can navigate from one question to another but another incredible feature is that we are going to be calculating the remaining time , Time spent per question and we are also going to use a small line of code in our timer to recommend the time user should be spending on answering each test question. &lt;br /&gt;
For the demo we are using a 3 minute test with five questions as practice you can add more questions to see how it will work out.
Here is the angularJs code we use to do the magic , If you want to see all the codes, Download it from the link above.

&lt;br /&gt;
&lt;div class="code"&gt;
&lt;span style="color: #3d85c6;"&gt;(function(w,d,_undefined) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #f6b26b;"&gt;"use strict"&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #c27ba0;"&gt;var&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt; icon = &lt;/span&gt;&lt;span style="color: #c27ba0;"&gt;angular&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;.module(&lt;/span&gt;&lt;span style="color: #f6b26b;"&gt;"icon"&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;, []).config(function($interpolateProvider){&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;$interpolateProvider.startSymbol('[[').endSymbol(']]');&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;}).controller('test', ['$scope','$interval','$http',&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;function($scope, $interval,$http){&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;console.log("Test controller sucessfully loaded.");&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;$scope.res = [
             {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;id: 17,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;mark: 20,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;body:"How many Mangoes?",&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;correct: false ,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;spent:0,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;selected:null,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;image: null,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;formular:null,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;options:[{id:1,body:"2 Mangoes"},{id:9,body:"8 Mangoes"},{id:7,body:"23 Mangoes"},{id:2,body:"15 Manoes"}]&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;},{
 id: 23,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;mark: 3,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;spent:0,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;body:"Which of this programming languages will return null for an undefined variable?",&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;correct: false ,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;selected:null,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;image: null,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;formular:null,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;options:[{id:1,body:" JAVA"},{id:5,body:" C++ "},{id:7,body:" C "},{id:8,body:" Assembly"}]&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;},&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;{
 id: 28,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;mark: 1,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;spent:0,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;body:"The coolest Javascript MVC framework will be ?",&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;correct: false ,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;selected:null,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;image: null,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;formular:null,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;options:[{id:44,body:" ReactJS"},{id:51,body:" AngularJS"},{id:37,body:" jQuery "},{id:89,body:" Vanilla"}]&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;},
{&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;id: 288,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;mark: 2,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;spent:0,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;body:"How many egg make a dozen? ?",&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;correct: null ,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;selected:null,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;image: null,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;formular:null,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;options:[{id:62,body:" 3 egg"},{id:71,body:" 6 egg"},{id:877,body:" 26 egg"},{id:754,body:" 12 egg"}]&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;},&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;{
 id:655,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;body:"What is the name of the device that converts computer output into a form that can be transmitted over a telephone line?",&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;correct: null ,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;spent:0,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;selected:null,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;image: null,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;formular:null,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;options:[{id:772,body:" Concentrator"},{id:741,body:" Modem"},{id:8767,body:" Teleport"},{id:7514,body:" Multiplexer"}]&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e06666;"&gt;];&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #76a5af;"&gt;var tst = {title:"First assesment test",duration:"00:02:00"};&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;$scope.question = null;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;$scope.pos=0;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;$scope.changeQuestion = function(pos){ var l= ($scope.pos+pos); if(l&amp;gt;-1 &amp;amp;&amp;amp; l&amp;lt;$scope.res.length){$scope.pos+=pos; $scope.serve($scope.pos);} }&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;$scope.serve = function(pos){$scope.question = $scope.res[pos]; $scope.pos=pos;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;$scope.selected = function(option){console.log(option);}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;$scope.timer = function(){&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;var d1 = new Date(),d2 = new Date(d1);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;var time = tst.duration.match(/(\d+)(?::(\d\d))?\s*(p?)/);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;d2.setHours( d1.getHours()+(parseInt(time[1]) + (time[3] ? 12 : 0)) );&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;d2.setMinutes( d1.getMinutes()+(parseInt(time[2]) || 0) );&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;var end = d2.getTime();&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;var _second = 1000;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;var _minute = _second * 60;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;var _hour = _minute * 60;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;var _day = _hour *24;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;var timer;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;function showRemaining()&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;var now = new Date();&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;var distance = end - now;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;tst.duration = distance;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;var countdown = document.getElementById('timer');&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;var spent = document.getElementById('spent');&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;var recd = document.getElementById('rec');&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;if (distance &amp;lt; 600000 &amp;amp;&amp;amp; distance&amp;gt;300000){countdown.style.color = "#F90";}else{countdown.style.color = "#060";}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;if (distance &amp;lt; 300000){&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;countdown.style.color = "#F00";&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;if (distance &amp;lt; 0 ) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;clearInterval( timer );&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;countdown.innerHTML = 'EXPIRED!';&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;return;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;var days = Math.floor(distance / _day);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;var hours = Math.floor( (distance % _day ) / _hour );&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;var minutes = Math.floor( (distance % _hour) / _minute );&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;var seconds = Math.floor( (distance % _minute) / _second );&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;var rec = Math.floor(distance/_second);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;countdown.innerHTML = '';&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;tst.duration = hours+":"+minutes+":"+seconds;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;countdown.innerHTML = "Time Left: ";&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;countdown.innerHTML +=  (hours&amp;gt;0)? hours+ ' Hr(s); ':'';&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;countdown.innerHTML +=  minutes+ ' Min; ';&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;countdown.innerHTML +=  seconds+' Sec;';&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;$scope.question.spent++;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;spent.style.color = "#060";&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;var fr = Math.floor(rec/($scope.res.length+2));&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;var ts = Math.floor(fr*document.getElementsByClassName("answered").length);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;var r = Math.floor(fr+ts);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;if ($scope.question.spent &amp;gt; (r/2) &amp;amp;&amp;amp; $scope.question.spent&amp;lt;r){spent.style.color = "#F90";}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;spent.innerHTML = $scope.question.spent;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;if($scope.question.spent &amp;gt; r){spent.style.color = "#FF3333";recd.style.color = "#FF3333";}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;recd.innerHTML =" It reccomended to spend "+r+" seconds per question.";&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #8e7cc3;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;timer = setInterval(showRemaining, 1000);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;$scope.getPageClass = function(p) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;var e='',a='';&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;if(p.selected){e="answered"}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;if($scope.question.id&amp;gt;p.id&amp;amp;&amp;amp;!p.selected){e="unanswered"}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;if($scope.question.id==p.id){a="inactive"}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;if($scope.question.id!=p.id){a="active"}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;return a+' '+e;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;$scope.serve($scope.pos);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;$scope.timer();&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;}]);
&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #3d85c6;"&gt;}(window,document));

&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
Have fun!
&lt;br /&gt;


</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh41n78HAATICLIIr3NxMsCEegmPXAd2WZhz83QP_hHWEpwdy7Rr1KA-WuQElgd2iFTCMo71APbxi1QbgPs2Jj_fjytGWRhBZSLEo863icOISMbRFJvqojXLWB83jyMuYnIHnTG6JqSRFIx/s72-c/9080607321ab98fa3e70dd24b2513a20.gif" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>noreply@blogger.com (TenEleven Inc.)</author></item></channel></rss>