<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7986013827740262174</id><updated>2026-09-21T04:49:32.174+05:30</updated><category term="Articles"/><category term="Linux"/><category term="Java"/><category term="Command"/><category term="Windows"/><category term="Hadoop"/><category term="Database"/><category term="EBooks"/><category term="Introduction"/><title type='text'>Harish Shan </title><subtitle type='html'>I&#39;m a Programmer,that&#39;s what I&#39;m</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>31</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-3670302483821418507</id><published>2025-01-04T00:11:00.004+05:30</published><updated>2025-01-04T00:11:53.260+05:30</updated><title type='text'>Tamil Pedia - Privacy Policy</title><content type='html'>&lt;style&gt;
  [data-custom-class=&#39;body&#39;], [data-custom-class=&#39;body&#39;] * {
          background: transparent !important;
        }
[data-custom-class=&#39;title&#39;], [data-custom-class=&#39;title&#39;] * {
          font-family: Arial !important;
font-size: 26px !important;
color: #000000 !important;
        }
[data-custom-class=&#39;subtitle&#39;], [data-custom-class=&#39;subtitle&#39;] * {
          font-family: Arial !important;
color: #595959 !important;
font-size: 14px !important;
        }
[data-custom-class=&#39;heading_1&#39;], [data-custom-class=&#39;heading_1&#39;] * {
          font-family: Arial !important;
font-size: 19px !important;
color: #000000 !important;
        }
[data-custom-class=&#39;heading_2&#39;], [data-custom-class=&#39;heading_2&#39;] * {
          font-family: Arial !important;
font-size: 17px !important;
color: #000000 !important;
        }
[data-custom-class=&#39;body_text&#39;], [data-custom-class=&#39;body_text&#39;] * {
          color: #595959 !important;
font-size: 14px !important;
font-family: Arial !important;
        }
[data-custom-class=&#39;link&#39;], [data-custom-class=&#39;link&#39;] * {
          color: #3030F1 !important;
font-size: 14px !important;
font-family: Arial !important;
word-break: break-word !important;
        }
&lt;/style&gt;
      &lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: initial; background-origin: initial; background-position: 50% 50%; background-repeat: no-repeat; background-size: initial; background: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNzgiIGhlaWdodD0iMzgiIHZpZXdCb3g9IjAgMCAxNzggMzgiPgogICAgPGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8cGF0aCBmaWxsPSIjRDFEMUQxIiBkPSJNNC4yODMgMjQuMTA3Yy0uNzA1IDAtMS4yNTgtLjI1Ni0xLjY2LS43NjhoLS4wODVjLjA1Ny41MDIuMDg2Ljc5Mi4wODYuODd2Mi40MzRILjk4NXYtOC42NDhoMS4zMzJsLjIzMS43NzloLjA3NmMuMzgzLS41OTQuOTUtLjg5MiAxLjcwMi0uODkyLjcxIDAgMS4yNjQuMjc0IDEuNjY1LjgyMi40MDEuNTQ4LjYwMiAxLjMwOS42MDIgMi4yODMgMCAuNjQtLjA5NCAxLjE5OC0uMjgyIDEuNjctLjE4OC40NzMtLjQ1Ni44MzMtLjgwMyAxLjA4LS4zNDcuMjQ3LS43NTYuMzctMS4yMjUuMzd6TTMuOCAxOS4xOTNjLS40MDUgMC0uNy4xMjQtLjg4Ni4zNzMtLjE4Ny4yNDktLjI4My42Ni0uMjkgMS4yMzN2LjE3N2MwIC42NDUuMDk1IDEuMTA3LjI4NyAxLjM4Ni4xOTIuMjguNDk1LjQxOS45MS40MTkuNzM0IDAgMS4xMDEtLjYwNSAxLjEwMS0xLjgxNiAwLS41OS0uMDktMS4wMzQtLjI3LTEuMzI5LS4xODItLjI5NS0uNDY1LS40NDMtLjg1Mi0uNDQzem01LjU3IDEuNzk0YzAgLjU5NC4wOTggMS4wNDQuMjkzIDEuMzQ4LjE5Ni4zMDQuNTEzLjQ1Ny45NTQuNDU3LjQzNyAwIC43NS0uMTUyLjk0Mi0uNDU0LjE5Mi0uMzAzLjI4OC0uNzUzLjI4OC0xLjM1MSAwLS41OTUtLjA5Ny0xLjA0LS4yOS0xLjMzOC0uMTk0LS4yOTctLjUxLS40NDUtLjk1LS40NDUtLjQzOCAwLS43NTMuMTQ3LS45NDYuNDQzLS4xOTQuMjk1LS4yOS43NDItLjI5IDEuMzR6bTQuMTUzIDBjMCAuOTc3LS4yNTggMS43NDItLjc3NCAyLjI5My0uNTE1LjU1Mi0xLjIzMy44MjctMi4xNTQuODI3LS41NzYgMC0xLjA4NS0uMTI2LTEuNTI1LS4zNzhhMi41MiAyLjUyIDAgMCAxLTEuMDE1LTEuMDg4Yy0uMjM3LS40NzMtLjM1NS0xLjAyNC0uMzU1LTEuNjU0IDAtLjk4MS4yNTYtMS43NDQuNzY4LTIuMjg4LjUxMi0uNTQ1IDEuMjMyLS44MTcgMi4xNi0uODE3LjU3NiAwIDEuMDg1LjEyNiAxLjUyNS4zNzYuNDQuMjUxLjc3OS42MSAxLjAxNSAxLjA4LjIzNi40NjkuMzU1IDEuMDE5LjM1NSAxLjY0OXpNMTkuNzEgMjRsLS40NjItMi4xLS42MjMtMi42NTNoLS4wMzdMMTcuNDkzIDI0SDE1LjczbC0xLjcwOC02LjAwNWgxLjYzM2wuNjkzIDIuNjU5Yy4xMS40NzYuMjI0IDEuMTMzLjMzOCAxLjk3MWguMDMyYy4wMTUtLjI3Mi4wNzctLjcwNC4xODgtMS4yOTRsLjA4Ni0uNDU3Ljc0Mi0yLjg3OWgxLjgwNGwuNzA0IDIuODc5Yy4wMTQuMDc5LjAzNy4xOTUuMDY3LjM1YTIwLjk5OCAyMC45OTggMCAwIDEgLjE2NyAxLjAwMmMuMDIzLjE2NS4wMzYuMjk5LjA0LjM5OWguMDMyYy4wMzItLjI1OC4wOS0uNjExLjE3Mi0xLjA2LjA4Mi0uNDUuMTQxLS43NTQuMTc3LS45MTFsLjcyLTIuNjU5aDEuNjA2TDIxLjQ5NCAyNGgtMS43ODN6bTcuMDg2LTQuOTUyYy0uMzQ4IDAtLjYyLjExLS44MTcuMzMtLjE5Ny4yMi0uMzEuNTMzLS4zMzguOTM3aDIuMjk5Yy0uMDA4LS40MDQtLjExMy0uNzE3LS4zMTctLjkzNy0uMjA0LS4yMi0uNDgtLjMzLS44MjctLjMzem0uMjMgNS4wNmMtLjk2NiAwLTEuNzIyLS4yNjctMi4yNjYtLjgtLjU0NC0uNTM0LS44MTYtMS4yOS0uODE2LTIuMjY3IDAtMS4wMDcuMjUxLTEuNzg1Ljc1NC0yLjMzNC41MDMtLjU1IDEuMTk5LS44MjUgMi4wODctLjgyNS44NDggMCAxLjUxLjI0MiAxLjk4Mi43MjUuNDcyLjQ4NC43MDkgMS4xNTIuNzA5IDIuMDA0di43OTVoLTMuODczYy4wMTguNDY1LjE1Ni44MjkuNDE0IDEuMDkuMjU4LjI2MS42Mi4zOTIgMS4wODUuMzkyLjM2MSAwIC43MDMtLjAzNyAxLjAyNi0uMTEzYTUuMTMzIDUuMTMzIDAgMCAwIDEuMDEtLjM2djEuMjY4Yy0uMjg3LjE0My0uNTkzLjI1LS45Mi4zMmE1Ljc5IDUuNzkgMCAwIDEtMS4xOTEuMTA0em03LjI1My02LjIyNmMuMjIyIDAgLjQwNi4wMTYuNTUzLjA0OWwtLjEyNCAxLjUzNmExLjg3NyAxLjg3NyAwIDAgMC0uNDgzLS4wNTRjLS41MjMgMC0uOTMuMTM0LTEuMjIyLjQwMy0uMjkyLjI2OC0uNDM4LjY0NC0uNDM4IDEuMTI4VjI0aC0xLjYzOHYtNi4wMDVoMS4yNGwuMjQyIDEuMDFoLjA4Yy4xODctLjMzNy40MzktLjYwOC43NTYtLjgxNGExLjg2IDEuODYgMCAwIDEgMS4wMzQtLjMwOXptNC4wMjkgMS4xNjZjLS4zNDcgMC0uNjIuMTEtLjgxNy4zMy0uMTk3LjIyLS4zMS41MzMtLjMzOC45MzdoMi4yOTljLS4wMDctLjQwNC0uMTEzLS43MTctLjMxNy0uOTM3LS4yMDQtLjIyLS40OC0uMzMtLjgyNy0uMzN6bS4yMyA1LjA2Yy0uOTY2IDAtMS43MjItLjI2Ny0yLjI2Ni0uOC0uNTQ0LS41MzQtLjgxNi0xLjI5LS44MTYtMi4yNjcgMC0xLjAwNy4yNTEtMS43ODUuNzU0LTIuMzM0LjUwNC0uNTUgMS4yLS44MjUgMi4wODctLjgyNS44NDkgMCAxLjUxLjI0MiAxLjk4Mi43MjUuNDczLjQ4NC43MDkgMS4xNTIuNzA5IDIuMDA0di43OTVoLTMuODczYy4wMTguNDY1LjE1Ni44MjkuNDE0IDEuMDkuMjU4LjI2MS42Mi4zOTIgMS4wODUuMzkyLjM2MiAwIC43MDQtLjAzNyAxLjAyNi0uMTEzYTUuMTMzIDUuMTMzIDAgMCAwIDEuMDEtLjM2djEuMjY4Yy0uMjg3LjE0My0uNTkzLjI1LS45MTkuMzJhNS43OSA1Ljc5IDAgMCAxLTEuMTkyLjEwNHptNS44MDMgMGMtLjcwNiAwLTEuMjYtLjI3NS0xLjY2My0uODIyLS40MDMtLjU0OC0uNjA0LTEuMzA3LS42MDQtMi4yNzggMC0uOTg0LjIwNS0xLjc1Mi42MTUtMi4zMDEuNDEtLjU1Ljk3NS0uODI1IDEuNjk1LS44MjUuNzU1IDAgMS4zMzIuMjk0IDEuNzI5Ljg4MWguMDU0YTYuNjk3IDYuNjk3IDAgMCAxLS4xMjQtMS4xOTh2LTEuOTIyaDEuNjQ0VjI0SDQ2LjQzbC0uMzE3LS43NzloLS4wN2MtLjM3Mi41OTEtLjk0Ljg4Ni0xLjcwMi44ODZ6bS41NzQtMS4zMDZjLjQyIDAgLjcyNi0uMTIxLjkyMS0uMzY1LjE5Ni0uMjQzLjMwMi0uNjU3LjMyLTEuMjR2LS4xNzhjMC0uNjQ0LS4xLTEuMTA2LS4yOTgtMS4zODYtLjE5OS0uMjc5LS41MjItLjQxOS0uOTctLjQxOWEuOTYyLjk2MiAwIDAgMC0uODUuNDY1Yy0uMjAzLjMxLS4zMDQuNzYtLjMwNCAxLjM1IDAgLjU5Mi4xMDIgMS4wMzUuMzA2IDEuMzMuMjA0LjI5Ni40OTYuNDQzLjg3NS40NDN6bTEwLjkyMi00LjkyYy43MDkgMCAxLjI2NC4yNzcgMS42NjUuODMuNC41NTMuNjAxIDEuMzEyLjYwMSAyLjI3NSAwIC45OTItLjIwNiAxLjc2LS42MiAyLjMwNC0uNDE0LjU0NC0uOTc3LjgxNi0xLjY5LjgxNi0uNzA1IDAtMS4yNTgtLjI1Ni0xLjY1OS0uNzY4aC0uMTEzbC0uMjc0LjY2MWgtMS4yNTF2LTguMzU3aDEuNjM4djEuOTQ0YzAgLjI0Ny0uMDIxLjY0My0uMDY0IDEuMTg3aC4wNjRjLjM4My0uNTk0Ljk1LS44OTIgMS43MDMtLjg5MnptLS41MjcgMS4zMWMtLjQwNCAwLS43LjEyNS0uODg2LjM3NC0uMTg2LjI0OS0uMjgzLjY2LS4yOSAxLjIzM3YuMTc3YzAgLjY0NS4wOTYgMS4xMDcuMjg3IDEuMzg2LjE5Mi4yOC40OTUuNDE5LjkxLjQxOS4zMzcgMCAuNjA1LS4xNTUuODA0LS40NjUuMTk5LS4zMS4yOTgtLjc2LjI5OC0xLjM1IDAtLjU5MS0uMS0xLjAzNS0uMy0xLjMzYS45NDMuOTQzIDAgMCAwLS44MjMtLjQ0M3ptMy4xODYtMS4xOTdoMS43OTRsMS4xMzQgMy4zNzljLjA5Ni4yOTMuMTYzLjY0LjE5OCAxLjA0MmguMDMzYy4wMzktLjM3LjExNi0uNzE3LjIzLTEuMDQybDEuMTEyLTMuMzc5aDEuNzU3bC0yLjU0IDYuNzczYy0uMjM0LjYyNy0uNTY2IDEuMDk2LS45OTcgMS40MDctLjQzMi4zMTItLjkzNi40NjgtMS41MTIuNDY4LS4yODMgMC0uNTYtLjAzLS44MzMtLjA5MnYtMS4zYTIuOCAyLjggMCAwIDAgLjY0NS4wN2MuMjkgMCAuNTQzLS4wODguNzYtLjI2Ni4yMTctLjE3Ny4zODYtLjQ0NC41MDgtLjgwM2wuMDk2LS4yOTUtMi4zODUtNS45NjJ6Ii8+CiAgICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzMpIj4KICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTkiIGN5PSIxOSIgcj0iMTkiIGZpbGw9IiNFMEUwRTAiLz4KICAgICAgICAgICAgPHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIyLjQ3NCAxNS40NDNoNS4xNjJMMTIuNDM2IDMwLjRWMTAuMzYzaDE1LjJsLTUuMTYyIDUuMDh6Ii8+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGZpbGw9IiNEMkQyRDIiIGQ9Ik0xMjEuNTQ0IDE0LjU2di0xLjcyOGg4LjI3MnYxLjcyOGgtMy4wMjRWMjRoLTIuMjR2LTkuNDRoLTMuMDA4em0xMy43NDQgOS41NjhjLTEuMjkgMC0yLjM0MS0uNDE5LTMuMTUyLTEuMjU2LS44MS0uODM3LTEuMjE2LTEuOTQ0LTEuMjE2LTMuMzJzLjQwOC0yLjQ3NyAxLjIyNC0zLjMwNGMuODE2LS44MjcgMS44NzItMS4yNCAzLjE2OC0xLjI0czIuMzYuNDAzIDMuMTkyIDEuMjA4Yy44MzIuODA1IDEuMjQ4IDEuODggMS4yNDggMy4yMjQgMCAuMzEtLjAyMS41OTctLjA2NC44NjRoLTYuNDY0Yy4wNTMuNTc2LjI2NyAxLjA0LjY0IDEuMzkyLjM3My4zNTIuODQ4LjUyOCAxLjQyNC41MjguNzc5IDAgMS4zNTUtLjMyIDEuNzI4LS45NmgyLjQzMmEzLjg5MSAzLjg5MSAwIDAgMS0xLjQ4OCAyLjA2NGMtLjczNi41MzMtMS42MjcuOC0yLjY3Mi44em0xLjQ4LTYuNjg4Yy0uNC0uMzUyLS44ODMtLjUyOC0xLjQ0OC0uNTI4cy0xLjAzNy4xNzYtMS40MTYuNTI4Yy0uMzc5LjM1Mi0uNjA1LjgyMS0uNjggMS40MDhoNC4xOTJjLS4wMzItLjU4Ny0uMjQ4LTEuMDU2LS42NDgtMS40MDh6bTcuMDE2LTIuMzA0djEuNTY4Yy41OTctMS4xMyAxLjQ2MS0xLjY5NiAyLjU5Mi0xLjY5NnYyLjMwNGgtLjU2Yy0uNjcyIDAtMS4xNzkuMTY4LTEuNTIuNTA0LS4zNDEuMzM2LS41MTIuOTE1LS41MTIgMS43MzZWMjRoLTIuMjU2di04Ljg2NGgyLjI1NnptNi40NDggMHYxLjMyOGMuNTY1LS45NyAxLjQ4My0xLjQ1NiAyLjc1Mi0xLjQ1Ni42NzIgMCAxLjI3Mi4xNTUgMS44LjQ2NC41MjguMzEuOTM2Ljc1MiAxLjIyNCAxLjMyOC4zMS0uNTU1LjczMy0uOTkyIDEuMjcyLTEuMzEyYTMuNDg4IDMuNDg4IDAgMCAxIDEuODE2LS40OGMxLjA1NiAwIDEuOTA3LjMzIDIuNTUyLjk5Mi42NDUuNjYxLjk2OCAxLjU5Ljk2OCAyLjc4NFYyNGgtMi4yNHYtNC44OTZjMC0uNjkzLS4xNzYtMS4yMjQtLjUyOC0xLjU5Mi0uMzUyLS4zNjgtLjgzMi0uNTUyLTEuNDQtLjU1MnMtMS4wOS4xODQtMS40NDguNTUyYy0uMzU3LjM2OC0uNTM2Ljg5OS0uNTM2IDEuNTkyVjI0aC0yLjI0di00Ljg5NmMwLS42OTMtLjE3Ni0xLjIyNC0uNTI4LTEuNTkyLS4zNTItLjM2OC0uODMyLS41NTItMS40NC0uNTUycy0xLjA5LjE4NC0xLjQ0OC41NTJjLS4zNTcuMzY4LS41MzYuODk5LS41MzYgMS41OTJWMjRoLTIuMjU2di04Ljg2NGgyLjI1NnpNMTY0LjkzNiAyNFYxMi4xNmgyLjI1NlYyNGgtMi4yNTZ6bTcuMDQtLjE2bC0zLjQ3Mi04LjcwNGgyLjUyOGwyLjI1NiA2LjMwNCAyLjM4NC02LjMwNGgyLjM1MmwtNS41MzYgMTMuMDU2aC0yLjM1MmwxLjg0LTQuMzUyeiIvPgogICAgPC9nPgo8L3N2Zz4K) center no-repeat; display: block; height: 2.375rem; margin: 0px auto 3.125rem; width: 11.125rem;&quot;&gt;&lt;/span&gt;

      &lt;div data-custom-class=&quot;body&quot;&gt;
      &lt;div&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 26px;&quot;&gt;&lt;span data-custom-class=&quot;title&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;bdt class=&quot;question&quot;&gt;PRIVACY POLICY&lt;/bdt&gt;&lt;bdt class=&quot;statement-end-if-in-editor&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;subtitle&quot;&gt;Last updated &lt;bdt class=&quot;question&quot;&gt;January 03, 2025&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;This Privacy Notice for &lt;bdt class=&quot;question&quot;&gt;Tamil Pedia&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/bdt&gt; (&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&#39;&lt;strong&gt;we&lt;/strong&gt;&#39;, &#39;&lt;strong&gt;us&lt;/strong&gt;&#39;, or &#39;&lt;strong&gt;our&lt;/strong&gt;&#39;&lt;bdt class=&quot;else-block&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;), describes how and why we might access, collect, store, use, and/or share (&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&#39;&lt;strong&gt;process&lt;/strong&gt;&#39;&lt;bdt class=&quot;else-block&quot;&gt;&lt;/bdt&gt;) your personal information when you use our services (&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&#39;&lt;strong&gt;Services&lt;/strong&gt;&#39;&lt;bdt class=&quot;else-block&quot;&gt;&lt;/bdt&gt;), including when you:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-custom-class=&quot;body_text&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;Download and use&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt; our mobile application&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt; (&lt;bdt class=&quot;question&quot;&gt;Tamil Pedia)&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;bdt class=&quot;statement-end-if-in-editor&quot;&gt;,&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;bdt class=&quot;statement-end-if-in-editor&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt; or any other application of ours that links to this Privacy Notice&lt;/bdt&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-custom-class=&quot;body_text&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;Engage with us in other related ways, including any sales, marketing, or events&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;bdt class=&quot;statement-end-if-in-editor&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;Questions or concerns?&amp;nbsp;&lt;/strong&gt;Reading this Privacy Notice will help you understand your privacy rights and choices. We are responsible for making decisions about how your personal information is processed. If you do not agree with our policies and practices, please do not use our Services.&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;heading_1&quot;&gt;SUMMARY OF KEY POINTS&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;&lt;em&gt;This summary provides key points from our Privacy Notice, but you can find out more details about any of these topics by clicking the link following each key point or by using our&amp;nbsp;&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;a data-custom-class=&quot;link&quot; href=&quot;#toc&quot;&gt;&lt;span style=&quot;color: #003afa; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;&lt;em&gt;table of contents&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp;below to find the section you are looking for.&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;What personal information do we process?&lt;/strong&gt; When you visit, use, or navigate our Services, we may process personal information depending on how you interact with us and the Services, the choices you make, and the products and features you use. Learn more about&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a data-custom-class=&quot;link&quot; href=&quot;#personalinfo&quot;&gt;&lt;span style=&quot;color: #003afa; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;personal information you disclose to us&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;Do we process any sensitive personal information?&amp;nbsp;&lt;/strong&gt;Some of the information may be considered &lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&#39;special&#39; or &#39;sensitive&#39;&lt;bdt class=&quot;else-block&quot;&gt;&lt;/bdt&gt; in certain jurisdictions, for example your racial or ethnic origins, sexual orientation, and religious beliefs. &lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;We do not process sensitive personal information.&lt;bdt class=&quot;else-block&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;Do we collect any information from third parties?&lt;/strong&gt; &lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;We do not collect any information from third parties.&lt;bdt class=&quot;else-block&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;How do we process your information?&lt;/strong&gt; We process your information to provide, improve, and administer our Services, communicate with you, for security and fraud prevention, and to comply with law. We may also process your information for other purposes with your consent. We process your information only when we have a valid legal reason to do so. Learn more about&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a data-custom-class=&quot;link&quot; href=&quot;#infouse&quot;&gt;&lt;span style=&quot;color: #003afa; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;how we process your information&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;In what situations and with which &lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;parties do we share personal information?&lt;/strong&gt; We may share information in specific situations and with specific &lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;third parties. Learn more about&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a data-custom-class=&quot;link&quot; href=&quot;#whoshare&quot;&gt;&lt;span style=&quot;color: #003afa; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;when and with whom we share your personal information&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;.&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;How do we keep your information safe?&lt;/strong&gt; We have adequate &lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;organisational&lt;bdt class=&quot;else-block&quot;&gt;&lt;/bdt&gt; and technical processes and procedures in place to protect your personal information. However, no electronic transmission over the internet or information storage technology can be guaranteed to be 100% secure, so we cannot promise or guarantee that hackers, cybercriminals, or other &lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;unauthorised&lt;bdt class=&quot;else-block&quot;&gt;&lt;/bdt&gt; third parties will not be able to defeat our security and improperly collect, access, steal, or modify your information. Learn more about&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a data-custom-class=&quot;link&quot; href=&quot;#infosafe&quot;&gt;&lt;span style=&quot;color: #003afa; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;how we keep your information safe&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;statement-end-if-in-editor&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;What are your rights?&lt;/strong&gt; Depending on where you are located geographically, the applicable privacy law may mean you have certain rights regarding your personal information. Learn more about&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a data-custom-class=&quot;link&quot; href=&quot;#privacyrights&quot;&gt;&lt;span style=&quot;color: #003afa; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;your privacy rights&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;How do you exercise your rights?&lt;/strong&gt; The easiest way to exercise your rights is by &lt;bdt class=&quot;block-component&quot;&gt;submitting a&amp;nbsp;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;a data-custom-class=&quot;link&quot; href=&quot;https://app.termly.io/notify/fdd15fcc-c06c-4d10-9910-5520d99f5be7&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #003afa; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;data subject access request&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;, or by contacting us. We will consider and act upon any request in accordance with applicable data protection laws.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;Want to learn more about what we do with any information we collect?&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a data-custom-class=&quot;link&quot; href=&quot;#toc&quot;&gt;&lt;span style=&quot;color: #003afa; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;Review the Privacy Notice in full&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id=&quot;toc&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;strong&gt;&lt;span data-custom-class=&quot;heading_1&quot;&gt;TABLE OF CONTENTS&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;a data-custom-class=&quot;link&quot; href=&quot;#infocollect&quot;&gt;&lt;span style=&quot;color: #003afa;&quot;&gt;1. WHAT INFORMATION DO WE COLLECT?&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;a data-custom-class=&quot;link&quot; href=&quot;#infouse&quot;&gt;&lt;span style=&quot;color: #003afa;&quot;&gt;2. HOW DO WE PROCESS YOUR INFORMATION?&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #003afa;&quot;&gt;&lt;a data-custom-class=&quot;link&quot; href=&quot;#whoshare&quot;&gt;3. WHEN AND WITH WHOM DO WE SHARE YOUR PERSONAL INFORMATION?&lt;/a&gt;&lt;/span&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;a data-custom-class=&quot;link&quot; href=&quot;#inforetain&quot;&gt;&lt;span style=&quot;color: #003afa;&quot;&gt;4. HOW LONG DO WE KEEP YOUR INFORMATION?&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;a data-custom-class=&quot;link&quot; href=&quot;#infosafe&quot;&gt;&lt;span style=&quot;color: #003afa;&quot;&gt;5. HOW DO WE KEEP YOUR INFORMATION SAFE?&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;bdt class=&quot;statement-end-if-in-editor&quot;&gt;&lt;/bdt&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;a data-custom-class=&quot;link&quot; href=&quot;#infominors&quot;&gt;&lt;span style=&quot;color: #003afa;&quot;&gt;6. DO WE COLLECT INFORMATION FROM MINORS?&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;bdt class=&quot;statement-end-if-in-editor&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #003afa;&quot;&gt;&lt;a data-custom-class=&quot;link&quot; href=&quot;#privacyrights&quot;&gt;7. WHAT ARE YOUR PRIVACY RIGHTS?&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;a data-custom-class=&quot;link&quot; href=&quot;#DNT&quot;&gt;&lt;span style=&quot;color: #003afa;&quot;&gt;8. CONTROLS FOR DO-NOT-TRACK FEATURES&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;a data-custom-class=&quot;link&quot; href=&quot;#policyupdates&quot;&gt;&lt;span style=&quot;color: #003afa;&quot;&gt;9. DO WE MAKE UPDATES TO THIS NOTICE?&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;a data-custom-class=&quot;link&quot; href=&quot;#contact&quot;&gt;&lt;span style=&quot;color: #003afa; font-size: 15px;&quot;&gt;10. HOW CAN YOU CONTACT US ABOUT THIS NOTICE?&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;a data-custom-class=&quot;link&quot; href=&quot;#request&quot;&gt;&lt;span style=&quot;color: #003afa;&quot;&gt;11. HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU?&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id=&quot;infocollect&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;color: black; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: black; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: black; font-size: 15px;&quot;&gt;&lt;span id=&quot;control&quot; style=&quot;color: black;&quot;&gt;&lt;strong&gt;&lt;span data-custom-class=&quot;heading_1&quot;&gt;1. WHAT INFORMATION DO WE COLLECT?&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id=&quot;personalinfo&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;span data-custom-class=&quot;heading_2&quot; style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;strong&gt;Personal information you disclose to us&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;&lt;em&gt;In Short:&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp;&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;We collect personal information that you provide to us.&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;We collect personal information that you voluntarily provide to us when you &lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;express an interest in obtaining information about us or our products and Services, when you participate in activities on the Services, or otherwise when you contact us.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id=&quot;sensitiveinfo&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;Sensitive Information.&lt;/strong&gt; &lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;We do not process sensitive information.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;else-block&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;All personal information that you provide to us must be true, complete, and accurate, and you must notify us of any changes to such personal information.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;statement-end-if-in-editor&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id=&quot;infouse&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span id=&quot;control&quot; style=&quot;color: black;&quot;&gt;&lt;strong&gt;&lt;span data-custom-class=&quot;heading_1&quot;&gt;2. HOW DO WE PROCESS YOUR INFORMATION?&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;&lt;em&gt;In Short:&amp;nbsp;&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;We process your information to provide, improve, and administer our Services, communicate with you, for security and fraud prevention, and to comply with law. We may also process your information for other purposes with your consent.&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;We process your personal information for a variety of reasons, depending on how you interact with our Services, including:&lt;/strong&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;p style=&quot;font-size: 15px; line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/p&gt;&lt;p style=&quot;font-size: 15px; line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/p&gt;&lt;p style=&quot;font-size: 15px; line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/p&gt;&lt;p style=&quot;font-size: 15px; line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/p&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id=&quot;whoshare&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span id=&quot;control&quot; style=&quot;color: black;&quot;&gt;&lt;strong&gt;&lt;span data-custom-class=&quot;heading_1&quot;&gt;3. WHEN AND WITH WHOM DO WE SHARE YOUR PERSONAL INFORMATION?&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;&lt;em&gt;In Short:&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;&amp;nbsp;We may share information in specific situations described in this section and/or with the following &lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;third parties.&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;We &lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;may need to share your personal information in the following situations:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-custom-class=&quot;body_text&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;Business Transfers.&lt;/strong&gt; We may share or transfer your information in connection with, or during negotiations of, any merger, sale of company assets, financing, or acquisition of all or a portion of our business to another company.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;bdt class=&quot;statement-end-if-in-editor&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span data-custom-class=&quot;heading_1&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id=&quot;inforetain&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span id=&quot;control&quot; style=&quot;color: black;&quot;&gt;&lt;strong&gt;&lt;span data-custom-class=&quot;heading_1&quot;&gt;4. HOW LONG DO WE KEEP YOUR INFORMATION?&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;&lt;em&gt;In Short:&amp;nbsp;&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;We keep your information for as long as necessary to &lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;fulfil&lt;bdt class=&quot;else-block&quot;&gt;&lt;/bdt&gt; the purposes outlined in this Privacy Notice unless otherwise required by law.&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;We will only keep your personal information for as long as it is necessary for the purposes set out in this Privacy Notice, unless a longer retention period is required or permitted by law (such as tax, accounting, or other legal requirements).&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;When we have no ongoing legitimate business need to process your personal information, we will either delete or &lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;anonymise&lt;bdt class=&quot;else-block&quot;&gt;&lt;/bdt&gt; such information, or, if this is not possible (for example, because your personal information has been stored in backup archives), then we will securely store your personal information and isolate it from any further processing until deletion is possible.&lt;span style=&quot;color: #595959;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id=&quot;infosafe&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span id=&quot;control&quot; style=&quot;color: black;&quot;&gt;&lt;strong&gt;&lt;span data-custom-class=&quot;heading_1&quot;&gt;5. HOW DO WE KEEP YOUR INFORMATION SAFE?&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;&lt;em&gt;In Short:&amp;nbsp;&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;We aim to protect your personal information through a system of &lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;organisational&lt;bdt class=&quot;else-block&quot;&gt;&lt;/bdt&gt; and technical security measures.&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;We have implemented appropriate and reasonable technical and &lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;organisational&lt;bdt class=&quot;else-block&quot;&gt;&lt;/bdt&gt; security measures designed to protect the security of any personal information we process. However, despite our safeguards and efforts to secure your information, no electronic transmission over the Internet or information storage technology can be guaranteed to be 100% secure, so we cannot promise or guarantee that hackers, cybercriminals, or other &lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;unauthorised&lt;bdt class=&quot;else-block&quot;&gt;&lt;/bdt&gt; third parties will not be able to defeat our security and improperly collect, access, steal, or modify your information. Although we will do our best to protect your personal information, transmission of personal information to and from our Services is at your own risk. You should only access the Services within a secure environment.&lt;span style=&quot;color: #595959;&quot;&gt;&lt;bdt class=&quot;statement-end-if-in-editor&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id=&quot;infominors&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span id=&quot;control&quot; style=&quot;color: black;&quot;&gt;&lt;strong&gt;&lt;span data-custom-class=&quot;heading_1&quot;&gt;6. DO WE COLLECT INFORMATION FROM MINORS?&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;&lt;em&gt;In Short:&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;&amp;nbsp;We do not knowingly collect data from or market to &lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;children under 18 years of age&lt;bdt class=&quot;else-block&quot;&gt;&lt;/bdt&gt;.&lt;/em&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;We do not knowingly collect, solicit data from, or market to children under 18 years of age, nor do we knowingly sell such personal information. By using the Services, you represent that you are at least 18 or that you are the parent or guardian of such a minor and consent to such minor dependent’s use of the Services. If we learn that personal information from users less than 18 years of age has been collected, we will deactivate the account and take reasonable measures to promptly delete such data from our records. If you become aware of any data we may have collected from children under age 18, please contact us at &lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;bdt class=&quot;question&quot;&gt;__________&lt;/bdt&gt;&lt;bdt class=&quot;else-block&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;.&lt;/span&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;else-block&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id=&quot;privacyrights&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span id=&quot;control&quot; style=&quot;color: black;&quot;&gt;&lt;strong&gt;&lt;span data-custom-class=&quot;heading_1&quot;&gt;7. WHAT ARE YOUR PRIVACY RIGHTS?&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;&lt;em&gt;In Short:&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;&amp;nbsp;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;em&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;You may review, change, or terminate your account at any time, depending on your country, province, or state of residence.&lt;/em&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id=&quot;withdrawconsent&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;strong&gt;&lt;u&gt;Withdrawing your consent:&lt;/u&gt;&lt;/strong&gt; If we are relying on your consent to process your personal information,&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt; which may be express and/or implied consent depending on the applicable law,&lt;bdt class=&quot;statement-end-if-in-editor&quot;&gt;&lt;/bdt&gt; you have the right to withdraw your consent at any time. You can withdraw your consent at any time by contacting us by using the contact details provided in the section &lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&#39;&lt;bdt class=&quot;else-block&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a data-custom-class=&quot;link&quot; href=&quot;#contact&quot;&gt;&lt;span style=&quot;color: #003afa; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #003afa; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;HOW CAN YOU CONTACT US ABOUT THIS NOTICE?&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&#39;&lt;bdt class=&quot;else-block&quot;&gt;&lt;/bdt&gt; below&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;However, please note that this will not affect the lawfulness of the processing before its withdrawal nor,&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt; when applicable law allows,&lt;bdt class=&quot;statement-end-if-in-editor&quot;&gt;&lt;/bdt&gt; will it affect the processing of your personal information conducted in reliance on lawful processing grounds other than consent.&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id=&quot;DNT&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span id=&quot;control&quot; style=&quot;color: black;&quot;&gt;&lt;strong&gt;&lt;span data-custom-class=&quot;heading_1&quot;&gt;8. CONTROLS FOR DO-NOT-TRACK FEATURES&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;Most web browsers and some mobile operating systems and mobile applications include a Do-Not-Track (&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&#39;DNT&#39;&lt;bdt class=&quot;else-block&quot;&gt;&lt;/bdt&gt;) feature or setting you can activate to signal your privacy preference not to have data about your online browsing activities monitored and collected. At this stage, no uniform technology standard for &lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;recognising&lt;bdt class=&quot;else-block&quot;&gt;&lt;/bdt&gt; and implementing DNT signals has been &lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;finalised&lt;bdt class=&quot;else-block&quot;&gt;&lt;/bdt&gt;. As such, we do not currently respond to DNT browser signals or any other mechanism that automatically communicates your choice not to be tracked online. If a standard for online tracking is adopted that we must follow in the future, we will inform you about that practice in a revised version of this Privacy Notice.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id=&quot;policyupdates&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span id=&quot;control&quot; style=&quot;color: black;&quot;&gt;&lt;strong&gt;&lt;span data-custom-class=&quot;heading_1&quot;&gt;9. DO WE MAKE UPDATES TO THIS NOTICE?&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;em&gt;&lt;strong&gt;In Short:&amp;nbsp;&lt;/strong&gt;Yes, we will update this notice as necessary to stay compliant with relevant laws.&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;We may update this Privacy Notice from time to time. The updated version will be indicated by an updated &lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&#39;Revised&#39;&lt;bdt class=&quot;else-block&quot;&gt;&lt;/bdt&gt; date at the top of this Privacy Notice. If we make material changes to this Privacy Notice, we may notify you either by prominently posting a notice of such changes or by directly sending you a notification. We encourage you to review this Privacy Notice frequently to be informed of how we are protecting your information.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id=&quot;contact&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span id=&quot;control&quot; style=&quot;color: black;&quot;&gt;&lt;strong&gt;&lt;span data-custom-class=&quot;heading_1&quot;&gt;10. HOW CAN YOU CONTACT US ABOUT THIS NOTICE?&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;If you have questions or comments about this notice, you may &lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/bdt&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;contact us by post at:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;question&quot;&gt;Tamil Pedia&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;question&quot;&gt;153 N.K.Ganapathy Street, &lt;/bdt&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot; style=&quot;font-size: 15px;&quot;&gt;&lt;bdt class=&quot;question&quot;&gt;Anna Nagar, &lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;bdt class=&quot;statement-end-if-in-editor&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;question&quot;&gt;Kanchipuram&lt;/bdt&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;, &lt;bdt class=&quot;question&quot;&gt;Tamil Nadu&lt;/bdt&gt;&lt;bdt class=&quot;statement-end-if-in-editor&quot;&gt;&lt;/bdt&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt; &lt;bdt class=&quot;question&quot;&gt;631501&lt;/bdt&gt;&lt;bdt class=&quot;statement-end-if-in-editor&quot;&gt;&lt;/bdt&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;bdt class=&quot;question&quot;&gt;India&lt;/bdt&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;bdt class=&quot;statement-end-if-in-editor&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;bdt class=&quot;statement-end-if-in-editor&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;bdt class=&quot;statement-end-if-in-editor&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;bdt class=&quot;statement-end-if-in-editor&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;bdt class=&quot;statement-end-if-in-editor&quot;&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;bdt class=&quot;statement-end-if-in-editor&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;statement-end-if-in-editor&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id=&quot;request&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #7f7f7f;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span id=&quot;control&quot; style=&quot;color: black;&quot;&gt;&lt;strong&gt;&lt;span data-custom-class=&quot;heading_1&quot;&gt;11. HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU?&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span style=&quot;color: #595959; font-size: 15px;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;Based on the applicable laws of your country&lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;, you may&lt;bdt class=&quot;else-block&quot;&gt;&lt;bdt class=&quot;block-component&quot;&gt; have the right to request access to the personal information we collect from you, details about how we have processed it, correct inaccuracies, or delete your personal information. You may also have the right to &lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;withdraw your consent to our processing of your personal information. These rights may be limited in some circumstances by applicable law. To request to review, update, or delete your personal information, please &lt;bdt class=&quot;block-component&quot;&gt;&lt;/bdt&gt;fill out and submit a&amp;nbsp;&lt;/bdt&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;span style=&quot;color: #003afa;&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;span style=&quot;color: #003afa; font-size: 15px;&quot;&gt;&lt;a data-custom-class=&quot;link&quot; href=&quot;https://app.termly.io/notify/fdd15fcc-c06c-4d10-9910-5520d99f5be7&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;data subject access request&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;bdt class=&quot;block-component&quot;&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;&lt;/span&gt;&lt;/bdt&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-custom-class=&quot;body_text&quot;&gt;.&lt;/span&gt;&lt;/div&gt;&lt;style&gt;
      ul {
        list-style-type: square;
      }
      ul &gt; li &gt; ul {
        list-style-type: circle;
      }
      ul &gt; li &gt; ul &gt; li &gt; ul {
        list-style-type: square;
      }
      ol li {
        font-family: Arial ;
      }
    &lt;/style&gt;
      
      </content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/3670302483821418507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2025/01/tamil-pedia-privacy-policy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/3670302483821418507'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/3670302483821418507'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2025/01/tamil-pedia-privacy-policy.html' title='Tamil Pedia - Privacy Policy'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-4015900087266833774</id><published>2019-08-10T23:32:00.000+05:30</published><updated>2019-08-15T10:17:54.128+05:30</updated><title type='text'>Virtual Reality</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
The term &quot;Virtual Reality&quot;(Shortly called as VR) was first coined by an American computer scientist Jaron Lanier who founded VRL Research Inc in the 1980s to sell the first VR Goggles. Virtual Reality is an artificial environment that is created with software which creates a sensory experience of virtual presence in the simulated world. At present many industries started using VR as part of their applications. The VR was just fiction till the last decade, but today it becomes possible and affordable to everyone with the evolution and integration of the following technologies.
&lt;br /&gt;
&lt;dl style=&quot;text-align: left;&quot;&gt;
&lt;dt&gt;1. 360° Camera&lt;/dt&gt;
&lt;dd&gt;We need a special camera which can capture 360° or at-least 190° since we have a maximum of 190° horizontal Field of View(FOV) by both of our two eyes, we have approximately 120° FOV for binocular vision(seen by both eyes together) and 135° FOV for vertical range of the visual fields. There are many 360° cameras available on the market and it does not require much technical knowledge to use this camera. The following are some popular 360° cameras currently available in the online market
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://www.amazon.in/gp/offer-listing/B07GXBYYWN/ref=as_li_tl?ie=UTF8&amp;amp;camp=3638&amp;amp;creative=24630&amp;amp;creativeASIN=B07GXBYYWN&amp;amp;linkCode=am2&amp;amp;tag=harishshan-21&amp;amp;linkId=2e5a9cfc60c3263831b7e2a51bea6f95&quot; target=&quot;_blank&quot;&gt;Insta360 ONE X(recommended)&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;//ir-in.amazon-adsystem.com/e/ir?t=harishshan-21&amp;amp;l=am2&amp;amp;o=31&amp;amp;a=B07GXBYYWN&quot; style=&quot;border: none !important; margin: 0px !important;&quot; width=&quot;1&quot; /&gt;/&lt;a href=&quot;https://www.amazon.in/gp/offer-listing/B07PMH3MXQ/ref=as_li_tl?ie=UTF8&amp;amp;camp=3638&amp;amp;creative=24630&amp;amp;creativeASIN=B07PMH3MXQ&amp;amp;linkCode=am2&amp;amp;tag=harishshan-21&amp;amp;linkId=0b16da6d329f0db92c513d5f885e0178&quot; target=&quot;_blank&quot;&gt;Insta360 EVO&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;//ir-in.amazon-adsystem.com/e/ir?t=harishshan-21&amp;amp;l=am2&amp;amp;o=31&amp;amp;a=B07PMH3MXQ&quot; style=&quot;border: none !important; margin: 0px !important;&quot; width=&quot;1&quot; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.amazon.in/gp/offer-listing/B0792MJLNM/ref=as_li_tl?ie=UTF8&amp;amp;camp=3638&amp;amp;creative=24630&amp;amp;creativeASIN=B0792MJLNM&amp;amp;linkCode=am2&amp;amp;tag=harishshan-21&amp;amp;linkId=39a5dc14c1640ad6d78d164eb3a89b34&quot; target=&quot;_blank&quot;&gt;GoPro Fusion&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;//ir-in.amazon-adsystem.com/e/ir?t=harishshan-21&amp;amp;l=am2&amp;amp;o=31&amp;amp;a=B0792MJLNM&quot; style=&quot;border: none !important; margin: 0px !important;&quot; width=&quot;1&quot; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.amazon.in/gp/offer-listing/B074W5BKYS/ref=as_li_tl?ie=UTF8&amp;amp;camp=3638&amp;amp;creative=24630&amp;amp;creativeASIN=B074W5BKYS&amp;amp;linkCode=am2&amp;amp;tag=harishshan-21&amp;amp;linkId=f2418e3fbc085b444e2a06b9327e1f4b&quot; target=&quot;_blank&quot;&gt;Ricoh Theta V&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;//ir-in.amazon-adsystem.com/e/ir?t=harishshan-21&amp;amp;l=am2&amp;amp;o=31&amp;amp;a=B074W5BKYS&quot; style=&quot;border: none !important; margin: 0px !important;&quot; width=&quot;1&quot; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.amazon.in/gp/offer-listing/B07J68LR1X/ref=as_li_tl?ie=UTF8&amp;amp;camp=3638&amp;amp;creative=24630&amp;amp;creativeASIN=B07J68LR1X&amp;amp;linkCode=am2&amp;amp;tag=harishshan-21&amp;amp;linkId=0cd9d9cf179946b804b56aa0c4ce926c&quot; target=&quot;_blank&quot;&gt;Vuze XR&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;//ir-in.amazon-adsystem.com/e/ir?t=harishshan-21&amp;amp;l=am2&amp;amp;o=31&amp;amp;a=B07J68LR1X&quot; style=&quot;border: none !important; margin: 0px !important;&quot; width=&quot;1&quot; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.amazon.in/gp/offer-listing/B071YR4729/ref=as_li_tl?ie=UTF8&amp;amp;camp=3638&amp;amp;creative=24630&amp;amp;creativeASIN=B071YR4729&amp;amp;linkCode=am2&amp;amp;tag=harishshan-21&amp;amp;linkId=ea5d7a42d252c82f35f5bd036c315639&quot; target=&quot;_blank&quot;&gt;Garmin Virb 360&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;//ir-in.amazon-adsystem.com/e/ir?t=harishshan-21&amp;amp;l=am2&amp;amp;o=31&amp;amp;a=B071YR4729&quot; style=&quot;border: none !important; margin: 0px !important;&quot; width=&quot;1&quot; /&gt;&lt;/li&gt;
&lt;/ol&gt;
Apart from the above expensive cameras, there are few apps(such as Google Street View and Cardboard Camera) available in both Andriod and iOS which will help us to capture 360° photos.
&lt;br /&gt;
I have used Insta360 ONE X to capture my 360° Videos and Photos&lt;/dd&gt;
&lt;dt&gt;2. Smartphone&lt;/dt&gt;
&lt;dd&gt;A display device which can play video as binocular mode(side by side) and it should be placed 2&quot; closer to our eyes, which means the device should not be more than 6.5&quot; of screen size. Smart Phones with gyroscope sensor&amp;nbsp;has the capability of tracking our head movement and play the video according. Moreover, the smartphone should have the VR media player to play the 360° video in Binocular mode.&lt;/dd&gt;
&lt;dt&gt;3. VR Headset&lt;/dt&gt;
&lt;dd&gt;If smartphones are 2&quot; close to our eyes, we can&#39;t enjoy the VR experience, for that we need VR Headsets to see the video played by smartphones with the help of magnifying lenses to see the wide-angle. There are plenty of VR headsets are available in the market, Moreover Google has published the standard procedure to create our own(DIY) VR headsets in the name of Google Cardboard. The wide-angles of the VR headsets(maximum angle ability to experience the VR) are measured in FOV.
The following are some popular VR headsets available in the online market
&lt;ol&gt;
&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://www.amazon.in/gp/offer-listing/B07DMZQF37/ref=as_li_tl?ie=UTF8&amp;camp=3638&amp;creative=24630&amp;creativeASIN=B07DMZQF37&amp;linkCode=am2&amp;tag=harishshan-21&amp;linkId=99b1b8b85e1c2435468e22913cf34134&quot;&gt;Cool BUDDYZZ Vr Box 3D Virtual Reality Vr Glasses&lt;/a&gt;&lt;img src=&quot;//ir-in.amazon-adsystem.com/e/ir?t=harishshan-21&amp;l=am2&amp;o=31&amp;a=B07DMZQF37&quot; width=&quot;1&quot; height=&quot;1&quot; border=&quot;0&quot; alt=&quot;&quot; style=&quot;border:none !important; margin:0px !important;&quot; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://www.amazon.in/gp/offer-listing/B076CRNKL7/ref=as_li_tl?ie=UTF8&amp;camp=3638&amp;creative=24630&amp;creativeASIN=B076CRNKL7&amp;linkCode=am2&amp;tag=harishshan-21&amp;linkId=4cac84185080af3987be72bfada919e6&quot;&gt;Ocular Grand Fully Adjustable VR Headset With Inbuilt Headphones &amp;amp; 42MM PMMA Lenses (White)&lt;/a&gt;&lt;img src=&quot;//ir-in.amazon-adsystem.com/e/ir?t=harishshan-21&amp;l=am2&amp;o=31&amp;a=B076CRNKL7&quot; width=&quot;1&quot; height=&quot;1&quot; border=&quot;0&quot; alt=&quot;&quot; style=&quot;border:none !important; margin:0px !important;&quot; /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/dd&gt;
&lt;/dl&gt;
As already stated the evolution and integration of 360° camera, Smartphones with gyroscope and VR Headset made VR experience possible today. But in the Telugu (Indian Language) film &quot;9 Nelalu&quot; released in 2001, a scene is about VR  in which it will describe how the VR experience is like.
&lt;br /&gt;
In this particular scene, the hero returned home very late on his wedding day so that he cannot take his wife to the temple. But he will take his wife to the temple via VR, wearing a VR headset. &lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Find the link for the particular scene 
&lt;iframe allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/XKwwpvTCRqY?start=2235&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;b&gt;DIY Simplified Google Cardboards&lt;/b&gt;
&lt;b&gt;Required Material:&lt;/b&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Cardboard&lt;/li&gt;
&lt;li&gt;Chart&lt;/li&gt;
&lt;li&gt;Scale&lt;/li&gt;
&lt;li&gt;Pen/Pencil&lt;/li&gt;
&lt;li&gt;Staplers/Glue&lt;/li&gt;
&lt;li&gt;Pair of the lens with 45mm focal length and 37mm diameter&lt;/li&gt;
&lt;/ol&gt;
&lt;b&gt;Note: &lt;/b&gt;The 25mm diameter lenses were used in Google cardboard v1.0 but Google cardboard v2 uses 37mm diameter lenses. The diameter and the focal length of the lens matters, so be conscious while buying the lens.&lt;br /&gt;
I am using &lt;a href=&quot;https://www.amazon.in/gp/offer-listing/B01L414YBY/ref=as_li_tl?ie=UTF8&amp;amp;camp=3638&amp;amp;creative=24630&amp;amp;creativeASIN=B01L414YBY&amp;amp;linkCode=am2&amp;amp;tag=harishshan-21&amp;amp;linkId=48b52975a3fbdc6ae00954045d8a111b&quot; target=&quot;_blank&quot;&gt;BAIRN ART 37mm Google Cardboard VR Lenses (Pack of 2)&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;//ir-in.amazon-adsystem.com/e/ir?t=harishshan-21&amp;amp;l=am2&amp;amp;o=31&amp;amp;a=B01L414YBY&quot; style=&quot;border: none !important; margin: 0px !important;&quot; width=&quot;1&quot; /&gt; for this Google Cardboard
&lt;br /&gt;
Let&#39;s note the following parameters and measurements for 6.3&quot; Screen smart phones
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Screen to lens distance: 45mm (same as focal length)&lt;/li&gt;
&lt;li&gt;Inter lens diameter: 70mm&lt;/li&gt;
&lt;li&gt;The thickness of the phone: 10mm&lt;/li&gt;
&lt;li&gt;Phone Dimensions: 150mm x 73mm&lt;/li&gt;
&lt;li&gt;Display Dimension: 140mm x 70mm&lt;/li&gt;
&lt;/ol&gt;
Now we are ready to draw the following diagram on the chart with the measurement as given below.
&lt;a href=&quot;https://svgshare.com/s/EUY&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;803&quot; data-original-width=&quot;1600&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiZtSh5EXcqlEzPackS4IgL5rPyf7XJSfDdpiaBgDXTfR_hQdnz7WxHqmhHdVi9QCcg8Y7jmbDyu7ADkG5PLM8y2rYMYr7OMHujQks2lHarwpJK_rrIP4eLzOTCscwAEw8MdJG_oNnxks/s640/EUY.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Where&lt;/h3&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;The dimension of the side part is 80mm x 80mm as the phone size is 73mm, So derived the height of the side part as 80mm*80mm&lt;/li&gt;
&lt;li&gt;The length of the top and bottom part of the cardboard should be 145mm as the phone dimension is 150mm x 73mm and screen dimension is 140mm x 70mm, so we derived the length of as 145mm (in between of 140mm and 150mm) and width as 80mm as same side part&lt;/li&gt;
&lt;li&gt;Normal human face width is around 100mm so the curve length should be 125mm&lt;/li&gt;
&lt;li&gt;The distance between pupils is 60mm so the inter lenses diameter as 70mm and lens center point should be at the middle of the cardboard.&lt;/li&gt;
&lt;li&gt;Since the phone thickness is 10mm, we have given 15mm space for that&lt;/li&gt;
&lt;/ol&gt;
Draw the above diagram on the chart first to create the design template and cut the cardboard with the help of a template. Something like below but as per your phone measurement.&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1f1FTOdb5BCXQIwh0BzglITAzOlDPcIF26XN7jG-wwIuHaz7iS3R4TMtWJDx2iNnOfyaVQv6moUnH6qN1zz-Hpf2vA6-rh6F3bydLvcTEX2YYC7mbNDaUvO04RIeCaaTPW8LgokMQhYU/s1600/IMG_20190804_230826.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1200&quot; data-original-width=&quot;1600&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1f1FTOdb5BCXQIwh0BzglITAzOlDPcIF26XN7jG-wwIuHaz7iS3R4TMtWJDx2iNnOfyaVQv6moUnH6qN1zz-Hpf2vA6-rh6F3bydLvcTEX2YYC7mbNDaUvO04RIeCaaTPW8LgokMQhYU/s640/IMG_20190804_230826.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;
Once the cardboard is cut, fold the card as VR headset and glue it with glue or stapler, and place the lens card 45 mm away from the phone.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMxT0j7JCdX-loQ5KaAbRpilyPQ8PZb8Sa-AYl8pN39lDfzM6juJ_nzianIIuUF6su_7l_NZp3mbpHr-DNbUMyTMdmJS-NdarMhXfJY5DWo0dT-TvTMgJMuHF6TRSLKgs5BIoFKL_uS58/s1600/20190813_211343.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1161&quot; data-original-width=&quot;1600&quot; height=&quot;464&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMxT0j7JCdX-loQ5KaAbRpilyPQ8PZb8Sa-AYl8pN39lDfzM6juJ_nzianIIuUF6su_7l_NZp3mbpHr-DNbUMyTMdmJS-NdarMhXfJY5DWo0dT-TvTMgJMuHF6TRSLKgs5BIoFKL_uS58/s640/20190813_211343.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Now our simplified Google Cardboard(VR headset) is ready. Now we can darshan Athi Varadar via our Google Cardboard prepared and Google Cardboard app installed on our smartphone.
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/IyNadWSFh0c&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/4015900087266833774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2019/08/virtual-reality.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/4015900087266833774'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/4015900087266833774'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2019/08/virtual-reality.html' title='Virtual Reality'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/XKwwpvTCRqY/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-8444504367480764753</id><published>2019-08-01T22:20:00.005+05:30</published><updated>2023-05-14T08:07:55.749+05:30</updated><title type='text'>Athi Varadar</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhztE1wWbgYMa9bLAaPh2OcRHtBps9qbEhIe6gIBze9ntfB9A_xdw1fwn13QoX_wOVa0o-eg_c5zFUCql4eN74Vtr3xcLpuYvn3xNWZ5ZJYCHKAK5Q8gjPKgHrrsNgcYA_E3NCGD7YO4e_KFJJrQPP8IFG6oVk15e-cCPDkQVpzGMOtgygi_cda_hgV/s720/july1_5.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;554&quot; data-original-width=&quot;720&quot; height=&quot;203&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhztE1wWbgYMa9bLAaPh2OcRHtBps9qbEhIe6gIBze9ntfB9A_xdw1fwn13QoX_wOVa0o-eg_c5zFUCql4eN74Vtr3xcLpuYvn3xNWZ5ZJYCHKAK5Q8gjPKgHrrsNgcYA_E3NCGD7YO4e_KFJJrQPP8IFG6oVk15e-cCPDkQVpzGMOtgygi_cda_hgV/w640-h203/july1_5.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Athi Varadar 360&lt;span style=&quot;background-color: white; color: #4d5156; font-family: arial, sans-serif; font-size: 14px;&quot;&gt;°&lt;/span&gt;&amp;nbsp;Photo&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Donar Pass View
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;600&quot; src=&quot;https://www.google.com/maps/embed?pb=!4v1564917953728!6m8!1m7!1sCAoSLEFGMVFpcFBHbmtfb05uYkc0VlVYWDVINm41TmlOa0JKanlCOHUtWTNvcm1E!2m2!1d12.8188184!2d79.72390539999999!3f220!4f20!5f0.7820865974627469&quot; style=&quot;border: 0;&quot; width=&quot;800&quot;&gt;&lt;/iframe&gt;
Free Darshan View
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;600&quot; src=&quot;https://www.google.com/maps/embed?pb=!4v1564918281759!6m8!1m7!1sCAoSLEFGMVFpcE1mSWRfNS1iX0dwRW5EV0RnMk4wRGh5dHBWZzlFa3QtUUlUNm11!2m2!1d12.8188184!2d79.72390539999999!3f0!4f0!5f0.7820865974627469&quot; style=&quot;border: 0;&quot; width=&quot;800&quot;&gt;&lt;/iframe&gt;&lt;/h3&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/8444504367480764753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2019/08/athi-varadar.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/8444504367480764753'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/8444504367480764753'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2019/08/athi-varadar.html' title='Athi Varadar'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhztE1wWbgYMa9bLAaPh2OcRHtBps9qbEhIe6gIBze9ntfB9A_xdw1fwn13QoX_wOVa0o-eg_c5zFUCql4eN74Vtr3xcLpuYvn3xNWZ5ZJYCHKAK5Q8gjPKgHrrsNgcYA_E3NCGD7YO4e_KFJJrQPP8IFG6oVk15e-cCPDkQVpzGMOtgygi_cda_hgV/s72-w640-h203-c/july1_5.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-5749098971448759498</id><published>2018-07-18T18:34:00.001+05:30</published><updated>2018-07-18T18:40:30.016+05:30</updated><title type='text'>How to fix Kindle wrong time left in chapter book</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script defer=&quot;&quot; src=&quot;https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js?autoload=true&amp;amp;skin=sunburst&amp;amp;lang=css&quot;&gt;&lt;/script&gt;
The most of kindle reader use the time left in chapter or time left in book options provided at left bottom of the page to estimate completing the book or the current chapter. But sometimes it was not&amp;nbsp; accurate and displaying 5 min left in chapter instead of 30 min left in chapter. To fix this issue just type &lt;pre class=&quot;prettyprint lang-html&quot;&gt;;ReadingTimeReset&lt;/pre&gt; at search field and enter. Kindly refer the photo for the same.
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2aZ0WnkQ_WH0c76_ENW0JJW46QoXXKkZu3oXmU1q2P9cMV5CHQXSuec8wHTbtFh-O-2qR_CBmxDuzVcXp-T_mD55pSQfMoG4cVLv2mVafQVxtXG0rC7IxvKUiCuH7nm-UfsazAZuiNvA/s1600/IMG_20180718_183051.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1600&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2aZ0WnkQ_WH0c76_ENW0JJW46QoXXKkZu3oXmU1q2P9cMV5CHQXSuec8wHTbtFh-O-2qR_CBmxDuzVcXp-T_mD55pSQfMoG4cVLv2mVafQVxtXG0rC7IxvKUiCuH7nm-UfsazAZuiNvA/s640/IMG_20180718_183051.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/5749098971448759498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2018/07/how-to-fix-kindle-wrong-time-left-in.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/5749098971448759498'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/5749098971448759498'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2018/07/how-to-fix-kindle-wrong-time-left-in.html' title='How to fix Kindle wrong time left in chapter book'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2aZ0WnkQ_WH0c76_ENW0JJW46QoXXKkZu3oXmU1q2P9cMV5CHQXSuec8wHTbtFh-O-2qR_CBmxDuzVcXp-T_mD55pSQfMoG4cVLv2mVafQVxtXG0rC7IxvKUiCuH7nm-UfsazAZuiNvA/s72-c/IMG_20180718_183051.jpg" height="72" width="72"/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-6694348827779297127</id><published>2018-07-03T20:16:00.000+05:30</published><updated>2018-10-08T22:33:43.269+05:30</updated><title type='text'>Git</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script src=&quot;https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js?autoload=true&amp;amp;skin=sunburst&amp;amp;lang=css&quot;&gt;
&lt;/script&gt;

&lt;br /&gt;
&lt;div align=&quot;justify&quot;&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;Git is&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: left;&quot;&gt;free and open source&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: left;&quot;&gt;Distributed Version Control System (DVCS).&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: left;&quot;&gt;Git was created by Linux Torvalds in 2005 for the development&amp;nbsp;of Linux Kernel,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: left;&quot;&gt;with other kernel developers contributing to its initial development. Its current maintainer since 2005 is Junio Hamano.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;Git is responsible for keeping track of changes to content usually source code files.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: left;&quot;&gt;It is designed to handle everything from small to very large projects with speed and efficiency.&lt;/span&gt;&lt;span style=&quot;text-align: left;&quot;&gt;&amp;nbsp;It provides mechanisms for sharing that content with others.&lt;/span&gt;&lt;span style=&quot;text-align: left;&quot;&gt;&amp;nbsp;It helps software developers to work simultaneously and maintaining history of every version.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;This post will help to on board Git from basics to professional level.&lt;/span&gt;&lt;br /&gt;
&lt;h3&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;Centralized Version Control System vs Distributed Version Control System&lt;/span&gt;&lt;/h3&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;&lt;b&gt;Centralized Version Control System&lt;/b&gt; uses a central server to store all files and enables team collaborations. It works on a single repository to which users can directly access a&amp;nbsp; central server.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;h3&gt;
Repository Management&lt;/h3&gt;
At Git, We manage our projects at repository. Git provides wide flexibility to manage our code. The following diagram represents the&amp;nbsp;&lt;span style=&quot;text-align: left;&quot;&gt;user repository strategy&lt;/span&gt;&lt;span style=&quot;text-align: left;&quot;&gt;&amp;nbsp;one of the most adopted method for managing repository.&lt;/span&gt;&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzWm3s_EhOh7H_MBsyTO9rYYkMIuC4DKOHt5sUjwpb4cZcenRnaGwcgzC7UJd7r55d68acIaG7y_IVNCLzZ0J30ArDYKYDEUszJsw7v5Rvxt3ge2BF7ildHciu9pCDDk-6Squ5p8ZOQ5k/s1600/userRepo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;573&quot; data-original-width=&quot;587&quot; height=&quot;624&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzWm3s_EhOh7H_MBsyTO9rYYkMIuC4DKOHt5sUjwpb4cZcenRnaGwcgzC7UJd7r55d68acIaG7y_IVNCLzZ0J30ArDYKYDEUszJsw7v5Rvxt3ge2BF7ildHciu9pCDDk-6Squ5p8ZOQ5k/s640/userRepo.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Git User Strategy&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div align=&quot;justify&quot;&gt;
At &#39;Git User Strategy&#39; we will have a master remote repository which should have master branch, release branch and develop branch where master branch should contain live code, release branch should contain&amp;nbsp; QA code and develop code will contain all the valid code merged from user remote repository.&lt;br /&gt;
&lt;br /&gt;
Each user should fork from the master repository and create copy as user remote repository, Then they will clone from the user remote repository to their local machine and start working.&lt;br /&gt;
&lt;h3&gt;
Create Organization &amp;amp; Repository&lt;/h3&gt;
&lt;/div&gt;
&lt;ol style=&quot;text-align: justify;&quot;&gt;
&lt;li&gt;We need to create the master remote repository under organization at any of the Git platforms such as &lt;a href=&quot;http://github.com/&quot;&gt;GitHub&lt;/a&gt;, &lt;a href=&quot;https://bitbucket.org/&quot;&gt;BitBucket&lt;/a&gt;, &lt;a href=&quot;https://gitlab.com/&quot;&gt;GitLab&lt;/a&gt;, etc. All the below examples are bases on&amp;nbsp;GitHub, so do sign up at GitHub and have a GitHub user account account ready.&lt;/li&gt;
&lt;li&gt;Create organization from &lt;a href=&quot;https://github.com/organizations/new&quot;&gt;https://github.com/organizations/new&lt;/a&gt; where give some unique name for the organization from the created GitHub user account. Here &quot;harishshanblogspot&quot; is the organization name.&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEin8cOzK62fX1wzfX33VeuhGiyzj9ufh1WjoyZxJJ_7HO6ffqfr85acPotJ3cRTI92GjGKLymSGJiJEravfZMabtg-Z5YP6E3gFDBPvEw_j21eKBPXvoDeOc0vIGnd0KiSO-vTtNdEbueY/s1600/neworganisation.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;795&quot; data-original-width=&quot;628&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEin8cOzK62fX1wzfX33VeuhGiyzj9ufh1WjoyZxJJ_7HO6ffqfr85acPotJ3cRTI92GjGKLymSGJiJEravfZMabtg-Z5YP6E3gFDBPvEw_j21eKBPXvoDeOc0vIGnd0KiSO-vTtNdEbueY/s640/neworganisation.PNG&quot; width=&quot;504&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Creating Organization&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh877f6pKFh5SDPXns-JsBqnK1QLK55HpyjP42JAFVdP8sNBMzyuM2cxsy2gKSUo59KbB9iCpbNDIxSQhsBeCl1SazJCekezNokeUEkaBWuYV3F_bFsrOfiOAyFczIPai6gWUCViZ-eL_Y/s1600/inviteteammemeber.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;601&quot; data-original-width=&quot;1253&quot; height=&quot;306&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh877f6pKFh5SDPXns-JsBqnK1QLK55HpyjP42JAFVdP8sNBMzyuM2cxsy2gKSUo59KbB9iCpbNDIxSQhsBeCl1SazJCekezNokeUEkaBWuYV3F_bFsrOfiOAyFczIPai6gWUCViZ-eL_Y/s640/inviteteammemeber.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Inviting organization members&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Create master remote repository from the created organization. Here &quot;example&quot; is the master remote repository name.&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsdlHXGxa8m_9NsRp83rB1FMEl-WEOZx4ZIJtWYNsmFHEt8vRh3FpaeFKJNrbqX9gxjF1uf731bWUuSqUcN3jMR3M01HTCTZLnPfFM9__UVoANc1gZYAMbdXlcvBSyQRudpwGLT5aJY3k/s1600/createRepository.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;730&quot; data-original-width=&quot;1277&quot; height=&quot;227&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsdlHXGxa8m_9NsRp83rB1FMEl-WEOZx4ZIJtWYNsmFHEt8vRh3FpaeFKJNrbqX9gxjF1uf731bWUuSqUcN3jMR3M01HTCTZLnPfFM9__UVoANc1gZYAMbdXlcvBSyQRudpwGLT5aJY3k/s400/createRepository.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxsbspOAplGSUz09RvWSaBbYrHwgK1PO_ZEnpJxd8EcfG3VpYlngFTaqRo9FmUSFRaN3Kw_LISkYoXQonTUV5nOlI6_rSh1iVw3kyuvmdIQFoF7oCPNlgdyJmAd5GSEHWFSVgfnV4EKjs/s1600/createRepository.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;914&quot; data-original-width=&quot;1287&quot; height=&quot;283&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxsbspOAplGSUz09RvWSaBbYrHwgK1PO_ZEnpJxd8EcfG3VpYlngFTaqRo9FmUSFRaN3Kw_LISkYoXQonTUV5nOlI6_rSh1iVw3kyuvmdIQFoF7oCPNlgdyJmAd5GSEHWFSVgfnV4EKjs/s400/createRepository.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Then all the users work on the project should fork from the master remote repository to create their user forked remote repository.&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheg7qZit2BCaO-4ZI9PyG1bqSCkzEeifovx2hdesAwFYrvi0XqsQwVe8PhiwxPR009MS-xrpkTnTe7JXS_gVfCDJ53pLUGCB3Fkky7Eo7hkBtC-NQ8X40d0FKU-meVTQWobHcWUt5jdVo/s1600/fork.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;510&quot; data-original-width=&quot;1288&quot; height=&quot;157&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheg7qZit2BCaO-4ZI9PyG1bqSCkzEeifovx2hdesAwFYrvi0XqsQwVe8PhiwxPR009MS-xrpkTnTe7JXS_gVfCDJ53pLUGCB3Fkky7Eo7hkBtC-NQ8X40d0FKU-meVTQWobHcWUt5jdVo/s400/fork.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Once we have created the master remote repository and created forked user remote repository at GitHub. We can start working on our project from our local machine, The following example shows how to install Git, configure Git user account and start working on git commands from Windows.&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Install Git at Windows
&lt;/h3&gt;
&lt;div&gt;
&lt;ol style=&quot;text-align: justify;&quot;&gt;
&lt;li&gt;Download Git from &lt;a href=&quot;https://git-scm.com/download/win&quot;&gt;https://git-scm.com/download/win&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Run the downloaded Git setup for installing Git&lt;/li&gt;
&lt;li&gt;While installing make sure the following configurations
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisUYMXBi1hOo5Kk36F_R_ms8x_09C7TbeQa_dyn4HM2rQ1Mo07eiX7m4ttVgPVcJCqNwq2iOsJM7U2-w3DKQsPuenKEzqY3ZH8lIhvWMajNP1_Ao9vk_PIp_rvQMcKPMzNdBEIMuJDhIE/s1600/Git_Installation_4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;
&lt;img border=&quot;0&quot; data-original-height=&quot;402&quot; data-original-width=&quot;514&quot; height=&quot;312&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisUYMXBi1hOo5Kk36F_R_ms8x_09C7TbeQa_dyn4HM2rQ1Mo07eiX7m4ttVgPVcJCqNwq2iOsJM7U2-w3DKQsPuenKEzqY3ZH8lIhvWMajNP1_Ao9vk_PIp_rvQMcKPMzNdBEIMuJDhIE/s400/Git_Installation_4.png&quot; width=&quot;400&quot; /&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;To use Git commands from windows command prompt
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ94lx7U-Q6WgHYEnoDjXEnvBn01Ih6K4g94_cEX4GXxcyqYuA_UhtcTbBhVz5ByiViIBLrgW1CjU8TniXgOmQqLqsZ4SGKDyr8kgcV6w4VgRAVyoeG68bvhqIbtdgNz9eh8Atewklofk/s1600/Git_Installation_5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;
&lt;img border=&quot;0&quot; data-original-height=&quot;402&quot; data-original-width=&quot;514&quot; height=&quot;312&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ94lx7U-Q6WgHYEnoDjXEnvBn01Ih6K4g94_cEX4GXxcyqYuA_UhtcTbBhVz5ByiViIBLrgW1CjU8TniXgOmQqLqsZ4SGKDyr8kgcV6w4VgRAVyoeG68bvhqIbtdgNz9eh8Atewklofk/s400/Git_Installation_5.png&quot; width=&quot;400&quot; /&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;To use OpenSSL Library for validating certificates
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZicT52fwoEODGTwEcvxzZk6iaSZTIv442DhHMxH-pvPpNTJHz4tefWq7w7lMQW1XFuk_x5qeF3jFau7sFeYG1UJ144xMHATWy2IbQUCgQkWPywHHs-H60b5LRHkqOiMWGOijH-ymHIqI/s1600/Git_Installation_6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;
&lt;img border=&quot;0&quot; data-original-height=&quot;402&quot; data-original-width=&quot;514&quot; height=&quot;312&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZicT52fwoEODGTwEcvxzZk6iaSZTIv442DhHMxH-pvPpNTJHz4tefWq7w7lMQW1XFuk_x5qeF3jFau7sFeYG1UJ144xMHATWy2IbQUCgQkWPywHHs-H60b5LRHkqOiMWGOijH-ymHIqI/s400/Git_Installation_6.png&quot; width=&quot;400&quot; /&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;**Always use &quot;Checkout windows-style, commit Unix-style line ending&quot; to avoid CRLF issues while team is using different Operating-systems.
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_yQ9hDewXzT04FTcpLMIRjxW_bzFi3x6ONoCPhyLHMqel93azfAVnkVRoUVcKOloT2PJidc76sBdSGgY7FgW4qd6147kklKKsDIQ0oL9WPaBmEr-H1CS5osdPbYdzFXmy34cnGf8QQqQ/s1600/Git_Installation_7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;
&lt;img border=&quot;0&quot; data-original-height=&quot;402&quot; data-original-width=&quot;514&quot; height=&quot;312&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_yQ9hDewXzT04FTcpLMIRjxW_bzFi3x6ONoCPhyLHMqel93azfAVnkVRoUVcKOloT2PJidc76sBdSGgY7FgW4qd6147kklKKsDIQ0oL9WPaBmEr-H1CS5osdPbYdzFXmy34cnGf8QQqQ/s400/Git_Installation_7.png&quot; width=&quot;400&quot; /&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCjuLoEP5GLRLFkM8aW43DWHiwUI314TOHbrqTQmxKbiKf-F1qSn4_LfMXDa_6O9p4FQcvzIxCiKwikbgafcRRvh1P9yPjQROHfYtWGD6k8kbYfeCw2ttYAYj69UnCI8m0stH5erJurTM/s1600/Git_Installation_8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;
&lt;img border=&quot;0&quot; data-original-height=&quot;402&quot; data-original-width=&quot;514&quot; height=&quot;312&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCjuLoEP5GLRLFkM8aW43DWHiwUI314TOHbrqTQmxKbiKf-F1qSn4_LfMXDa_6O9p4FQcvzIxCiKwikbgafcRRvh1P9yPjQROHfYtWGD6k8kbYfeCw2ttYAYj69UnCI8m0stH5erJurTM/s400/Git_Installation_8.png&quot; width=&quot;400&quot; /&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Concepts Of Git:&lt;/h3&gt;
&lt;div&gt;
Repositories, Branches, Remotes, Committing, Pushing, Pulling, Merging, Rebasing, Reverting and Cherry-Picking&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Concepts of GitHub&lt;/b&gt;:&lt;/div&gt;
&lt;div&gt;
Pull-Requests, Issues, Wiki, Forking, Remote Repositories, Gist&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Simple Git Commands&lt;/h3&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
git config&lt;/h3&gt;
&lt;div align=&quot;justify&quot;&gt;
We need to configure the GitHub user account with user name and email address of created GitHub account. The following is the syntax for configuring user name and email, Where we need to replace the username and email-address with the created GitHub account.&lt;/div&gt;
&lt;pre class=&quot;prettyprint lang-bsh&quot;&gt;git config --global user.name &amp;lt;username&amp;gt;
git config --global user.email &amp;lt;email-address&amp;gt;
&lt;/pre&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
git clone&lt;/h3&gt;
&lt;div align=&quot;justify&quot;&gt;
Clone the created the project, the following is the example of &#39;&lt;i&gt;git clone&lt;/i&gt;&#39; command used to clone the repository at our local machine. This command can be executed at local machine git workspace directory where we want to clone the repository. Where&amp;nbsp;&lt;span style=&quot;text-align: left;&quot;&gt;git@github.com:harishshan/example.git is the user remote repository&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;prettyprint lang-bsh&quot;&gt;git clone git@github.com:harishshan/example.git&amp;nbsp;&lt;/pre&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
git status&lt;/h3&gt;
&lt;div&gt;
The &#39;&lt;i&gt;git status&lt;/i&gt;&#39; command will display the status and recommend us the next step.&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;pre class=&quot;prettyprint lang-bsh&quot; style=&quot;font-weight: 400;&quot;&gt;git status&lt;/pre&gt;
&lt;/h3&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
git add &amp;amp; git commit&lt;/h3&gt;
&lt;div align=&quot;justify&quot;&gt;
The &#39;&lt;i&gt;git add&lt;/i&gt;&#39; command is used to add un-tracked modification/new file to staging from working area. This one helps us to segregate which changes are effective, we can ignore the rest of the changes are working area.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRB9FXtORUd1J23gF4gjIfiq5LFJY4yuw3ysTZxv9_nxS3e_qNkuB9wIM8vzGcHdnlbz532Hm6drb4OJs_h0ioqh6zENWx2oN4BZKlgrVL1qf0saeeJUAKceMnYyqzQ4y1Eygf_c3QAHM/s1600/git-staging-area.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;194&quot; data-original-width=&quot;336&quot; height=&quot;184&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRB9FXtORUd1J23gF4gjIfiq5LFJY4yuw3ysTZxv9_nxS3e_qNkuB9wIM8vzGcHdnlbz532Hm6drb4OJs_h0ioqh6zENWx2oN4BZKlgrVL1qf0saeeJUAKceMnYyqzQ4y1Eygf_c3QAHM/s320/git-staging-area.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
The syntax of &#39;&lt;i&gt;git add&lt;/i&gt;&#39; command for adding files by relative file path
&lt;/div&gt;
&lt;pre class=&quot;prettyprint lang-bsh&quot;&gt;git add &amp;lt;file1&amp;gt; &amp;lt;file2&amp;gt;
&lt;/pre&gt;
&lt;div align=&quot;justify&quot;&gt;
The following command can be used when we want to add all the changes from working directory to staging&lt;/div&gt;
&lt;pre class=&quot;prettyprint lang-bsh&quot;&gt;git add .
&lt;/pre&gt;
&lt;div align=&quot;justify&quot;&gt;
The &#39;&lt;i&gt;git commit&lt;/i&gt;&#39; command is used to record our changes to the local repository. All the files added at staging area will be moved when we do &#39;&lt;i&gt;git commit&lt;/i&gt;&#39;. For each commit, git will return a unique commit id of length 40. Where -m parameter is mandatory used to mention the commit message&lt;/div&gt;
&lt;pre class=&quot;prettyprint lang-bsh&quot;&gt;git commit -m &quot;Commit Message&quot;&lt;/pre&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
git push&lt;/h3&gt;
&lt;div align=&quot;justify&quot;&gt;
The &#39;&lt;i&gt;git push&lt;/i&gt;&#39; command is used to push the committed changes from the local machine repository to upstream. By default it will be pushed to origin remote repository and current branch.&lt;/div&gt;
&lt;pre class=&quot;prettyprint lang-bsh&quot; style=&quot;font-weight: 400;&quot;&gt;git push&lt;/pre&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
git pull&lt;/h3&gt;
&lt;div align=&quot;justify&quot;&gt;
The &#39;&lt;i&gt;git pull&lt;/i&gt;&#39; command is used to pull the committed changes from the upstream to&amp;nbsp;&lt;span style=&quot;text-align: left;&quot;&gt;local machine repository&lt;/span&gt;&lt;span style=&quot;text-align: left;&quot;&gt;. By default it will be pulled from the&amp;nbsp; origin remote repository and current branch.&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;prettyprint lang-bsh&quot; style=&quot;font-weight: 400;&quot;&gt;git pull&lt;/pre&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
git remote&lt;/h3&gt;
&lt;div align=&quot;justify&quot;&gt;
The &#39;git remote&#39; command used to manage the remote repositories. The following command is used to list the remote repositories added for the current local repositories.
&lt;/div&gt;
&lt;pre class=&quot;prettyprint lang-bsh&quot;&gt;git remote -v&lt;/pre&gt;
&lt;div align=&quot;justify&quot;&gt;
The following command is used to add the upstream remote repositories. We already cloned from the user remote repository and now we adding Master remote repository. Where&amp;nbsp;&lt;span style=&quot;text-align: left;&quot;&gt;git@github.com:harishshanblogspot/example.git is the Master remote repository. We can verify the added remote repositories using the &#39;&lt;i&gt;git remote -v&lt;/i&gt;&#39;.&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;prettyprint lang-bsh&quot;&gt;git remote add parent git@github.com:harishshanblogspot/example.git&lt;/pre&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Git Use-cases&lt;/h3&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;Still Editing&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/6694348827779297127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2018/07/git.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/6694348827779297127'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/6694348827779297127'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2018/07/git.html' title='Git'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzWm3s_EhOh7H_MBsyTO9rYYkMIuC4DKOHt5sUjwpb4cZcenRnaGwcgzC7UJd7r55d68acIaG7y_IVNCLzZ0J30ArDYKYDEUszJsw7v5Rvxt3ge2BF7ildHciu9pCDDk-6Squ5p8ZOQ5k/s72-c/userRepo.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-3521244875886363746</id><published>2017-07-16T21:18:00.001+05:30</published><updated>2018-07-04T12:32:24.162+05:30</updated><title type='text'>How to use Google Code Prettify</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script defer=&quot;&quot; src=&quot;https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js?autoload=true&amp;amp;skin=sunburst&amp;amp;lang=css&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
&lt;div align=&quot;justify&quot;&gt;
This post is about how can we use Google Code Prettify to highlight the code which is displayed in my blog. Google Code Prettify is a simple lightweight embeddable java script library. Find the steps below for how to use Google Code Prettify.&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
Step 1: Add run_prettify.js script and any one of skin styles(sunburt&lt;/h4&gt;
&lt;pre class=&quot;prettyprint lang-html linenums&quot;&gt;&amp;lt;script src=&quot;https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js?autoload=true&amp;amp;skin=sunburst&amp;amp;lang=css&quot; defer=&quot;&quot;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/pre&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
Step 2: Use pre tag for representing our code as follows. The following is the example of html code highlighter.
&lt;/h4&gt;
&lt;pre class=&quot;prettyprint lang-html linenums&quot;&gt;&amp;lt;pre class=&quot;prettyprint lang-html linenums&quot;&amp;gt;
list of statements
&amp;lt;/pre&amp;gt;
&lt;/pre&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
List of Skin Styles
&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/prettify.css&quot;&gt;Default&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/styles/desert.css&quot;&gt;Desert&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/styles/sunburst.css&quot;&gt;SunBurst&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/styles/sons-of-obsidian.css&quot;&gt;Sons-Of-Obsidian&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/styles/doxy.css&quot;&gt;Doxy&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
List of built-in languages supported&lt;/h4&gt;
&lt;div&gt;
bsh, c, cc, cpp, cs, csh, cyc, cv, htm, html, java, js, m, mxml, perl, pl, pm, py, rb, sh, xhtml, xml and xsl&lt;/div&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
List of additional language supported
&lt;/h4&gt;
&lt;div align=&quot;justify&quot;&gt;
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-apollo.js&quot;&gt;Apollo&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-basic.js&quot;&gt;Basic&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-clj.js&quot;&gt;Clojure&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-css.js&quot;&gt;CSS&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-dart.js&quot;&gt;Dart&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-erlang.js&quot;&gt;Erlang&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-go.js&quot;&gt;Go&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-hs.js&quot;&gt;Haskell&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-lasso.js&quot;&gt;Lasso&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-lisp.js&quot;&gt;Lisp, Scheme&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-llvm.js&quot;&gt;LLVM&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-logtalk.js&quot;&gt;Logtal&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-lua.js&quot;&gt;Lua&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-matlab.js&quot;&gt;MATLAB&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-ml.js&quot;&gt;MLs: F#, Ocaml,SML&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-mumps.js&quot;&gt;Mumps&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-n.js&quot;&gt;Nemerle&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-pascal.js&quot;&gt;Pascal&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-proto.js&quot;&gt;Protocol buffers&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-r.js&quot;&gt;R, S&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-rd.js&quot;&gt;RD&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-rust.js&quot;&gt;Rust&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-scala.js&quot;&gt;Scala&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-sql.js&quot;&gt;SQL&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-swift.js&quot;&gt;Swift&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-tcl.js&quot;&gt;TCL&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-tex.js&quot;&gt;LaTeX&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-vb.js&quot;&gt;Visual Basic&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-vhdl.js&quot;&gt;VHDL&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-wiki.js&quot;&gt;Wiki&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-xq.js&quot;&gt;XQ&lt;/a&gt;,
&lt;a href=&quot;https://github.com/google/code-prettify/blob/master/src/lang-yaml.js&quot;&gt;YAML&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
For Reference: &lt;a href=&quot;https://github.com/google/code-prettify&quot;&gt;https://github.com/google/code-prettify&lt;/a&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/3521244875886363746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2017/07/how-to-use-google-code-prettify.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/3521244875886363746'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/3521244875886363746'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2017/07/how-to-use-google-code-prettify.html' title='How to use Google Code Prettify'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-3318106255285655480</id><published>2017-06-22T15:56:00.000+05:30</published><updated>2018-05-02T19:41:54.073+05:30</updated><title type='text'>Base 64 Encode &amp; Decode</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css&quot; integrity=&quot;sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm&quot; crossorigin=&quot;anonymous&quot;&gt;
&lt;style&gt;
.container {
    max-width: 100%;
}
&lt;/style&gt;
&lt;p align=&quot;justify&quot;&gt;
This post is about Base64 encoding and decoding. Base64 is a group of similar Binary-to-text encoding schemes that represent binary data in an ASCII string format by translating it into a radix-64 representation. The atob() and btoa() JavaScript methods, defined in the HTML5 draft specification, provide Base64 encoding and decoding functionality to web pages.&lt;/p&gt;
&lt;div class=&quot;form-group&quot;&gt;
&lt;textarea class=&quot;form-control&quot; id=&quot;originalData&quot; rows=&quot;15&quot;&gt;&lt;/textarea&gt;
&lt;br /&gt;
&lt;div align=&quot;center&quot;&gt;
&lt;button class=&quot;btn btn-success&quot; onclick=&quot;encode();&quot;&gt;Encode&lt;/button&gt;
&lt;button class=&quot;btn btn-primary&quot; onclick=&quot;decode();&quot;&gt;Decode&lt;/button&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;textarea class=&quot;form-control&quot; id=&quot;encodedOrDecodedData&quot; rows=&quot;15&quot;&gt;&lt;/textarea&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
function encode(){
  var originalData = document.getElementById(&quot;originalData&quot;).value;
  document.getElementById(&quot;encodedOrDecodedData&quot;).value = btoa(originalData);
}
function decode(){
  var originalData = document.getElementById(&quot;originalData&quot;).value;
  document.getElementById(&quot;encodedOrDecodedData&quot;).value = atob(originalData);
}
&lt;/script&gt;
GitHub Link: &lt;a href=&quot;https://github.com/harishshan/Tools/blob/master/Base64EncodeDecode.html&quot;&gt;https://github.com/harishshan/Tools/blob/master/Base64EncodeDecode.html&lt;/a&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/3318106255285655480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2017/06/base-64-encode-decode.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/3318106255285655480'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/3318106255285655480'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2017/06/base-64-encode-decode.html' title='Base 64 Encode &amp; Decode'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-5443133809845966564</id><published>2017-06-22T15:49:00.002+05:30</published><updated>2018-05-02T19:51:03.581+05:30</updated><title type='text'>JSON Viewer</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css&quot; integrity=&quot;sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm&quot; crossorigin=&quot;anonymous&quot;&gt;
&lt;style&gt;
.container {
    max-width: 100%;
}
&lt;/style&gt;
&lt;script src=&quot;https://code.jquery.com/jquery-2.2.4.min.js&quot; integrity=&quot;sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=&quot; crossorigin=&quot;anonymous&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;application/javascript&quot;&gt;
(function($){
  function isCollapsable(arg) {
    return arg instanceof Object &amp;&amp; Object.keys(arg).length &gt; 0;
  }
  function isUrl(string) {
     var regexp = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&amp;%@!\-\/]))?/;
     return regexp.test(string);
  }
  function json2html(json, options) {
    var html = &#39;&#39;;
    if (typeof json === &#39;string&#39;) {
      json = json.replace(/&amp;/g, &#39;&amp;amp;&#39;).replace(/&lt;/g, &#39;&amp;lt;&#39;).replace(/&gt;/g, &#39;&amp;gt;&#39;);
      if (isUrl(json))
        html += &#39;&lt;a href=&quot;&#39; + json + &#39;&quot; class=&quot;json-string&quot;&gt;&#39; + json + &#39;&lt;/a&gt;&#39;;
      else
        html += &#39;&lt;span class=&quot;json-string&quot;&gt;&quot;&#39; + json + &#39;&quot;&lt;/span&gt;&#39;;
    }
    else if (typeof json === &#39;number&#39;) {
      html += &#39;&lt;span class=&quot;json-literal&quot;&gt;&#39; + json + &#39;&lt;/span&gt;&#39;;
    }
    else if (typeof json === &#39;boolean&#39;) {
      html += &#39;&lt;span class=&quot;json-literal&quot;&gt;&#39; + json + &#39;&lt;/span&gt;&#39;;
    }
    else if (json === null) {
      html += &#39;&lt;span class=&quot;json-literal&quot;&gt;null&lt;/span&gt;&#39;;
    }
    else if (json instanceof Array) {
      if (json.length &gt; 0) {
        html += &#39;[&lt;ol class=&quot;json-array&quot;&gt;&#39;;
        for (var i = 0; i &lt; json.length; ++i) {
          html += &#39;&lt;li&gt;&#39;;
          if (isCollapsable(json[i])) {
            html += &#39;&lt;a href class=&quot;json-toggle&quot;&gt;&lt;/a&gt;&#39;;
          }
          html += json2html(json[i], options);
          if (i &lt; json.length - 1) {
            html += &#39;,&#39;;
          }
          html += &#39;&lt;/li&gt;&#39;;
        }
        html += &#39;&lt;/ol&gt;]&#39;;
      }
      else {
        html += &#39;[]&#39;;
      }
    }
    else if (typeof json === &#39;object&#39;) {
      var key_count = Object.keys(json).length;
      if (key_count &gt; 0) {
        html += &#39;{&lt;ul class=&quot;json-dict&quot;&gt;&#39;;
        for (var key in json) {
          if (json.hasOwnProperty(key)) {
            html += &#39;&lt;li&gt;&#39;;
            var keyRepr = options.withQuotes ?
              &#39;&lt;span class=&quot;json-string&quot;&gt;&quot;&#39; + key + &#39;&quot;&lt;/span&gt;&#39; : key;
            if (isCollapsable(json[key])) {
              html += &#39;&lt;a href class=&quot;json-toggle&quot;&gt;&#39; + keyRepr + &#39;&lt;/a&gt;&#39;;
            }
            else {
              html += keyRepr;
            }
            html += &#39;: &#39; + json2html(json[key], options);
            if (--key_count &gt; 0)
              html += &#39;,&#39;;
            html += &#39;&lt;/li&gt;&#39;;
          }
        }
        html += &#39;&lt;/ul&gt;}&#39;;
      }
      else {
        html += &#39;{}&#39;;
      }
    }
    return html;
  }
  $.fn.jsonViewer = function(json, options) {
    options = options || {};
    return this.each(function() {
      var html = json2html(json, options);
      if (isCollapsable(json))
        html = &#39;&lt;a href class=&quot;json-toggle&quot;&gt;&lt;/a&gt;&#39; + html;
      $(this).html(html);
      $(this).off(&#39;click&#39;);
      $(this).on(&#39;click&#39;, &#39;a.json-toggle&#39;, function() {
        var target = $(this).toggleClass(&#39;collapsed&#39;).siblings(&#39;ul.json-dict, ol.json-array&#39;);
        target.toggle();
        if (target.is(&#39;:visible&#39;)) {
          target.siblings(&#39;.json-placeholder&#39;).remove();
        }
        else {
          var count = target.children(&#39;li&#39;).length;
          var placeholder = count + (count &gt; 1 ? &#39; items&#39; : &#39; item&#39;);
          target.after(&#39;&lt;a href class=&quot;json-placeholder&quot;&gt;&#39; + placeholder + &#39;&lt;/a&gt;&#39;);
        }
        return false;
      });
      $(this).on(&#39;click&#39;, &#39;a.json-placeholder&#39;, function() {
        $(this).siblings(&#39;a.json-toggle&#39;).click();
        return false;
      });

      if (options.collapsed == true) {
        $(this).find(&#39;a.json-toggle&#39;).click();
      }
    });
  };
})(jQuery);

$(function() {
 $(&#39;#btn-json-viewer&#39;).click(function() {
  if ( $(&#39;#json-input&#39;).val().length &gt; 0 ){
   try {   
    var input = eval(&#39;(&#39; + $(&#39;#json-input&#39;).val() + &#39;)&#39;);
   }
   catch (error) {
    return alert(&quot;Cannot eval JSON: &quot; + error);
   }
   var options = {
    collapsed: $(&#39;#collapsed&#39;).is(&#39;:checked&#39;),
    withQuotes: $(&#39;#with-quotes&#39;).is(&#39;:checked&#39;)
   };
   $(&#39;#json-renderer&#39;).jsonViewer(input, options);
   $(&#39;#json-renderer&#39;).show();
  }
 });
 $(&#39;#btn-json-viewer&#39;).click();
});
&lt;/script&gt;
&lt;style type=&quot;text/css&quot;&gt;
body {
  margin: 0 100px;
  font-family: sans-serif;
}
textarea#json-input {
  width: 100%;
  height: 200px;
}
pre#json-renderer {
  border: 1px solid #aaa;
  padding: 0.5em 1.5em;
}
ul.json-dict, ol.json-array {
  list-style-type: none;
  margin: 0 0 0 1px;
  border-left: 1px dotted #ccc;
  padding-left: 2em;
}
.json-string {
  color: #0B7500;
}
.json-literal {
  color: #1A01CC;
  font-weight: bold;
}
a.json-toggle {
  position: relative;
  color: inherit;
  text-decoration: none;
}
a.json-toggle:focus {
  outline: none;
}
a.json-toggle:before {
  color: #aaa;
  content: &quot;\25BC&quot;; /* down arrow */
  position: absolute;
  display: inline-block;
  width: 1em;
  left: -1em;
}
a.json-toggle.collapsed:before {
  transform: rotate(-90deg); /* Use rotated down arrow, prevents right arrow appearing smaller than down arrow in some browsers */
  -ms-transform: rotate(-90deg);
  -webkit-transform: rotate(-90deg);
}
a.json-placeholder {
  color: #aaa;
  padding: 0 1em;
  text-decoration: none;
}
a.json-placeholder:hover {
  text-decoration: underline;
}
&lt;/style&gt;
&lt;p align=&quot;justify&quot;&gt;
This is a simple JSON viewer developed using JQuery. Find the JSON viewer blow and its source code at GitHub Link
&lt;/p&gt;
&lt;div class=&quot;form-group&quot;&gt;
&lt;textarea id=&quot;json-input&quot; autocomplete=&quot;off&quot; rows=&quot;15&quot; class=&quot;form-control&quot;&gt;&lt;/textarea&gt;
&lt;div&gt;
Options: &lt;input type=&quot;checkbox&quot; id=&quot;collapsed&quot; /&gt; Collapse nodes &lt;input type=&quot;checkbox&quot; id=&quot;with-quotes&quot; /&gt; Keys with quotes
&lt;button id=&quot;btn-json-viewer&quot; title=&quot;run jsonViewer()&quot; class=&quot;btn btn-primary&quot;&gt;Transform to HTML&lt;/button&gt;
&lt;/div&gt;
&lt;pre id=&quot;json-renderer&quot; style=&quot;display: none;&quot; style=&quot;height: 200px;&quot;&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
GitHub Link:&lt;a href=&quot;https://github.com/harishshan/Tools/blob/master/JSONViewer.html&quot;&gt;https://github.com/harishshan/Tools/blob/master/JSONViewer.html&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/5443133809845966564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2017/06/json-viewer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/5443133809845966564'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/5443133809845966564'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2017/06/json-viewer.html' title='JSON Viewer'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-5729764458971407004</id><published>2017-03-07T09:45:00.004+05:30</published><updated>2018-05-02T19:56:27.304+05:30</updated><title type='text'>How to create Dynamic Kafka Topic Through Java</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script src=&quot;https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js&quot;&gt;&lt;/script&gt;
&lt;style&gt;
pre .str, code .str { color: #65B042; } /* string  - green */
pre .kwd, code .kwd { color: #E28964; } /* keyword - dark pink */
pre .com, code .com { color: #AEAEAE; font-style: italic; } /* comment - gray */
pre .typ, code .typ { color: #89bdff; } /* type - light blue */
pre .lit, code .lit { color: #3387CC; } /* literal - blue */
pre .pun, code .pun { color: #fff; } /* punctuation - white */
pre .pln, code .pln { color: #fff; } /* plaintext - white */
pre .tag, code .tag { color: #89bdff; } /* html/xml tag    - light blue */
pre .atn, code .atn { color: #bdb76b; } /* html/xml attribute name  - khaki */
pre .atv, code .atv { color: #65B042; } /* html/xml attribute value - green */
pre .dec, code .dec { color: #3387CC; } /* decimal - blue */

pre.prettyprint, code.prettyprint {
 background-color: #000;
 border-radius: 8px;
}

pre.prettyprint {
 width: 95%;
 margin: 1em auto;
 padding: 1em;
 white-space: pre-wrap;
}


/* Specify class=linenums on a pre to get line numbering */
ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE; } /* IE indents via margin-left */
li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
/* Alternate shading for lines */
li.L1,li.L3,li.L5,li.L7,li.L9 { }

@media print {
  pre .str, code .str { color: #060; }
  pre .kwd, code .kwd { color: #006; font-weight: bold; }
  pre .com, code .com { color: #600; font-style: italic; }
  pre .typ, code .typ { color: #404; font-weight: bold; }
  pre .lit, code .lit { color: #044; }
  pre .pun, code .pun { color: #440; }
  pre .pln, code .pln { color: #000; }
  pre .tag, code .tag { color: #006; font-weight: bold; }
  pre .atn, code .atn { color: #404; }
  pre .atv, code .atv { color: #060; }
}
&lt;/style&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This is post is about how to create a Kafka topic dynamically through Java.In one of my project, we(me and my friend Jaya Ananthram) were required to create dynamic Kafka topic through Java. Since there is no documentation on Kafka official documentation we are struggled to create dynamic Kafka topic through Java. Then After a long search ,we found this solution for creating the Kafka topic through Java.&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-java&quot;&gt;import java.util.Properties;
import kafka.admin.AdminUtils;
import kafka.utils.ZKStringSerializer$;
import kafka.utils.ZkUtils;
import org.I0Itec.zkclient.ZkClient;
import org.I0Itec.zkclient.ZkConnection;

public class KafkaTopicCreationInJava
{
    public static void main(String[] args) throws Exception {
        ZkClient zkClient = null;
        ZkUtils zkUtils = null;
        try {
            String zookeeperHosts = &quot;localhost:2181&quot;;  
            // If multiple zookeeper then -&amp;gt; String zookeeperHosts = &quot;192.168.1.1:2181,192.168.1.2:2181&quot;;
            int sessionTimeOutInMs = 15 * 1000; // 15 secs
            int connectionTimeOutInMs = 10 * 1000; // 10 secs

            zkClient = new ZkClient(zookeeperHosts, sessionTimeOutInMs, connectionTimeOutInMs, ZKStringSerializer$.MODULE$);
            zkUtils = new ZkUtils(zkClient, new ZkConnection(zookeeperHosts), false);

            String topicName = &quot;testTopic&quot;;
            int noOfPartitions = 2;
            int noOfReplication = 3;
            Properties topicConfiguration = new Properties();

            AdminUtils.createTopic(zkUtils, topicName, noOfPartitions, noOfReplication, topicConfiguration);

        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            if (zkClient != null) {
                zkClient.close();
            }
        }
    }
}
&lt;/pre&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I am assuming both Zookeeper and Kafka are configured with default configuration at localhost and the service running. While creating ZkClient object, we must set ZkSerializer as ZKStringSerializer$.MODULE$, So that ZkClient will create a topic at Kafka. If we didn&#39;t mention ZkSerializer, the topic will not be properly created at Kafka. It will just create topic directories at Zookeepers and It will show that topic is created successfully. But by the time we try to push tuples, it will fail and throw Topic is not exists.&lt;/div&gt;
&lt;br/&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;Note&lt;/b&gt;: The ZKStringSerializer$.MODULE$ will return the singleton ZKStringSerializer object.
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/5729764458971407004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2017/03/how-to-create-dynamic-kafka-topic.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/5729764458971407004'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/5729764458971407004'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2017/03/how-to-create-dynamic-kafka-topic.html' title='How to create Dynamic Kafka Topic Through Java'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-7607225251941762979</id><published>2016-11-17T20:46:00.000+05:30</published><updated>2018-05-02T20:04:06.568+05:30</updated><title type='text'>Installing MS SQL Server on Ubuntu 16.04</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script src=&quot;https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js&quot;&gt;&lt;/script&gt;
&lt;style&gt;
pre .str, code .str { color: #65B042; } /* string  - green */
pre .kwd, code .kwd { color: #E28964; } /* keyword - dark pink */
pre .com, code .com { color: #AEAEAE; font-style: italic; } /* comment - gray */
pre .typ, code .typ { color: #89bdff; } /* type - light blue */
pre .lit, code .lit { color: #3387CC; } /* literal - blue */
pre .pun, code .pun { color: #fff; } /* punctuation - white */
pre .pln, code .pln { color: #fff; } /* plaintext - white */
pre .tag, code .tag { color: #89bdff; } /* html/xml tag    - light blue */
pre .atn, code .atn { color: #bdb76b; } /* html/xml attribute name  - khaki */
pre .atv, code .atv { color: #65B042; } /* html/xml attribute value - green */
pre .dec, code .dec { color: #3387CC; } /* decimal - blue */

pre.prettyprint, code.prettyprint {
 background-color: #000;
 border-radius: 8px;
}

pre.prettyprint {
 width: 95%;
 margin: 1em auto;
 padding: 1em;
 white-space: pre-wrap;
}


/* Specify class=linenums on a pre to get line numbering */
ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE; } /* IE indents via margin-left */
li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
/* Alternate shading for lines */
li.L1,li.L3,li.L5,li.L7,li.L9 { }

@media print {
  pre .str, code .str { color: #060; }
  pre .kwd, code .kwd { color: #006; font-weight: bold; }
  pre .com, code .com { color: #600; font-style: italic; }
  pre .typ, code .typ { color: #404; font-weight: bold; }
  pre .lit, code .lit { color: #044; }
  pre .pun, code .pun { color: #440; }
  pre .pln, code .pln { color: #000; }
  pre .tag, code .tag { color: #006; font-weight: bold; }
  pre .atn, code .atn { color: #404; }
  pre .atv, code .atv { color: #060; }
}
&lt;/style&gt;
&lt;p align=&quot;justify&quot;&gt;This post about installing the MS SQL Server on Ubuntu 16.04. MS SQL Server could be installed only on Windows, Now Microsoft released SQL Server 2017, which adds Linux support for these Linux platforms: Red Hat Enterprise Linux, SUSE Linux Enterprise Server, Ubuntu &amp; Docker Engine. Find the steps below for installing MS SQL Server on Ubuntu 16.04&lt;/p&gt;
&lt;br /&gt;
1. Login to sudo user
&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;$sudo su&lt;/pre&gt;
2.Install CURL (if curl is not already installed)
&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;$sudo apt-get install curl&lt;/pre&gt;
3.Register MS SQL Server repository
&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;$curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add
$curl https://packages.microsoft.com/config/ubuntu/16.04/mssql-server.list &amp;gt; /etc/apt/sources.list.d/mssql-server.list
$curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list &amp;gt; /etc/apt/sources.list.d/msprod.list
sudo apt-get update
&lt;/pre&gt;
&lt;i&gt;&lt;b&gt;Note&lt;/b&gt;: mssql-server.list contains mssql-server and msprod.list contains mssql-tools&lt;/i&gt;&lt;br /&gt;
4. Install MS SQL server.
&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;$sudo apt-get install -y mssql-server
$sudo /opt/mssql/bin/sqlservr-setup
&lt;/pre&gt;
&lt;i&gt;&lt;b&gt;Note&lt;/b&gt;: Do remember the password you have entered while installing the MS SQL server. Default username for the server is SA&lt;/i&gt;
&lt;br /&gt;
5.Check the MS SQL Server service is running or not
&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;$systemctl status mssql-server
&lt;/pre&gt;
6. Install MS SQL Tools
&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;$sudo apt-get install mssql-tools
&lt;/pre&gt;
7. Connect the MS SQL Server via terminal using &quot;&lt;b&gt;sqlcmd&lt;/b&gt;&quot; command and test some sample queries
Syntax:
&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;sqlcmd -S &amp;lt;hostname&amp;gt; -U &amp;lt;username&amp;gt; -P &amp;lt;password&amp;gt;
&lt;/pre&gt;
Example:
&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;$sqlcmd -S localhost -U SA -P password
&amp;gt;CREATE DATABASE school;
&amp;gt;USE school
&amp;gt;CREATE DATABASE student(rollnumber INT, name VARCHAR(50));
&amp;gt;INSERT INTO student VALUES(1,&#39;HARISH&#39;);
&amp;gt;SELECT * FROM school.student;
&amp;gt;QUIT
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/7607225251941762979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2016/11/installing-ms-sql-server-on-ubuntu-1604.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/7607225251941762979'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/7607225251941762979'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2016/11/installing-ms-sql-server-on-ubuntu-1604.html' title='Installing MS SQL Server on Ubuntu 16.04'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-5663420002992149786</id><published>2016-10-05T23:12:00.005+05:30</published><updated>2018-05-02T20:08:31.558+05:30</updated><title type='text'>Brief Introduction to D3.js</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script src=&quot;https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js&quot;&gt;&lt;/script&gt;
&lt;style&gt;
pre .str, code .str { color: #65B042; } /* string  - green */
pre .kwd, code .kwd { color: #E28964; } /* keyword - dark pink */
pre .com, code .com { color: #AEAEAE; font-style: italic; } /* comment - gray */
pre .typ, code .typ { color: #89bdff; } /* type - light blue */
pre .lit, code .lit { color: #3387CC; } /* literal - blue */
pre .pun, code .pun { color: #fff; } /* punctuation - white */
pre .pln, code .pln { color: #fff; } /* plaintext - white */
pre .tag, code .tag { color: #89bdff; } /* html/xml tag    - light blue */
pre .atn, code .atn { color: #bdb76b; } /* html/xml attribute name  - khaki */
pre .atv, code .atv { color: #65B042; } /* html/xml attribute value - green */
pre .dec, code .dec { color: #3387CC; } /* decimal - blue */

pre.prettyprint, code.prettyprint {
 background-color: #000;
 border-radius: 8px;
}

pre.prettyprint {
 width: 95%;
 margin: 1em auto;
 padding: 1em;
 white-space: pre-wrap;
}


/* Specify class=linenums on a pre to get line numbering */
ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE; } /* IE indents via margin-left */
li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
/* Alternate shading for lines */
li.L1,li.L3,li.L5,li.L7,li.L9 { }

@media print {
  pre .str, code .str { color: #060; }
  pre .kwd, code .kwd { color: #006; font-weight: bold; }
  pre .com, code .com { color: #600; font-style: italic; }
  pre .typ, code .typ { color: #404; font-weight: bold; }
  pre .lit, code .lit { color: #044; }
  pre .pun, code .pun { color: #440; }
  pre .pln, code .pln { color: #000; }
  pre .tag, code .tag { color: #006; font-weight: bold; }
  pre .atn, code .atn { color: #404; }
  pre .atv, code .atv { color: #060; }
}
&lt;/style&gt;
&lt;p align=&quot;justify&quot;&gt;This post is the short notes about D3.js (Data Driven Documents) framework, It is a JavaScript framework mainly used to generate charts using HTML, DOM, Canvas and SVG. Reference: &lt;a href=&quot;https://github.com/mbostock/d3/wiki/API-Reference&quot;&gt;https://github.com/mbostock/d3/wiki/API-Reference&lt;/a&gt;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Select, Append, Text:
&lt;/h3&gt;
&lt;pre class=&quot;prettyprint lang-html&quot;&gt;&amp;lt;script src=&quot;http://d3js.org/d3.v3.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script&amp;gt;
d3.select(&quot;body&quot;)
 .append(&quot;p&quot;)
 .style(&quot;color&quot;,&quot;red&quot;)
 .attr(&quot;allign&quot;,&quot;center&quot;)
 .text(&quot;Hello World&quot;);
&amp;lt;/script&amp;gt;
&lt;/pre&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Basic SVG Shape:
&lt;/h3&gt;
&lt;pre class=&quot;prettyprint lang-js&quot;&gt;var canvas=d3.select(&quot;body&quot;)
 .append(&quot;svg&quot;)
 .attr(&quot;width&quot;,500)
 .attr(&quot;height&quot;,500);
var circle = canvas.append(&quot;circle&quot;)
 .attr(&quot;cx&quot;,250)
 .attr(&quot;cy&quot;,250)
 .attr(&quot;r&quot;, 50)
 .attr(&quot;fill&quot;,&quot;red&quot;);
var rect = canvas.append(&quot;rect&quot;)
 .attr(&quot;width&quot;,100)
 .attr(&quot;heiht&quot;,59);
                
var line = canvas.append(&quot;line&quot;)
 .attr(&quot;x1&quot;,0)
 .attr(&quot;y1&quot;,100)
 .attr(&quot;x2&quot;,400)
 .attr(&quot;y2&quot;,400)
 .attr(&quot;stroke&quot;,&quot;green&quot;)
 .attr(&quot;stroke-width&quot;,10);
&lt;/pre&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Visualizing Data:
&lt;/h3&gt;
&lt;pre class=&quot;prettyprint lang-js&quot;&gt;var dateArray = [20, 40, 50];
var canvas = d3.select(&quot;body&quot;)
 .append(&quot;svg&quot;)
 .attr(&quot;width&quot;,500)
 .attr(&quot;height&quot;,500);
var bars = canvas.selectAll(&quot;rect&quot;)
 .data(dateArray)
 .enter()
  .append(&quot;rect&quot;)
  .attr(&quot;width&quot;,function(d){
   return d * 10;
  })
  .attr(&quot;height&quot;,50)
  .attr(&quot;y&quot;,function(d, i){
   return i * 50
  });
&lt;/pre&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Scales:
&lt;/h3&gt;
&lt;pre class=&quot;prettyprint lang-js&quot;&gt;var width = 500;
var height = 500;
var widthscale = d3.scale.linear()
 .domain([0,60])
 .range([0, width]);
var color = d3.scale.linear()
 .domain([0,40])
 .range([red,blue]);
var dateArray = [20, 40, 50];
var canvas = d3.select(&quot;body&quot;)
 .append(&quot;svg&quot;)
 .attr(&quot;width&quot;,500)
 .attr(&quot;height&quot;,500);
var bars = canvas.selectAll(&quot;rect&quot;)
 .data(dateArray)
 .enter()
  .append(&quot;rect&quot;)
  .attr(&quot;width&quot;,function(d){
   return widthscale(d);
  })
  .attr(&quot;height&quot;,50)
  .attr(&quot;file&quot;, function(id){ return color(id})
  .attr(&quot;y&quot;,function(d, i){
   return i * 50
  });    
&lt;/pre&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Groups and Axes:
&lt;/h3&gt;
&lt;pre class=&quot;prettyprint lang-js&quot;&gt;var axis = d3.svg.axis()
 .ticks(5)
 .scale(widthscale);
var canvas = d3.select(&quot;body&quot;)
 .append(&quot;svg&quot;)
 .attr(&quot;width&quot;,500)
 .attr(&quot;height&quot;,500)
 .append(&quot;g&quot;)
 .attr(&quot;transform&quot;,&quot;translate(20,0)&quot;)
 .call(axis);                
canvas.append(&quot;g&quot;)
 .attr(&quot;transform&quot;,&quot;translate(0,400)&quot;)
 .call(axis);
&lt;/pre&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Enter, Update, Exit:
&lt;/h3&gt;
&lt;pre class=&quot;prettyprint lang-js&quot;&gt;Dom elements &amp;lt; data elements(enter)
Dom elements &amp;gt; data elements(exit)
Dom elements = data elements(update)
var data = [10,20];
var canvas = d3.select(&quot;body&quot;)
 .append(&quot;svg&quot;)
 .attr(&quot;width&quot;,500)
 .attr(&quot;height&quot;,500);
var circle = canvas.append(&quot;circle&quot;)
 .attr(&quot;cx&quot;, 50)
 .attr(&quot;cy&quot;, 50)
 .attr(&quot;r&quot;,25);
var circle = canvas.selectAll(&quot;circle&quot;)
 .data(data)
 .attr(&quot;file&quot;,&quot;red&quot;)
 .enter()
  .append(&quot;circle&quot;)
  .attr(&quot;cx&quot;, 50)
  .attr(&quot;cy&quot;, 50)
  .attr(&quot;r&quot;,25)
  .attr(&quot;color&quot;,&quot;green&quot;);
&lt;/pre&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Transitions:
&lt;/h3&gt;
&lt;pre class=&quot;prettyprint lang-js&quot;&gt;var canvas = d3.select(&quot;body&quot;)
 .append(&quot;svg&quot;)
 .attr(&quot;width&quot;,500)
 .attr(&quot;height&quot;,500);
var circle = canvas.append(&quot;circle&quot;)
 .attr(&quot;cx&quot;, 50)
 .attr(&quot;cy&quot;, 50)
 .attr(&quot;r&quot;,25);
circle.transition()
 .duration(1500)
 .delay(2000)
 .attr(&quot;cx&quot;,150)
 .transition()
 .attr(&quot;cy&quot;,150)
 .each(&quot;end&quot;,function(){
  d3.select(this).attr(&quot;fill&quot;,&quot;red&quot;);
 });
&lt;/pre&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Loading External Data:
&lt;/h3&gt;
&lt;pre class=&quot;prettyprint lang-js&quot;&gt;mydata.json file : {{&quot;name&quot;:&quot;harish&quot;,&quot;age&quot;,25},{&quot;name&quot;:&quot;chitra&quot;,&quot;age&quot;:22},{&quot;name&quot;:&quot;Kutty&quot;,&quot;age&quot;:23}}
d3.json(&quot;mydata.json&quot;,function(data){
    var canvas = d3.select(&quot;body&quot;).append(&quot;svg&quot;)
  .attr(&quot;width&quot;,500)
  .attr(&quot;height&quot;,500);              
 canvas.selectAll(&quot;rect&quot;)
  .deta(data)
  .enter()
   .append(&quot;rect&quot;)
   .attr(&quot;width&quot;, function(d{
    return d.age * 10;
   })
   .attr(&quot;height&quot;,48)
   .attr(&quot;y&quot;,function(d,i){
    return i*50;                    
   })
   .attr(&quot;fill&quot;,&quot;&quot;blue);
 canvas.select(&quot;text&quot;)
  .data(data)
  .enter()
   .append(&quot;text&quot;)
   .attr(&quot;fill&quot;,&quot;white)
   .attr(&quot;y&quot;,function(d,i){
    return i*50;
   })
   .text(function(d){
    return d.name;
   });
    })
})
&lt;/pre&gt;
&lt;b&gt;mydata.csv&lt;/b&gt;
&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-js&quot;&gt;&quot;name&quot;,&quot;age&quot;
&quot;Harish&quot;,25
&quot;Chitra&quot;,22
&quot;Kutty&quot;,23
&lt;/pre&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Paths:
&lt;/h3&gt;
&lt;pre class=&quot;prettyprint lang-js&quot;&gt;var canvas = d3.select(&quot;body&quot;).append(&quot;svg&quot;)
 .attr(&quot;width&quot;,500)
 .attr(&quot;height&quot;,500);
var data =[
 {x:10, y:20},
 {x:40, y:60},
 {x:50, y:70},
];
var group = canvas.append(&quot;g&quot;)
 .attr(&quot;transform&quot;,&quot;translate(100,100)&quot;);
var line = d3.svg.line()
 .x(function(d){
  return d.x;
 })
 .y(function(d){
  return d.y;
 };
group.selectAll(&quot;path&quot;)
 .data(data)
 .enter()
  .append(&quot;path&quot;)
  .attr(&quot;d&quot;, line)
  .attr(&quot;fill&quot;,&quot;none&quot;)
  .attr(&quot;stroke&quot;,&quot;#000&quot;)
  .attr(&quot;stroke-width&quot;,10);
&lt;/pre&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Arcs(Donut chart):
&lt;/h3&gt;
&lt;pre class=&quot;prettyprint lang-js&quot;&gt;var data = [10,20,30];
var r = 300;
var color = d3.scale.ordinal()
 .range([&quot;red&quot;,&quot;blue&quot;,&quot;orange&quot;])
var canvas = d3.select(&quot;body&quot;).append(&quot;svg&quot;)
 .attr(&quot;width&quot;,500)
 .attr(&quot;height&quot;,500);
var group = canvas.append(&quot;g&quot;)
 .attr(&quot;transform&quot;,&quot;translate(100,100)&quot;);
var arc = d3.svg.arc()
 .innnerRadius(r-100)//innnerRadius(0) for piechart
 .outerRadius(r)
 
var pie = d3.layout.pie()
 value(function(d){
  return d;
 });
var arcs = group.selectAll(&quot;arc&quot;)
 .data(pie(data))
 .enter()
  .append(&quot;g&quot;)
  .attr(&quot;class&quot;,&quot;arc&quot;);
 
arcs.append(&quot;path&quot;)
 .attr(&quot;d&quot;,arc)
 .attr(&quot;fill&quot;, function(d){
  return color(d.data);
 });
arcs.append(&quot;text&quot;)
 .attr(&quot;transform&quot;, function(d){
  return &quot;translate(&quot;+arc.centroid(d) +&quot;)&quot;;
 })
 .attr(&quot;text-anchor&quot;,&quot;middle&quot;)
 .attr(&quot;font-size&quot;,1.5em);
 .text(function(d){ 
  return d.data;
 });
&lt;/pre&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Tree Layout:
&lt;/h3&gt;
&lt;pre class=&quot;prettyprint lang-js&quot;&gt;{
    &quot;name&quot;:&quot;Shanmugam&quot;,
    &quot;children&quot; : [
        {
            &quot;name&quot;:&quot;Harish&quot;,
            &quot;children&quot;:[
                {&quot;name&quot;:&quot;a&quot;},
                {&quot;name&quot;,&quot;b&quot;},
                {&quot;name&quot;,&quot;c&quot;}
            ]
        },
        {
            &quot;name&quot;:&quot;chitra&quot;,
            &quot;children&quot;:[
                {&quot;name&quot;:&quot;y&quot;},
                {&quot;name&quot;,&quot;z&quot;}
            ]
        }
    ]
}
&lt;/pre&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Just diagonal curve :
&lt;/h3&gt;
&lt;pre class=&quot;prettyprint lang-js&quot;&gt;var canvas = d3.select(&quot;body&quot;).append(&quot;svg&quot;)
 .attr(&quot;width&quot;,500)
 .attr(&quot;height&quot;,500);
var diagonal = d3.svg.diagonal()
    .source({x:10, y:10})
    .target({x:300,y:300};

canvas.append(&quot;path&quot;)
 .attr(&quot;file&quot;,&quot;none&quot;)
 .attr(&quot;stroke&quot;,&quot;black&quot;)
 .attr(&quot;d&quot;, diagonal);
&lt;/pre&gt;
&lt;b&gt;Full:
&lt;/b&gt;&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-js&quot;&gt;var canvas = d3.select(&quot;body&quot;).append(&quot;svg&quot;)
 .attr(&quot;width&quot;,500)
 .attr(&quot;height&quot;,500)
 .append(&quot;g&quot;)
 .attr(&quot;transform&quot;,&quot;translate(50,50)&quot;);
var tree = d3.layout.tree()
 .size([400,400]);
            
d3.json(&quot;mydata.json&quot;, function(data){
    var nodes = tree.nodes(data);
    var links = tree.links(nodes);
    var node = canvas.selectAll(.node)
  .data(nodes)
  .enter()
   .append(&quot;g&quot;)
   .attr(&quot;class&quot;,&quot;node&quot;)
   .attr(&quot;transform&quot;, funnction (d){
    return &quot;translate(&quot; + d.x +&quot;, &quot;+ d.y + &quot;)&quot;;
   })
    node.append(&quot;circle&quot;)
        .attr(&quot;r&quot;,5)
        .attr(&quot;fill&quot;,&quot;blue&quot;);
        
    node.append(&quot;text&quot;)
        .text(function(d){
            return d.name;
        });
    var diagonal = d3.svg.diagonal();
    //.projection(function (d) { reutrn [d.x, d.y]});
    canvas.selectAll(&quot;.link&quot;)
  .data(links)
  .enter()
   .append(&quot;path&quot;)
   .attr(&quot;class&quot;,&quot;link&quot;)
   .attr(&quot;fill&quot;,&quot;none&quot;)
   .attr(&quot;stroke&quot;,&quot;#ADADAD&quot;)
   .attr(&quot;d&quot;, diagonal);
})
&lt;/pre&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Cluster Pack Bubble Layouts:
&lt;/h3&gt;
&lt;pre class=&quot;prettyprint lang-js&quot;&gt;var canvas = d3.select(&quot;body&quot;).append(&quot;svg&quot;)
 .attr(&quot;width&quot;,500)
 .attr(&quot;height&quot;,500)
 .append(&quot;g&quot;)
 .attr(&quot;transform&quot;,&quot;translate(50,50)&quot;);
var pack = d3.layout.pack()
 .size([width, height-50])
 .padding(10);
d3.json(&quot;mydata.json&quot;, function(data){
    var nodes = pack.nodes(data);    
    var node = canvas.selectAll(&quot;.node&quot;)
        .data(nodes)
        .enter()
        .append(&quot;g&quot;)
            .attr(&quot;class&quot;,&quot;node&quot;)
            .attr(&quot;transform&quot;, function(d){
                return &quot;translate[&quot; + d.x+ &quot;,&quot;+d.y +&quot;)&quot;;                
            })
    node.append(&quot;circle&quot;)
        .attr(&quot;r&quot;,function(d){
            return d.r;
        })
        .attr(&quot;stroke&quot;,&quot;#ADADAD&quot;)
        .attr(&quot;stroke-width&quot;, 5);
        
    node.apppend(&quot;text&quot;)
        .text(function(d){
            return d.childer ? &quot;&quot; : d.name;
        })
});
});
&lt;/pre&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Histogram:
&lt;/h3&gt;
&lt;pre class=&quot;prettyprint lang-js&quot;&gt;var width = 500, height = 500, padding= 50;
d3.csv(&quot;ages.csv&quot;,function(data){
    var map = data.map(function(i){
        return parseInt(i.age);
    })
    var histgram = d3.layout.histogram()
        .bins(7)(map)
    var y = d3.scale.linear()
  .domain([0, d3.max[histogram.data(function(i){return i.length;})])
  .range([0, height]);
            
    var x = d3.scale.linear()
  .domain([0,d3.max(map)])
  .range([0,width])
    var xAxis = d3.svg.axis()
  .scale(x)
  .orient(&quot;bottom&quot;);
    var canvas = d3.select(&quot;body&quot;).append(&quot;svg&quot;)
        .attr(&quot;width&quot;,500)
        .attr(&quot;height&quot;,500);
    var group = canvas.append(&quot;g&quot;)
        .attr(&quot;transform&quot;,&quot;translate[20,0]&quot;)
    var bars = canvas.selectAll(&quot;.bar&quot;)
        .data(histogram)
        .enter()
        .append(&quot;g&quot;)
    bars.append(&quot;rect&quot;)
        .attr(&quot;x&quot;, function(d){
            return d.x * 5;
        })
        .attr(&quot;y&quot;, 0)
        .attr(&quot;width&quot;, function(d){
            return d.dx * 5;
        })
        .attr(&quot;height&quot;, function(d){
            return d.dy *5;
        })
        .attr(&quot;fill&quot;,&quot;blue&quot;)
    bars.append(&quot;text&quot;)
        .attr(&quot;x&quot;, function(d){ return x[d.x})
        .attr(&quot;y&quot;, function(d){ return 500 - y[d.y];})
        .attr(&quot;dy&quot;,200px)
        .attr(&quot;fill&quot;, green)
        .attr(&quot;text-anchour&quot;,&quot;middle&quot;)
        .text(function(d){return d.y;})
});
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/5663420002992149786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2016/10/brief-introduction-to-d3js.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/5663420002992149786'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/5663420002992149786'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2016/10/brief-introduction-to-d3js.html' title='Brief Introduction to D3.js'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-6300424777818161405</id><published>2015-04-21T23:29:00.004+05:30</published><updated>2018-05-02T20:23:53.879+05:30</updated><title type='text'>A Brief Intro of Apache Storm</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;link href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;
&lt;style&gt;
@media {
  .container {
    width: 100%;
  }
}
.container {
  padding-right: 15px;
  padding-left: 15px;
  margin-right: auto;
  margin-left: auto;
  width: 100%;
}
&lt;/style&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This post is about Apache Storm and How to install Apache Storm 0.9.4 (latest version) on Windows 7 &amp;amp; Ubuntu 14.04.2 with an Hello World program.
&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Overview of Apache Storm
&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Apache Storm is a free and open source distributed system for real-time computation. Storm is implemented in Clojure &amp;amp; Storm APIs are written in Java by Nathan Marz &amp;amp; team at BackType. Storm is best for distributed processing where unbounded streams of real time data computation requires. In contrast to batch systems like Hadoop, which often introduce delay of hours, Storm allows us to process online data.Storm is extremely fast, with the ability to process over a million records per second per node on a cluster of modest size.&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;img border=&quot;0&quot; height=&quot;156&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnHqidiQyxVDjf8handHZfd_ZIwfDRwjWEHeuXxr0J4ZxGzu7SabTM9hGcUZ2ukz5AziE2wWYqKp_sSe1AZw87kvZth5erNsE6OpXzxDlO-DqWTbZZJBFtlDYVhN5x5tlaVchSENlmzKc/s400/storm_logo.png&quot; width=&quot;400&quot; /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
About Nathan Marz
&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Nathan Marz was the lead engineer on Twitter&#39;s Publisher Analytics team. Previously Nathan was the lead engineer of BackType which was acquired by Twitter in July of 2011. On march 2013 he left Twitter to start-up his own company He is a major believer in the power of open source and has authored some significant open source projects, including Cascalog, ElephantDB, and Storm. He writes a blog at &lt;a href=&quot;http://nathanmarz.com/&quot;&gt;http://nathanmarz.com&lt;/a&gt;. &lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
A Brief History of Apache Storm
&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
In 2010 Apache Storm was a nothing than an idea of Nathan Marz, But now storm has been adopted by many of the world&#39;s largest companies including Yahoo!, Twitter, Microsoft and many more. Before Storm, BackType built an analytic product to help businesses understand their impact on social media both historically and real time using Queues and Workers approach. Oftentimes these workers would send messages through another set of queues to another set of workers for further processing. Where most portion of code are for sending/receiving messages and serializing/deserializing messages and with small portion of actual business logic. 
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;In December 2010, Nathan Marz realized the complexity of product and come up with idea of &quot;Stream&quot; as distributed abstraction with Top-level abstraction &quot;Topology&quot;, a network of spouts and bolts. Spout produces brand new streams and Bolt takes in streams as input by subscribe to whatever streams they need to process and produces streams as output. The key insight is that spout and bolt are inherently parallel. Then he tested this abstraction against his test case and he wanted to validate large set of use cases, so he tweeted as&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&quot;&lt;i&gt;I&#39;m working on new kind of stream processing system. If this sounds interesting to you, ping me. I want to learn your use cases&lt;/i&gt;&quot;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Most of people responded with their use-cases, Then he Initially started designing Storm with RabbitMQ for Intermediate messages. Then without intermediate messages, Nathan Marz developed an algorithm based on random numbers and XORs that would only require 20bytes to track each spout tuple to solve massage processing guarantee. Unlike Hadoop Zombie processes which would not shut down at idle, Storm never has this Zombie process issue and Storm has been designed to be &quot;Process Fault-Tolerant&quot;. Storm has bean open sourced on July 2011 and graduated to a top-level Apache project on September 17th, 2014. &lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Storm Application&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
A Storm application is designed as a topology in the shape of DAG(Directed ACyclic Graph) with Spouts and Bolts acting as graph vertices. Edges on the graph are data stream between nodes.Here are some typical “prevent” and “optimize” use cases for Storm.
&lt;/div&gt;
&lt;table class=&quot;table&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;br /&gt;&lt;/th&gt;
&lt;th style=&quot;text-align: center;&quot;&gt;“Prevent” Use Cases&lt;/th&gt;
&lt;th style=&quot;text-align: center;&quot;&gt;“Optimize” Use Cases&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Financial &amp;nbsp; Services&lt;/td&gt;
&lt;td&gt;&lt;ul&gt;
&lt;li&gt;Securities fraud&lt;/li&gt;
&lt;li&gt;Operational risks &amp;amp; compliance violations&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;td&gt;&lt;ul&gt;
&lt;li&gt;Order routing&lt;/li&gt;
&lt;li&gt;Pricing&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Telecom&lt;/td&gt;
&lt;td&gt;&lt;ul&gt;
&lt;li&gt;Security breaches&lt;/li&gt;
&lt;li&gt;Network outages&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;td&gt;&lt;ul&gt;
&lt;li&gt;Bandwidth allocation&lt;/li&gt;
&lt;li&gt;Customer service&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Retail&lt;/td&gt;
&lt;td&gt;&lt;ul&gt;
&lt;li&gt;Shrinkage&lt;/li&gt;
&lt;li&gt;Stock outs&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;td&gt;&lt;ul&gt;
&lt;li&gt;Offers&lt;/li&gt;
&lt;li&gt;Pricing&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Manufacturing&lt;/td&gt;
&lt;td&gt;&lt;ul&gt;
&lt;li&gt;Preventative maintenance&lt;/li&gt;
&lt;li&gt;Quality assurance&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;td&gt;&lt;ul&gt;
&lt;li&gt;Supply chain optimization&lt;/li&gt;
&lt;li&gt;Reduced plant downtime&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transportation&lt;/td&gt;
&lt;td&gt;&lt;ul&gt;
&lt;li&gt;Driver monitoring&lt;/li&gt;
&lt;li&gt;Predictive maintenance&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;td&gt;&lt;ul&gt;
&lt;li&gt;Routes&lt;/li&gt;
&lt;li&gt;Pricing&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Web&lt;/td&gt;
&lt;td&gt;&lt;ul&gt;
&lt;li&gt;Application failures&lt;/li&gt;
&lt;li&gt;Operational issues&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;td&gt;&lt;ul&gt;
&lt;li&gt;Personalized content&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Characteristics of Storm
&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Fast&lt;/b&gt; – bench-marked as processing one million 100 byte messages per second per node&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Scaleable&lt;/b&gt; – with parallel calculations that run across a cluster of machines&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Fault-tolerant&lt;/b&gt; – when workers die, Storm will automatically restart them. If a node dies, the worker will be restarted on another node.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Reliable&lt;/b&gt; – Storm guarantees that each unit of data (tuple) will be processed at least once or exactly once. Messages are only replayed when there are failures.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Easy to operate&lt;/b&gt; – standard configurations are suitable for production on day one. Once deployed, Storm is easy to operate&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Use cases of Storm
&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;ul&gt;
&lt;li&gt;Processing Streams (No need of intermediate Queues)&lt;/li&gt;
&lt;li&gt;Continuous Computation&lt;/li&gt;
&lt;li&gt;Distributed RPC&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Spout
&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
A Spout is a source of streams in a computation. Spout can read from queue like Kafka , can generate its own stream or read Twitter streaming.
&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Bolt
&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
A bolt processes any number of input streams and produces any number of new output streams.Most of the logic of a computation goes into bolts, such as functions, filters, streaming joins, streaming aggregations, talking to databases, and so on.
&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Topology&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;ul&gt;
&lt;li&gt;A topology is a network of spouts and bolts, with each edge in the network representing a bolt subscribing to the output stream of some other spout or bolt. A topology is an arbitrarily complex multi-stage stream computation. Topologies run indefinitely when deployed.&lt;/li&gt;
&lt;li&gt;A topology can have one spout and multiple bolt&lt;/li&gt;
&lt;li&gt;A topology is arrangement of spout and bolt&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Understanding Storm Architecture
&lt;/h3&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQg19SxZuAHg4n2_TqAOAgDIp-W9QucwAWW5QnPDQiJeGOf26W77Xh81v5xCrFfRFqrwi0km6ovIWVuTq4NalfG0tXrzQjqlxgBEj2wkNvPaoerYL9TU8-m8kd8ZZ58VnqCAAwKTGognk/s1600/stormArchitecture.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;442&quot; data-original-width=&quot;638&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQg19SxZuAHg4n2_TqAOAgDIp-W9QucwAWW5QnPDQiJeGOf26W77Xh81v5xCrFfRFqrwi0km6ovIWVuTq4NalfG0tXrzQjqlxgBEj2wkNvPaoerYL9TU8-m8kd8ZZ58VnqCAAwKTGognk/s1600/stormArchitecture.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;h3&gt;Storm cluster has 3 sets of nodes&lt;/h3&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
1. Nimbus Node
&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Uploads computations for execution&lt;/li&gt;
&lt;li&gt;Distributes code across the cluster&lt;/li&gt;
&lt;li&gt;Launches workers across the cluster&lt;/li&gt;
&lt;li&gt;Monitors computations and reallocates workers as needed&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
2. Zookeeper nodes
&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Coordinates the storm cluster&lt;/li&gt;
&lt;li&gt;Zookeeper is a distributed coordination service going to installed on each and every machine&lt;/li&gt;
&lt;li&gt;Job tracker&lt;/li&gt;
&lt;li&gt;When any failure, zookeeper will assist to nimbus and nimbus will re invoke to supervisor&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
3. Supervisor nodes
&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Communicates with nimbus through zookeeper, starts and stops workers according to signals from nimbus.&lt;/li&gt;
&lt;li&gt;Supervisor actual execution happens at supervisor and only start and stop signals one set by nimbus&lt;/li&gt;
&lt;li&gt;Task Tracker&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Storm topology
&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;ul&gt;
&lt;li&gt;The work is delegated to different types of components that are each responsible for a simple specific processing task&lt;/li&gt;
&lt;li&gt;Input stream of a storm cluster is handled by a component called a spout&lt;/li&gt;
&lt;li&gt;The spout pass the data to a component called&amp;nbsp; a bolt which transforms it in some way&lt;/li&gt;
&lt;li&gt;A boult either persists data in some sort of storage or pass it to some other bolt&lt;/li&gt;
&lt;li&gt;Only one nimbus in a cluster, Single point of failure&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Five Key abstractions help to understand how storm processes data
&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;ul&gt;
&lt;li&gt;Tuple: An ordered list of elements eg: (7,5,6,9)&lt;/li&gt;
&lt;li&gt;Stream: An unbounded sequence of tuples&lt;/li&gt;
&lt;li&gt;Spouts: Source of streams in a computations&lt;/li&gt;
&lt;li&gt;Bolts:Process input stream and produce output streams they can run functions filters aggregates or join data or talk to databases&lt;/li&gt;
&lt;li&gt;Topology:overall calculation, represented visually as a network of spouts and bolts (as in the following diagram) &lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqm-B7_XS7pBG4wwtDyzRf4bdBL1CeJM_PGtVD94duH7w6zd_jIbw4WVzuQ-HsZjTUcf0RPUNOLFtPsodq26P_CYBQB6UZ1q47gGA7FYQtB-IPm5mtB7kBmGBzDh_dQIVu-h2-pRjInGM/s1600/storm-flow.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;500&quot; data-original-width=&quot;1200&quot; height=&quot;166&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqm-B7_XS7pBG4wwtDyzRf4bdBL1CeJM_PGtVD94duH7w6zd_jIbw4WVzuQ-HsZjTUcf0RPUNOLFtPsodq26P_CYBQB6UZ1q47gGA7FYQtB-IPm5mtB7kBmGBzDh_dQIVu-h2-pRjInGM/s400/storm-flow.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Nimbus
&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;ul&gt;
&lt;li&gt;Distribute the code &amp;amp; lunch workers across the cluster &lt;/li&gt;
&lt;li&gt;Real-time Analytics by Storm in Hadoop Framework&lt;/li&gt;
&lt;li&gt;We can process the real time data with the help of queue streaming and Distributed Processing&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
How Apache Storm Works?
&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Consider we having a task like processing 2,00,000 lines text file on a machine, here to process a single record, it takes 6 seconds, so it will take(2,00,000*6) 12,00,000 seconds. Now we can see the real problem of long execution time. 
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
How can we reduce the processing time? By  creating two 1,00,000 lines text file and executing 2 processes, we can  reduce the processing time to 6,00,000. So by parallel processing we can acheive this. But by doing more parallel processing on the single machine will not be effective. That is how distributed processing given solution to this problem by Running 10,000 lines text file on 20 machines, we can process the entire data in effecient time.
&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
What is Lambda Architecture
&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Lambda architecture describes a system consisting of three layers: batch processing, speed (or real-time) processing, and a serving layer for responding to queries. Find more details at http://lambda-architecture.net
&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Installing Apache Storm on Windows 7&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Storm installation is not actually required to run on Local standalone mode of Storm submission
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Install Java, where note the java path does not contain any spaces&lt;/li&gt;
&lt;li&gt;Install Zookeeper by downloading from its official website&lt;/li&gt;
&lt;li&gt;Extract to c:\zookeeper&lt;/li&gt;
&lt;li&gt;set PATH environment variable for zookeeper bin path&lt;/li&gt;
&lt;li&gt;configure zoo.cfg&lt;/li&gt;
&lt;li&gt;start zookeeper&lt;/li&gt;
&lt;li&gt;Download storm and extract to storm at C:/storm&lt;/li&gt;
&lt;li&gt;set PATH environment variable for Storm bin path&lt;/li&gt;
&lt;li&gt;configure storm.yaml&lt;/li&gt;
&lt;/ol&gt;
For more reference on setting up storm cluster or installing storm on Ubuntu refer: https://storm.apache.org/documentation/Setting-up-a-Storm-cluster.html
&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Different Spouts
&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;ul&gt;
&lt;li&gt;From DB&lt;/li&gt;
&lt;li&gt;Queue&lt;/li&gt;
&lt;li&gt;API&lt;/li&gt;
&lt;li&gt;From text file&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Different Tuple States
&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;ul&gt;
&lt;li&gt;ASK-Storm fully processed&lt;/li&gt;
&lt;li&gt;ACTIVATE-Deactivation to Activation&lt;/li&gt;
&lt;li&gt;CLOSE-Spout Shutdown&lt;/li&gt;
&lt;li&gt;DEACTIVATE-Deactivation&lt;/li&gt;
&lt;li&gt;FAIL-Failed to process fully&lt;/li&gt;
&lt;li&gt;NEXT TUPLE-request for next tuple emit to output collector&lt;/li&gt;
&lt;li&gt;OPEN-Initialization&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/6300424777818161405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2015/04/a-brief-intro-of-apache-storm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/6300424777818161405'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/6300424777818161405'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2015/04/a-brief-intro-of-apache-storm.html' title='A Brief Intro of Apache Storm'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnHqidiQyxVDjf8handHZfd_ZIwfDRwjWEHeuXxr0J4ZxGzu7SabTM9hGcUZ2ukz5AziE2wWYqKp_sSe1AZw87kvZth5erNsE6OpXzxDlO-DqWTbZZJBFtlDYVhN5x5tlaVchSENlmzKc/s72-c/storm_logo.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-3069709037992661877</id><published>2014-10-06T23:57:00.006+05:30</published><updated>2018-05-02T20:25:40.875+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hadoop"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>Install Hadoop 2.5.1 on Windows 7 - 64Bit Operating System</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script src=&quot;https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js&quot;&gt;&lt;/script&gt;
&lt;style&gt;
pre .str, code .str { color: #65B042; } /* string  - green */
pre .kwd, code .kwd { color: #E28964; } /* keyword - dark pink */
pre .com, code .com { color: #AEAEAE; font-style: italic; } /* comment - gray */
pre .typ, code .typ { color: #89bdff; } /* type - light blue */
pre .lit, code .lit { color: #3387CC; } /* literal - blue */
pre .pun, code .pun { color: #fff; } /* punctuation - white */
pre .pln, code .pln { color: #fff; } /* plaintext - white */
pre .tag, code .tag { color: #89bdff; } /* html/xml tag    - light blue */
pre .atn, code .atn { color: #bdb76b; } /* html/xml attribute name  - khaki */
pre .atv, code .atv { color: #65B042; } /* html/xml attribute value - green */
pre .dec, code .dec { color: #3387CC; } /* decimal - blue */

pre.prettyprint, code.prettyprint {
 background-color: #000;
 border-radius: 8px;
}

pre.prettyprint {
 width: 95%;
 margin: 1em auto;
 padding: 1em;
 white-space: pre-wrap;
}

/* Specify class=linenums on a pre to get line numbering */
ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE; } /* IE indents via margin-left */
li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
/* Alternate shading for lines */
li.L1,li.L3,li.L5,li.L7,li.L9 { }

@media print {
  pre .str, code .str { color: #060; }
  pre .kwd, code .kwd { color: #006; font-weight: bold; }
  pre .com, code .com { color: #600; font-style: italic; }
  pre .typ, code .typ { color: #404; font-weight: bold; }
  pre .lit, code .lit { color: #044; }
  pre .pun, code .pun { color: #440; }
  pre .pln, code .pln { color: #000; }
  pre .tag, code .tag { color: #006; font-weight: bold; }
  pre .atn, code .atn { color: #404; }
  pre .atv, code .atv { color: #060; }
}
&lt;/style&gt;
&lt;div align=&quot;justify&quot;&gt;
This post is about installing Single Node Cluster Hadoop 2.5.1 (latest stable version) on Windows 7 Operating Systems.Hadoop
was primarily designed for Linux platform. Hadoop supports for
windows from its version 2.2, but we need prepare our platform
binaries. Hadoop official website recommend Windows developers to use
this build for development environment and not on production, since
it is not completely tested success on Windows platform. This
post describes the procedure for generating the Hadoop build for
Windows platform.
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #38761d;&quot;&gt;&lt;b&gt;Generating Hadoop Build For Windows Platform&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;Step 1:Install Microsoft Windows SDK 7.1&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;In my case, I have used Windows 7 64 bit Operating System. Download Microsoft Windows SDK 7.1 from &lt;a href=&quot;http://www.microsoft.com/en-in/download/details.aspx?id=8279&quot;&gt;Microsoft Official website&lt;/a&gt; and install it.&lt;/li&gt;
&lt;li&gt;While installing Windows SDK,I have faced problem like C++ 2010 Redistribution is already installed. This problem will happen only if we have installed C++ 2010 Redistribution of higher version compared to the Windows SDK.&lt;/li&gt;
&lt;li&gt;&amp;nbsp;We can solve this issue by either not installing the C++ 2010 Redistribution by unchecked the Windows SDK on custom component selection or uninstalling from Control Panel and reinstalling the C++ 2010 Redistribution via Windows SDK again.&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjumetQsGD8z52mr3y7aI32348FuDQ5nbnqWWuY0J1m3MySjsYO0pNe56OPVmLZDBM274bPxsjqn-lerUdIwBpMARULjrKt3HjjnUvOdyASUTiQPH3ibgZn3xGllAM_NvlQqYDELdkC5xY/s1600/sdk2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;448&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjumetQsGD8z52mr3y7aI32348FuDQ5nbnqWWuY0J1m3MySjsYO0pNe56OPVmLZDBM274bPxsjqn-lerUdIwBpMARULjrKt3HjjnUvOdyASUTiQPH3ibgZn3xGllAM_NvlQqYDELdkC5xY/s640/sdk2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;i&gt;&lt;b&gt;Step 2:Install Oracle Java JDK 1.7&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;I recommend everybody to download &lt;a href=&quot;http://www.oracle.com/technetwork/java/javase/downloads/index.html&quot;&gt;Oracle Java JDK7&lt;/a&gt; and install JDK at C:\Java\ instead of default path C:\Programming Files\Java\. Since this default path contains invalid space character between “Programming” “Files”.&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFF0ZlZGasgajiQoycQcjQU4lP48FKzlGMhJeHh0ktr_zkRgckftei3FbaIvtTBiPilvHnb3Ckx4oRQHl68wP5iODR-qgwMlNXgme8GtVCsRae4FvAOYQxY99d75U8xQwvQexOk0LLKpY/s1600/Screenshot+2014-10-06+11.53.26.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;483&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFF0ZlZGasgajiQoycQcjQU4lP48FKzlGMhJeHh0ktr_zkRgckftei3FbaIvtTBiPilvHnb3Ckx4oRQHl68wP5iODR-qgwMlNXgme8GtVCsRae4FvAOYQxY99d75U8xQwvQexOk0LLKpY/s640/Screenshot+2014-10-06+11.53.26.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Now we need to configure &lt;i&gt;&lt;b&gt;JAVA_HOME&lt;/b&gt;&lt;/i&gt; Environment Variable with value “&lt;i&gt;&lt;b&gt;C:\Java\jdk1.7.0_51&lt;/b&gt;&lt;/i&gt;”. If we have already installed Java at it&#39;s default path (C:\Programming Files\Java\). We need to find its 8.3 pathname with the helpof&amp;nbsp; “&lt;i&gt;&lt;b&gt;dir /X&lt;/b&gt;&lt;/i&gt;” command from its parent directory. The sample 8.3 pathname will look like &quot;&lt;i&gt;&lt;b&gt;C:\PROGRA~1\Java\jdk1.7.0_51&lt;/b&gt;&lt;/i&gt;&quot;. &lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjwHTRRoSH7yeZTShvm3Kvja0zEhtSp0wlyQc6ExqMjy7p_moEZeI5kLQNvufQnulOh57ImmYFU7-W07eGeglNW3FmAUWPuYugHxunA75TwHi5b4NtTDWJuFSqd3XFdW_KRsDKoOXT2eo/s1600/Screenshot+2014-10-06+11.45.37.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;536&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjwHTRRoSH7yeZTShvm3Kvja0zEhtSp0wlyQc6ExqMjy7p_moEZeI5kLQNvufQnulOh57ImmYFU7-W07eGeglNW3FmAUWPuYugHxunA75TwHi5b4NtTDWJuFSqd3XFdW_KRsDKoOXT2eo/s640/Screenshot+2014-10-06+11.45.37.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Finally we need to add Java bin path to &lt;i&gt;&lt;b&gt;PATH&lt;/b&gt;&lt;/i&gt; enviroment variable as “&lt;i&gt;&lt;b&gt;%JAVA_HOME%\bin&lt;/b&gt;&lt;/i&gt;”.&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw5DDQWXWg2gSuvB8y1sXCw5fAKElJoTPP8EoM6jnepDEMor58Hwrs3gq73fC5eCK2oUxKU2Nt1Z2UdmBw3xyS9MhZa7LOMzI2oLzrzZiKYlvuNn43kxkMn9jd8EP7CKE9XqOoIX-g9y4/s1600/Screenshot+2014-10-06+11.47.48.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;171&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw5DDQWXWg2gSuvB8y1sXCw5fAKElJoTPP8EoM6jnepDEMor58Hwrs3gq73fC5eCK2oUxKU2Nt1Z2UdmBw3xyS9MhZa7LOMzI2oLzrzZiKYlvuNn43kxkMn9jd8EP7CKE9XqOoIX-g9y4/s400/Screenshot+2014-10-06+11.47.48.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6tQXFP0ABhtIBhTMhg2_s3qsIi9mK20t5H_RRHiPxn497URX9dIV6Xim462YqxyM7RV8iB5ZKg6x_3bO4FP-4D5K_VZ9FUwQrxlZZ4VHvkekO9a1NcfLPbRzX3vUGcf3AGuGzI70mq60/s1600/Screenshot+2014-10-06+11.46.56.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;170&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6tQXFP0ABhtIBhTMhg2_s3qsIi9mK20t5H_RRHiPxn497URX9dIV6Xim462YqxyM7RV8iB5ZKg6x_3bO4FP-4D5K_VZ9FUwQrxlZZ4VHvkekO9a1NcfLPbRzX3vUGcf3AGuGzI70mq60/s400/Screenshot+2014-10-06+11.46.56.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;i&gt;&lt;b&gt;Step 3:Install Maven 3.2.1&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Download latest Apache Maven from its &lt;a href=&quot;ftp://mirror.reverse.net/pub/apache/maven/maven-3/3.2.3/binaries/apache-maven-3.2.3-bin.zip&quot;&gt;official website&lt;/a&gt; and extract to C:\maven. Configure the &lt;i&gt;&lt;b&gt;M2_HOME&lt;/b&gt;&lt;/i&gt; Enviroment Variable with maven home directory path “&lt;i&gt;&lt;b&gt;C:\maven&lt;/b&gt;&lt;/i&gt;”.&amp;nbsp;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMmFgr8N8BjYzyeJyTYiJW3BsoTgYInXLvOHCEJJSsp-NpMNoTP5lYMi8IPb5FOwtUgbQy41QnGFWD2Ac-xOiD4Se0X7ubPQma3SvWthpYOb_6AD6Bpg7iUSJJyil4EffBlxd2Rd5sL1c/s1600/Screenshot+2014-10-06+12.01.11.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;171&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMmFgr8N8BjYzyeJyTYiJW3BsoTgYInXLvOHCEJJSsp-NpMNoTP5lYMi8IPb5FOwtUgbQy41QnGFWD2Ac-xOiD4Se0X7ubPQma3SvWthpYOb_6AD6Bpg7iUSJJyil4EffBlxd2Rd5sL1c/s400/Screenshot+2014-10-06+12.01.11.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Finally add the maven bin path to&amp;nbsp; &lt;i&gt;&lt;b&gt;PATH&lt;/b&gt;&lt;/i&gt; Environment variable as “&lt;i&gt;&lt;b&gt;%M2_HOME%\bin&lt;/b&gt;&lt;/i&gt;&quot;.&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzaeFZg-_1eAulc7EN9xKVV-0rZUVXdsCu7y_HtFA0rzgCpkVYOfE6VEJDzLRe8UgYjSjHus2gQUZNX9Zzxp8ztfBlLtmA0ZpzKBCKWz0r9ZplDJhbxpMVTbpYBwFrEF33EyzxUxtIzeE/s1600/Screenshot+2014-10-06+12.01.25.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;171&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzaeFZg-_1eAulc7EN9xKVV-0rZUVXdsCu7y_HtFA0rzgCpkVYOfE6VEJDzLRe8UgYjSjHus2gQUZNX9Zzxp8ztfBlLtmA0ZpzKBCKWz0r9ZplDJhbxpMVTbpYBwFrEF33EyzxUxtIzeE/s400/Screenshot+2014-10-06+12.01.25.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;i&gt;&lt;b&gt;Step 4: Install Protocol buffer 2.5.0&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Download binary version of Protocol Buffer from it &lt;a href=&quot;https://protobuf.googlecode.com/files/protoc-2.5.0-win32.zip&quot;&gt;official website&lt;/a&gt; and extract it to “&lt;i&gt;&lt;b&gt;C:\protobuf&lt;/b&gt;&lt;/i&gt;” directory and add this path to &lt;i&gt;&lt;b&gt;PATH&lt;/b&gt;&lt;/i&gt; Environment Variable. &lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1UanY5vNRsh3rWXvNfpO0OX5HROvuggfzdoaID4g7MdC5XpgSqu6fpj5SiGzu0mB1kqMrThkom1y583xf49dvS2v3UUxb1meOH3k4zusXHrZqATj0oufjVYAPCJimyNUtPcEdeklOKgU/s1600/Screenshot+2014-10-06+12.04.02.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;171&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1UanY5vNRsh3rWXvNfpO0OX5HROvuggfzdoaID4g7MdC5XpgSqu6fpj5SiGzu0mB1kqMrThkom1y583xf49dvS2v3UUxb1meOH3k4zusXHrZqATj0oufjVYAPCJimyNUtPcEdeklOKgU/s400/Screenshot+2014-10-06+12.04.02.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;i&gt;&lt;b&gt;Step 5: Install Cygwin&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Download the latest version of Cygwin from its &lt;a href=&quot;http://cygwin.com/setup-x86_64.exe&quot;&gt;official website&lt;/a&gt; and install at &quot;&lt;i&gt;&lt;b&gt;C:\cygwin64&lt;/b&gt;&lt;/i&gt;&quot; with &lt;i&gt;&lt;b&gt;ssh, sh&lt;/b&gt;&lt;/i&gt; packages.&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg61dxAyytDKG1LlBrwkjwRyLVRsXdgMcKEy0tuBETciyjKVvbuCOGtZFCpAPLkyR1cFsodL3HfIrEkLT3luPZOBY7POccg_cx_n_Fptdi6cGMSfdX5Fa8NnNxZburcvBhif-dsnU8PyJQ/s1600/Screenshot+2014-10-06+12.09.32.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;489&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg61dxAyytDKG1LlBrwkjwRyLVRsXdgMcKEy0tuBETciyjKVvbuCOGtZFCpAPLkyR1cFsodL3HfIrEkLT3luPZOBY7POccg_cx_n_Fptdi6cGMSfdX5Fa8NnNxZburcvBhif-dsnU8PyJQ/s640/Screenshot+2014-10-06+12.09.32.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Finally add the cygwin bin path to &lt;i&gt;&lt;b&gt;PATH&lt;/b&gt;&lt;/i&gt; environment variable.&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAb_A2O69w579lLdwz_nq-dZfpbHS_aBJaq1C3ozG2-4XhyCimGfgpIUDmAMduLCYXdk5U9yBoGuxHQkC8ScRQbMIVO1lGt7fz865dp1Cs5WaD2U_YOAID6QCTMxyPQIXsm-hYbbKfgHU/s1600/Screenshot+2014-10-06+12.07.40.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;171&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAb_A2O69w579lLdwz_nq-dZfpbHS_aBJaq1C3ozG2-4XhyCimGfgpIUDmAMduLCYXdk5U9yBoGuxHQkC8ScRQbMIVO1lGt7fz865dp1Cs5WaD2U_YOAID6QCTMxyPQIXsm-hYbbKfgHU/s400/Screenshot+2014-10-06+12.07.40.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;i&gt;&lt;b&gt;Step 6: Install cmake 3.0.2&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Download the latest cmake from its &lt;a href=&quot;http://www.cmake.org/files/v3.0/cmake-3.0.2-win32-x86.exe&quot;&gt;official website&lt;/a&gt; and&amp;nbsp; install it normally.&lt;/li&gt;
&lt;/ul&gt;
&lt;i&gt;&lt;b&gt;Step 7: Configure “Platform” Environment Varibale.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Add the “Platform” environment variable with the value of either “x64” or “Win32” for buildin on 64-bit or 32-bit system.(Case-sensitive)&lt;/li&gt;
&lt;/ul&gt;
&lt;i&gt;&lt;b&gt;Step 8:Create Hadoop Build&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Download the latest stable version of Hadoop source from its &lt;a href=&quot;http://www.carfab.com/apachesoftware/hadoop/common/hadoop-2.5.1/hadoop-2.5.1-src.tar.gz&quot;&gt;official website&lt;/a&gt; and extract it to “C:\hdc”. Now we can generate Hadoop Windows Build by executing the following command on Windows SDK Command Prompt.
&lt;pre class=&quot;prettyprint lang-sql&quot;&gt;mvn package -Pdist,native-win -DskipTests -Dtar&lt;/pre&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAXqOOpTR324NtRD3OuQx9t0EbbaOSzIjQKOqFZdyEZiZUBtSK5uSpEy4Q7gCJ0xBlFq-3pL6p_mn8_GjockwEHjcLpWeXdCHtqlEJ6tsSjF4RK0Il1MY6cBr81nMUpqH9lVcHak6DhO0/s1600/Screenshot+2014-10-06+12.14.58.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;192&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAXqOOpTR324NtRD3OuQx9t0EbbaOSzIjQKOqFZdyEZiZUBtSK5uSpEy4Q7gCJ0xBlFq-3pL6p_mn8_GjockwEHjcLpWeXdCHtqlEJ6tsSjF4RK0Il1MY6cBr81nMUpqH9lVcHak6DhO0/s640/Screenshot+2014-10-06+12.14.58.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;The above command will run for approx 30 min and output the Hadoop Windows build at C:\hdc\hadoop-dist\target” directory.&lt;/li&gt;
&lt;/ul&gt;
&lt;span style=&quot;color: #38761d;&quot;&gt;&lt;b&gt;Configuring Hadoop for Single Node(Pseudo Distributed) Cluster&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;Step 1:Extract Hadoop&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Copy the Hadoop Windows Build tar.gz file from “&lt;i&gt;&lt;b&gt;C:\hdc\hadoop-dist\target&lt;/b&gt;&lt;/i&gt;” and extract at “&lt;i&gt;&lt;b&gt;C:\hadoop&lt;/b&gt;&lt;/i&gt;”.&lt;/li&gt;
&lt;/ul&gt;
&lt;i&gt;&lt;b&gt;Step 2: Configure hadoop-env.cmd&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Edit the “&lt;i&gt;&lt;b&gt;C:\hadoop\etc\hadoop\hadoop-env.cmd&lt;/b&gt;&lt;/i&gt;” file and add the following lines at the end of the file. The following lines will configure the Hadoop and Yarn Configuration Directories.
&lt;pre class=&quot;prettyprint lang-sql&quot;&gt;set HADOOP_PREFIX=c:\deploy
set HADOOP_CONF_DIR=%HADOOP_PREFIX%\etc\hadoop
set YARN_CONF_DIR=%HADOOP_CONF_DIR%
set PATH=%PATH%;%HADOOP_PREFIX%\bin&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;i&gt;&lt;b&gt;Step 3: Configure core-site.xml&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Edit the “&lt;i&gt;&lt;b&gt;C:\hadoop\etc\hadoop\core-site.xml&lt;/b&gt;&lt;/i&gt;” file and configure the following property. &lt;pre class=&quot;prettyprint lang-sql&quot;&gt;&amp;lt;configuration&amp;gt;
    &amp;lt;property&amp;gt;
        &amp;lt;name&amp;gt;fs.default.name&amp;lt;/name&amp;gt;
        &amp;lt;value&amp;gt;hdfs://0.0.0.0:19000&amp;lt;/value&amp;gt;
    &amp;lt;/property&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;i&gt;&lt;b&gt;Step 4: Configure hdfs-site.xml&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Edit the “&lt;i&gt;&lt;b&gt;C:\hadoop\etc\hadoop\hdfs-site.xml&lt;/b&gt;&lt;/i&gt;” file and configure the following property.
&lt;pre class=&quot;prettyprint lang-sql&quot;&gt;&amp;lt;configuration&amp;gt;
    &amp;lt;property&amp;gt;
        &amp;lt;name&amp;gt;dfs.replication&amp;lt;/name&amp;gt;
        &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;
    &amp;lt;/property&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;i&gt;&lt;b&gt;Step 5: Configure mapred-site.xml&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Edit the “&lt;i&gt;&lt;b&gt;C:\hadoop\etc\hadoop\mapred-site.xml&lt;/b&gt;&lt;/i&gt;” file and configure the following property.
&lt;pre class=&quot;prettyprint lang-sql&quot;&gt;&amp;lt;configuration&amp;gt;
    &amp;lt;property&amp;gt;
        &amp;lt;name&amp;gt;mapred.job.tracker&amp;lt;/name&amp;gt;
        &amp;lt;value&amp;gt;localhost:54311&amp;lt;/value&amp;gt;
    &amp;lt;/property&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;i&gt;&lt;b&gt;Step 5: Create tmp directory&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Create a tmp directory as “&lt;i&gt;&lt;b&gt;C:\tmp&lt;/b&gt;&lt;/i&gt;”, where “C:\tmp” is the default temperory directory for Hadoop.&lt;/li&gt;
&lt;/ul&gt;
&lt;i&gt;&lt;b&gt;Step 6: Execute hadoop-env.cmd&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Execute the “&lt;i&gt;&lt;b&gt;C:\hadoop\etc\hadoop\hadoop-env.cmd&lt;/b&gt;&lt;/i&gt;” file from the &lt;i&gt;&lt;b&gt;Command Prompt&lt;/b&gt;&lt;/i&gt; to set the Environment Varibales. &lt;/li&gt;
&lt;/ul&gt;
&lt;i&gt;&lt;b&gt;Step 7: Format File System&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Format the file sytem by executing the following command before first time usage.
&lt;pre class=&quot;prettyprint lang-sql&quot;&gt;%HADOOP_PREFIX%\bin\hdfs namenode -format&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;i&gt;&lt;b&gt;Step 8: Start HDFS &lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Execute the following command to start the HDFS.
&lt;pre class=&quot;prettyprint lang-sql&quot;&gt;%HADOOP_PREFIX%\sbin\start-dfs.cmd&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;i&gt;&lt;b&gt;Step 9: Check via Web-browser&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Open the browser with address &lt;a href=&quot;http://localhost:50070/&quot;&gt;http://localhost:50070&lt;/a&gt;, this page will display the currently running nodes and we can browse the HDFS also on this portal.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/3069709037992661877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2014/10/install-hadoop-251-on-windows-7-64bit.html#comment-form' title='24 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/3069709037992661877'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/3069709037992661877'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2014/10/install-hadoop-251-on-windows-7-64bit.html' title='Install Hadoop 2.5.1 on Windows 7 - 64Bit Operating System'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjumetQsGD8z52mr3y7aI32348FuDQ5nbnqWWuY0J1m3MySjsYO0pNe56OPVmLZDBM274bPxsjqn-lerUdIwBpMARULjrKt3HjjnUvOdyASUTiQPH3ibgZn3xGllAM_NvlQqYDELdkC5xY/s72-c/sdk2.png" height="72" width="72"/><thr:total>24</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-717414640532194594</id><published>2014-09-27T14:47:00.002+05:30</published><updated>2018-05-02T20:27:10.594+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hadoop"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><title type='text'>Install Latest Hadoop 2.4.1 on Ubuntu 14.04</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script src=&quot;https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js&quot;&gt;&lt;/script&gt;
&lt;style&gt;
pre .str, code .str { color: #65B042; } /* string  - green */
pre .kwd, code .kwd { color: #E28964; } /* keyword - dark pink */
pre .com, code .com { color: #AEAEAE; font-style: italic; } /* comment - gray */
pre .typ, code .typ { color: #89bdff; } /* type - light blue */
pre .lit, code .lit { color: #3387CC; } /* literal - blue */
pre .pun, code .pun { color: #fff; } /* punctuation - white */
pre .pln, code .pln { color: #fff; } /* plaintext - white */
pre .tag, code .tag { color: #89bdff; } /* html/xml tag    - light blue */
pre .atn, code .atn { color: #bdb76b; } /* html/xml attribute name  - khaki */
pre .atv, code .atv { color: #65B042; } /* html/xml attribute value - green */
pre .dec, code .dec { color: #3387CC; } /* decimal - blue */

pre.prettyprint, code.prettyprint {
 background-color: #000;
 border-radius: 8px;
}

pre.prettyprint {
 width: 95%;
 margin: 1em auto;
 padding: 1em;
 white-space: pre-wrap;
}

/* Specify class=linenums on a pre to get line numbering */
ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE; } /* IE indents via margin-left */
li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
/* Alternate shading for lines */
li.L1,li.L3,li.L5,li.L7,li.L9 { }

@media print {
  pre .str, code .str { color: #060; }
  pre .kwd, code .kwd { color: #006; font-weight: bold; }
  pre .com, code .com { color: #600; font-style: italic; }
  pre .typ, code .typ { color: #404; font-weight: bold; }
  pre .lit, code .lit { color: #044; }
  pre .pun, code .pun { color: #440; }
  pre .pln, code .pln { color: #000; }
  pre .tag, code .tag { color: #006; font-weight: bold; }
  pre .atn, code .atn { color: #404; }
  pre .atv, code .atv { color: #060; }
}
&lt;/style&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This post is about Hadoop 2.4.1 (latest stable version) Single Node Cluster Installation on Ubuntu 14.04. The Hadoop Single Node Cluster Installation method are suitable only for beginners practicing. The Hadoop Multi Node Cluster is more suitable for production environment Since Hadoop is meant for distributed environment. The Multi Node Cluster Hadoop Installation steps are almost as same as Single Node Cluster Hadoop Installation with few configuration changes. My next post will cover the Multi Node Cluster Hadoop Installation.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The Hadoop installation requires the pre-require steps like installing Java &amp;amp; ssh, creating dedicated Linux user account, disabling IPv6, generating key-gen for user account. This pre-require steps requires for Hadoop node(s) communication by Secure Shell Protocol(ssh). Disable IPv6 requires since Hadoop doesn&#39;t support for IPv6.&lt;/div&gt;
&lt;br /&gt;
Step 1: &lt;a href=&quot;http://harishshan.blogspot.in/2014/04/how-to-install-java-on-ubuntu.html&quot;&gt;Install Oracle Java JDK7 on Ubuntu&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Step 2: Install SSH-Server&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;To install Open ssh server, execute the following command in terminal
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;sudo apt-get install openssh-server&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
Step 3: Create &quot;hduser&quot; user account under &quot;hadoop&quot; user group.
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Execute the following command to create user group and user account. Give all required information while creating user account and give password as &quot;hduser&quot;.
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;sudo addgroup hadoop
sudo adduser --ingroup hadoop hduser
sudo adduser hduser sudo&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
Step 4: Disable IPv6&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Open the &quot;/etc/sysctl.conf&quot; file with gedit as sudo user.
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;sudo gedit /etc/sysctl.conf&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Configure to disable the IPv6 by modifying/adding the following lines at last. 
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;#disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Save &amp;amp; close the file then reboot the machine.
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;sudo shutdown -r now&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Check the configuration &lt;pre class=&quot;prettyprint lang-sh&quot;&gt;sudo sysctl -p&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
Step 5: Generate key-gen for hduser.&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Execute the following command and give no password or key while generating key-gen&lt;/li&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;su - hduser
ssh-keygen -t rsa -P &quot;&quot;
cat $HOME/.ssh/id_rsa.pub &amp;gt;&amp;gt; $HOME/.ssh/authorized_keys&lt;/pre&gt;
&lt;li&gt;Now check the ssh for localhost
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;su - hduser
ssh localhost&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;If the above ssh is not working properly, we need to check and redo our Step 4 and Step 5 properly again.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Step 6: Download, Extract and Move Hadoop to hduser Home.
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Execute the following commands on terminal to download Hadoop and extract to hduser home directory
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;su - hduser
cd /home/hduser/
wget http://apache.osuosl.org/hadoop/common/hadoop-2.4.1/hadoop-2.4.1.tar.gz
tar -zxvf hadoop-2.4.1.tar.gz
mv hadoop-2.4.1 hadoop&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
Step 7: Configure Environment Variable.&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Open&amp;nbsp; &quot;$HOME/.bashrc&quot; file with gedit as hduser.
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;gedit $HOME/.bashrc&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Add/Modify the following Environment Variables.
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;export HADOOP_PREFIX=/home/hduser/hadoop
export JAVA_HOME=/usr/java/jdk1.7.0_51
export PATH=$PATH:$HADOOP_PREFIX/bin:$JAVA_HOME/bin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_PREFIX/lib/native
export HADOOP_OPTS=&quot;-Djava.library.path=$HADOOP_PREFIX/lib&quot;
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Save &amp;amp; Close the file then Execute the bash file:
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;exec bash&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Check the Path environment variable:&lt;br /&gt;&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;$PATH&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
Step 8: Configure Hadoop Environment variable&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Open &quot;/home/hduser/hadoop/etc/hadoop/hadoop-env.sh&quot; file with gedit as hduser.
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;gedit /home/hduser/hadoop/etc/hadoop/hadoop-env.sh&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Add/Modify the following Environment Variable Path &lt;pre class=&quot;prettyprint lang-sh&quot;&gt;export JAVA_HOME=/usr/java/jdk1.7.0_51&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Save &amp;amp; Close the file&lt;/li&gt;
&lt;/ul&gt;
Step 9: Configure &quot;core-site.xml&quot; file for working temporary directory and name for File System.&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Create a temp directory at hduser home 
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;mkdir /home/hduser/tmp&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Open &quot;/home/hduser/hadoop/etc/hadoop/core-site.xml&quot; flle with gedit as hduser&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;gedit /home/hduser/hadoop/etc/hadoop/core-site.xml&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Add the following configurations in &quot;core-site.xml&quot; file. Then Save &amp;amp; Close the file&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;
&amp;lt;configuration&amp;gt;
    &amp;lt;property&amp;gt;
        &amp;lt;name&amp;gt;hadoop.tmp.dir&amp;lt;/name&amp;gt;
        &amp;lt;value&amp;gt;/home/hduser/tmp&amp;lt;/value&amp;gt;
        &amp;lt;description&amp;gt;Base temporary directories&amp;lt;/description&amp;gt;
    &amp;lt;/property&amp;gt;
    &amp;lt;property&amp;gt;
        &amp;lt;name&amp;gt;fs.default.name&amp;lt;/name&amp;gt;
        &amp;lt;value&amp;gt;hdfs://localhost:54310&amp;lt;/value&amp;gt;
        &amp;lt;description&amp;gt;Default file system name&amp;lt;/description&amp;gt;
    &amp;lt;/property&amp;gt;
&amp;lt;/configuration&amp;gt;
&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
Step 10: Configure &quot;hdfs-site.xml&quot; file for data directory and replication.&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Create a data direcotry directory 
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;mkdir /home/hduser/tmp/dfs/data&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Open &quot;/home/hduser/hadoop/etc/hadoop/hdfs-site.xml&quot; flle with gedit as hduser&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;gedit /home/hduser/hadoop/etc/hadoop/hdfs-site.xml&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Add the following configurations in &quot;hdfs-site.xml&quot; file. Then Save &amp;amp; Close the file 
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;
&amp;lt;configuration&amp;gt;
    &amp;lt;property&amp;gt;
        &amp;lt;name&amp;gt;dfs.replication&amp;lt;/name&amp;gt;
        &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;
    &amp;lt;/property&amp;gt;
    &amp;lt;property&amp;gt;
        &amp;lt;name&amp;gt;dfs.data.dir&amp;lt;/name&amp;gt;
        &amp;lt;value&amp;gt;/home/hduser/tmp/dfs/data&amp;lt;/value&amp;gt;
    &amp;lt;/property&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
Step 11: Configure &quot;mapred-site.xml&quot; file for Host and Port number of Job Tracker.&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Open &quot;/home/hduser/hadoop/etc/hadoop/mapred-site.xml&quot; file with gedit as hduser&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;gedit /home/hduser/hadoop/etc/hadoop/mapred-site.xml&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Add the following configurations in &quot;mapred-site.xml&quot; file. Then Save &amp;amp; Close the file&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;
&amp;lt;configuration&amp;gt;
 &amp;lt;property&amp;gt;
        &amp;lt;name&amp;gt;mapred.job.tracker&amp;lt;/name&amp;gt;
        &amp;lt;value&amp;gt;localhost:54311&amp;lt;/value&amp;gt;
        &amp;lt;description&amp;gt;Host,port for MapReduce Job Tracker&amp;lt;/description&amp;gt;
    &amp;lt;/property&amp;gt;
&amp;lt;/configuration&amp;gt;
&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
Step 12: Configure &quot;yarn-site.xml&quot; file for node manager and resource manager configurations.(Configuring yarn is optional)&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Open &quot;/home/hduser/hadoop/etc/hadoop/yarn-site.xml&quot; file with gedit as hduser&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;gedit /home/hduser/hadoop/etc/hadoop/yarn-site.xml&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Add the following configurations in &quot;yarn-site.xml&quot; file. Then Save &amp;amp; Close the file&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;
&amp;lt;configuration&amp;gt;
    &amp;lt;property&amp;gt;
        &amp;lt;name&amp;gt;yarn.nodemanager.aux-services&amp;lt;/name&amp;gt;
        &amp;lt;value&amp;gt;mapreduce_shuffle&amp;lt;/value&amp;gt;
    &amp;lt;/property&amp;gt;
    &amp;lt;property&amp;gt;
        &amp;lt;name&amp;gt;yarn.nodemanager.aux-services.mapreduce_shuffle.class&amp;lt;/name&amp;gt;
        &amp;lt;value&amp;gt;org.apache.hadoop.mapred.ShuffleHandler&amp;lt;/value&amp;gt;
    &amp;lt;/property&amp;gt;
    &amp;lt;property&amp;gt;
        &amp;lt;name&amp;gt;yarn.resourcemanager.resource-tracker.address&amp;lt;/name&amp;gt;
        &amp;lt;value&amp;gt;localhost:8025&amp;lt;/value&amp;gt;
    &amp;lt;/property&amp;gt;
    &amp;lt;property&amp;gt;
        &amp;lt;name&amp;gt;yarn.resourcemanager.scheduler.address&amp;lt;/name&amp;gt;
        &amp;lt;value&amp;gt;localhost:8030&amp;lt;/value&amp;gt;
    &amp;lt;/property&amp;gt;
    &amp;lt;property&amp;gt;
        &amp;lt;name&amp;gt;yarn.resourcemanager.address&amp;lt;/name&amp;gt;
        &amp;lt;value&amp;gt;localhost:8050&amp;lt;/value&amp;gt;
    &amp;lt;/property&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
Step 13: Format namenode and start Hadoop dfs&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Execute the following command to format namenode and to start HDFS
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;
/home/hduser/hadoop/bin/hdfs namenode -format
/home/hduser/hadoop/sbin/start-dfs.sh&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;List Hadoop Nodes
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;jps&lt;/pre&gt;
It will list all tasks running like NameNode, DataNode, SecondaryNameNode, JobTracker, TaskTracker
&lt;/li&gt;
&lt;/ul&gt;
The Hadoop Installation is completed, Now we can use Hadoop. &lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/717414640532194594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2014/09/install-latest-hadoop-241-on-ubuntu-1404.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/717414640532194594'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/717414640532194594'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2014/09/install-latest-hadoop-241-on-ubuntu-1404.html' title='Install Latest Hadoop 2.4.1 on Ubuntu 14.04'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-2840305133174251479</id><published>2014-09-25T01:11:00.002+05:30</published><updated>2018-05-02T20:29:41.066+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Command"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>WIFI hotspot on Windows</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script src=&quot;https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js&quot;&gt;&lt;/script&gt;
&lt;style&gt;
pre .str, code .str { color: #65B042; } /* string  - green */
pre .kwd, code .kwd { color: #E28964; } /* keyword - dark pink */
pre .com, code .com { color: #AEAEAE; font-style: italic; } /* comment - gray */
pre .typ, code .typ { color: #89bdff; } /* type - light blue */
pre .lit, code .lit { color: #3387CC; } /* literal - blue */
pre .pun, code .pun { color: #fff; } /* punctuation - white */
pre .pln, code .pln { color: #fff; } /* plaintext - white */
pre .tag, code .tag { color: #89bdff; } /* html/xml tag    - light blue */
pre .atn, code .atn { color: #bdb76b; } /* html/xml attribute name  - khaki */
pre .atv, code .atv { color: #65B042; } /* html/xml attribute value - green */
pre .dec, code .dec { color: #3387CC; } /* decimal - blue */

pre.prettyprint, code.prettyprint {
 background-color: #000;
 border-radius: 8px;
}

pre.prettyprint {
 width: 95%;
 margin: 1em auto;
 padding: 1em;
 white-space: pre-wrap;
}

/* Specify class=linenums on a pre to get line numbering */
ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE; } /* IE indents via margin-left */
li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
/* Alternate shading for lines */
li.L1,li.L3,li.L5,li.L7,li.L9 { }

@media print {
  pre .str, code .str { color: #060; }
  pre .kwd, code .kwd { color: #006; font-weight: bold; }
  pre .com, code .com { color: #600; font-style: italic; }
  pre .typ, code .typ { color: #404; font-weight: bold; }
  pre .lit, code .lit { color: #044; }
  pre .pun, code .pun { color: #440; }
  pre .pln, code .pln { color: #000; }
  pre .tag, code .tag { color: #006; font-weight: bold; }
  pre .atn, code .atn { color: #404; }
  pre .atv, code .atv { color: #060; }
}
&lt;/style&gt;
&lt;p align=&quot;justify&quot;&gt;This post is about creating our own WIFI hotspot on Windows Machine with out any software.&lt;p&gt;
&lt;p align=&quot;justify&quot;&gt;
Only pre-requiest for creating WIFI hotspot is that our Windows machine should have incoming Internet via Ethernet or WIFI dongles,etc&amp;nbsp; and a WIFI Device to share as hotspot. We can create our WIFI hotspot with simple windows commands by following the below steps:&lt;/p&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Open &lt;i&gt;control Panel&lt;/i&gt;, Go to O&lt;i&gt;pen Network and Sharing Center&lt;/i&gt; and click on &lt;i&gt;Change Adapter Settings.&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;Go to S&lt;i&gt;haring Tab&lt;/i&gt; of the Ethernet properties and Enable the check-box of&amp;nbsp; &lt;i&gt;Allow other network users to connect through this computer&#39;s Internet connection&lt;/i&gt;.&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhI2aI5s4C1TRCRtBW3D5Ny3XqT74iCiZ23z9tHfQVHSOQx1AeM6FAtFHfdGQxbnsjdwobjtUaxoGGcBdkT_QGnShMIeo4fGUuic7OiIG6gp33WGSJh-svZBPkA7-urm57ZhZpmhhZGiQ/s1600/internet-connection-sharing-ics.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhI2aI5s4C1TRCRtBW3D5Ny3XqT74iCiZ23z9tHfQVHSOQx1AeM6FAtFHfdGQxbnsjdwobjtUaxoGGcBdkT_QGnShMIeo4fGUuic7OiIG6gp33WGSJh-svZBPkA7-urm57ZhZpmhhZGiQ/s640/internet-connection-sharing-ics.jpg&quot; width=&quot;507&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Open notepad,type the following commands and save as batch file with filename as &quot;hotspot-start.bat&quot;. &lt;/li&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;
netsh wlan set hostednetwork mode=allow ssid=wifiname key=wifipassword
netsh wlan start hostednetwork
&lt;/pre&gt;
&lt;li&gt;Open notepad, type the following commands and save as batch file with filename as &quot;hotspot-stop.bat&quot;.&lt;/li&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;
netsh wlan stop hostednetwork
&lt;/pre&gt;
&lt;li&gt;Now we can start WIFI hotspot by executing hotspot-start.bat file and stoping by hotspot-stop.bat file.&lt;/li&gt;
&lt;/ol&gt;
Now enjoy the WIFI hotspot without any software and by simple commands. &lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;/ol&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/2840305133174251479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2014/09/wifi-hotspot-on-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/2840305133174251479'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/2840305133174251479'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2014/09/wifi-hotspot-on-windows.html' title='WIFI hotspot on Windows'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhI2aI5s4C1TRCRtBW3D5Ny3XqT74iCiZ23z9tHfQVHSOQx1AeM6FAtFHfdGQxbnsjdwobjtUaxoGGcBdkT_QGnShMIeo4fGUuic7OiIG6gp33WGSJh-svZBPkA7-urm57ZhZpmhhZGiQ/s72-c/internet-connection-sharing-ics.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-3411075504495677106</id><published>2014-09-18T20:05:00.001+05:30</published><updated>2018-05-02T20:44:46.927+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Articles"/><category scheme="http://www.blogger.com/atom/ns#" term="Hadoop"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><title type='text'>Hadoop</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css&quot; integrity=&quot;sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm&quot; crossorigin=&quot;anonymous&quot;&gt;
&lt;style&gt;
.container {
    max-width: 100%;
}
&lt;/style&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This post is about basic concepts of Big Data and Apache Hadoop framework. It is essential to know about Big Data for today&#39;s IT industry since Big Data technologies are getting more popular and powerful now a days. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Big Data:&lt;/b&gt;&lt;br /&gt;
Big Data is nothing but storing or processing LARGE quantity of data sets. Data can be
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Structured Data (ex: RDBMS)&lt;/li&gt;
&lt;li&gt;Semi Structured Data (ex: XML Files)&lt;/li&gt;
&lt;li&gt;Unstructured Data (ex:Flat files)&lt;/li&gt;
&lt;/ul&gt;
Big data overcomes the challenges of traditional databases such as Volume, Velocity, Variety, Complex Data sets. 95%&amp;nbsp;of Today&#39;s Data are created in the last three years so the state of data is changed a lot. Popular Companies such as Amazon, Google, Facebook, Twitter, Yahoo have realized the power of Big data and doing R&amp;amp;D on Big Data. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Apache Hadoop:&lt;/b&gt;
&lt;p align=&quot;justify&quot;&gt;Apache Hadoop is an open source Big Data framework for distributed storage and distributed processing for very large data sets on computer clusters. Apache Hadoop is a Master-Slave Shared Nothing Architecture.&lt;/p&gt;
&lt;b&gt;Apache Hadoop Core Contains&lt;/b&gt;
&lt;ul&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;li&gt;HDFS (Hadoop Distributed File System) is for Distributed Storage. &lt;/li&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;li&gt; Map-Reduce (MR) is for Distributed Processing&lt;/li&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;li&gt;Yarn is for Distributed Scheduling&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;p align=&quot;justify&quot;&gt;
Apache Hadoop was developed by Yahoo based on the white papers of Google MapReduce and Google File System.&lt;/p&gt;
&lt;b&gt;The Design principles of Apache Hadoop are&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;ul&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;li&gt;To solve computation problem of large data sets Hadoop used large number of commodity hardware. Example:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Yahoo uses 45000 nodes of Hadoop Cluster&lt;/li&gt;
&lt;li&gt;Facebook is having largest Hadoop cluster in the planet with 100PB&lt;/li&gt;
&lt;li&gt;Twitter generates 400Million tweets a day. &lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Automatic Parallelization and Distribution.&lt;/li&gt;
&lt;li&gt;Automatic Recovery and Fault Tolerance.&lt;/li&gt;
&lt;li&gt;Clean and Simple By Map Reduce&lt;/li&gt;
&lt;li&gt;By using large number of commodity hardware solved computation problem on large data sets.(ex:Yahoo uses more than 45000 machines with Hadoop Open Source of Map-Reduce)&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;Comparison of Apache Hadoop and Traditional RDBMS&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;table class=&quot;table&quot;&gt;
&lt;thead class=&quot;thead-inverse&quot;&gt;
&lt;tr&gt;
  &lt;td&gt;Apache Hadoop&lt;/td&gt;
  &lt;td&gt;Traditional RDBMS&lt;/td&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody class=&quot;thead-default&quot;&gt;
&lt;tr&gt;
  &lt;td&gt;Schema on read
&lt;/td&gt;
  &lt;td&gt;Schema on write
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;For Structure, Semi Structured &amp;amp; Un-Structured
&lt;/td&gt;
  &lt;td&gt;Only for Structured
&lt;/td&gt;
 &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;ul&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;Hadoop Distributed File System (HDFS):&lt;/b&gt;&lt;br /&gt;
Hadoop Distributed File System (HDFS) is the Distributed storage area where data are stored for Hadoop processing. HDFS is a Master-Slave architecture where one device controls one or more slave devices. &lt;/div&gt;
&lt;ul style=&quot;text-align: justify;&quot;&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;&lt;i&gt;Master&lt;/i&gt;&lt;/b&gt; contains Name-Node, Secondary-Name-Node, Job-Tracker.&lt;/li&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;Slave&lt;/b&gt; &lt;/i&gt;contains Data-Node, Task-Tracker.&lt;/li&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;i&gt;&lt;b&gt;Name-Node&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;li&gt;Name Node controls all Data Nodes&lt;/li&gt;
&lt;li&gt;Controller of File System operations such as file creation, deletion&lt;/li&gt;
&lt;li&gt;Maintains File System Meta-information&lt;/li&gt;
&lt;li&gt;Maintains memory map of the entire cluster &lt;/li&gt;
&lt;ul&gt;&lt;ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;li&gt;Manages Block Mapping which knows all information of data.&lt;/li&gt;
&lt;ul&gt;&lt;ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;li&gt;Monitors health&lt;/li&gt;
&lt;ul&gt;&lt;ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;li&gt;Most important node since It is the Single Point Of Failure (SPOF), (ie: if name node goes down, cluster goes down)&lt;/li&gt;
&lt;ul&gt;&lt;ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;i&gt;&lt;b&gt;Secondary Name-Node&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;li&gt;Snapshots (Backup) the Name Node for restoring.&lt;/li&gt;
&lt;li&gt;It is not fail over for Name Node &lt;/li&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;li&gt;Meta-Data backup on rebuild&lt;/li&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;li&gt;No high availability&lt;/li&gt;
&lt;ul&gt;&lt;ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;i&gt;&lt;b&gt;Data-Node&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;li&gt;Stores Actual data and Replicated into 3 nodes by default.&lt;/li&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;li&gt;Responsible for Block operations&lt;/li&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;li&gt;Handles client requests by passing data to Name Node.&lt;/li&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;li&gt;Sends heartbeats to Name-Node with block report (default by every 3 sec.)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Job Tracker: Job tracker is the controller for all task tracker &lt;/li&gt;
&lt;ul&gt;&lt;ul&gt;
&lt;/ul&gt;
&lt;li&gt;Master-Slave Flow&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOIYKkjzebHPA7xnc9Ost0vw8g88gIq4NlKkyrK_ARA4SOx8ipB4cBYRVkXF5jvE2dChd6PcscdPH7_wAChJBfZo1VldyZZR6qI3duTwQdnQnM-rXHIYTlmwtk8GvzHMzmXokWzKz1xi0/s1600/Hadoop-Server-Roles.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;323&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOIYKkjzebHPA7xnc9Ost0vw8g88gIq4NlKkyrK_ARA4SOx8ipB4cBYRVkXF5jvE2dChd6PcscdPH7_wAChJBfZo1VldyZZR6qI3duTwQdnQnM-rXHIYTlmwtk8GvzHMzmXokWzKz1xi0/s640/Hadoop-Server-Roles.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;&lt;ul&gt;
&lt;li&gt;Job-Client submits job to Job-Tracker&lt;/li&gt;
&lt;li&gt;Job-Tracker talks to Name-Node,creates execution plan and submits work to Task-Tracker&lt;/li&gt;
&lt;li&gt;Task-Tracker reports progress via heart beats, manages phases and updates states&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;li&gt;Defult HDFS Block is 64MB&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;HDFS Properties&lt;/b&gt;&lt;/i&gt; &lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Large Data&lt;/li&gt;
&lt;li&gt;N Times Replication&lt;/li&gt;
&lt;li&gt;Failure is normal rather than exception&lt;/li&gt;
&lt;li&gt;Fault Tolerence&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;&lt;i&gt;HDFS Features&lt;/i&gt;&lt;/b&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Rack awareness&lt;/li&gt;
&lt;li&gt;Reliable Storage&lt;/li&gt;
&lt;li&gt;High Throughput &lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;Map-Reduce:&lt;/b&gt;&lt;/div&gt;
&lt;ul style=&quot;text-align: justify;&quot;&gt;
&lt;li&gt;Map Reduce is Programming Paradigm.&lt;/li&gt;
&lt;li&gt;A Execution Engine which uses Mappers and Reducers&lt;/li&gt;
&lt;li&gt;Actually these are code for processing the Large Datasets. &lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Description on how Map-Reduce Works:&lt;/b&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivCVf9d1dEMVA9jqJ6fdn_Lofo1B8m5vqUc3y3EHligimJE_JgmkFdh_sz_00IGnLz2M0vU8NFBikRWYUEN5onhJMnHfw7-OiGZLRsTX-V-2tpKcC3648E2RT_SsLigTlNXP0_e2S5UWs/s1600/MapReduce_Work_Structure.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;296&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivCVf9d1dEMVA9jqJ6fdn_Lofo1B8m5vqUc3y3EHligimJE_JgmkFdh_sz_00IGnLz2M0vU8NFBikRWYUEN5onhJMnHfw7-OiGZLRsTX-V-2tpKcC3648E2RT_SsLigTlNXP0_e2S5UWs/s1600/MapReduce_Work_Structure.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;text-align: justify;&quot;&gt;
&lt;ul&gt;
&lt;li&gt;Let us consider our input data contains &quot;Deer Bear River Car Car River Deer Car Bear&quot;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Split Phase(&lt;/b&gt;&lt;b&gt;hidden phase):&lt;/b&gt; Splits input into no of input splits.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Map Phase: &lt;/b&gt;Transforms the input split into Maps( key-value pair) based on user defined.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Shuffle &amp;amp; Sort(&lt;/b&gt;&lt;b&gt;hidden phase):&lt;/b&gt; Moves map output to reducers and sorts them by the key.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Reduce Phase:&lt;/b&gt; Aggregate Map based on user defined code&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Final Result: &lt;/b&gt;Determines how the file are parsed into the map/reduce pipeline and produces final result.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;Hadoop Technology Stack:&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Hadoop is collection of framework,the following are the popular Hadoop framework stack.&lt;/div&gt;
&lt;ul style=&quot;text-align: justify;&quot;&gt;
&lt;li&gt;For Data Access &lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;PIG&lt;/b&gt;&lt;/i&gt;:      Hige-level data-flow scripting Language and execution framework      &lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;HIVE&lt;/b&gt;&lt;/i&gt;:      Data-warehouse infrastructure allows SQL-like      &lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;For Data Storage&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;HBASE&lt;/b&gt;&lt;/i&gt;:      Bigtable-like structured storage system, millions of columns and billions of rows      &lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;Cassendra&lt;/b&gt;&lt;/i&gt;:      Scalable multi-master NO-SQL database with no single point of failure      &lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;For Interation, Visualization, Execution &amp;amp; Development&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;HCatalog&lt;/b&gt;&lt;/i&gt;:      Meta table management      &lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;Lucene&lt;/b&gt;&lt;/i&gt;:      Indexing tool for Searching tool with wildcard      &lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;Crunch&lt;/b&gt;&lt;/i&gt;:      Used for Map-Reduce pipe lining with shuffle and sorting      &lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;For Data Serialization&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;Avro&lt;/b&gt;&lt;/i&gt;:      Data serialization system      &lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;Thirft: &lt;/b&gt;multi language/ language-neutral making framework&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;For Data Intelligence&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;Mahout&lt;/b&gt;&lt;/i&gt;:      Machine Learning &amp;amp; Data Mining tool mainly used for Business Intelligence      &lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;For Data Integration&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;Sqoop&lt;/b&gt;&lt;/i&gt;:      Import and export data between RDBMS and Hadoop      &lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;Flame&lt;/b&gt;&lt;/i&gt;:      Log Data collection system      &lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;Chukwa&lt;/b&gt;&lt;/i&gt;:      Data collection system      &lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;For Management &amp;amp; Monitoring&amp;nbsp;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;Ambari&lt;/b&gt;&lt;/i&gt;:      Web based tool for monitoring and managing      &lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;Zookeeper&lt;/b&gt;&lt;/i&gt;:      High-performance coordination tool      &lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;Oozie&lt;/b&gt;&lt;/i&gt;:      Schedule and workflow tool      &lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The typical Hadoop Ecosystem may contain HDFS(Hadoop Distributed File System), HIVE, PIG, HBase, Zookeeper, Sqoop, Flame, Oozie. But it is completely depends upon individuals requirement and experience. &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/3411075504495677106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2014/09/hadoop.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/3411075504495677106'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/3411075504495677106'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2014/09/hadoop.html' title='Hadoop'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOIYKkjzebHPA7xnc9Ost0vw8g88gIq4NlKkyrK_ARA4SOx8ipB4cBYRVkXF5jvE2dChd6PcscdPH7_wAChJBfZo1VldyZZR6qI3duTwQdnQnM-rXHIYTlmwtk8GvzHMzmXokWzKz1xi0/s72-c/Hadoop-Server-Roles.png" height="72" width="72"/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-4603821938079397573</id><published>2014-09-18T17:59:00.001+05:30</published><updated>2018-05-02T20:56:37.280+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Articles"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><title type='text'>Preparing for Pirate Free</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This post is about how to make software piracy free world. I really want to write about this post is to make awareness on Software Piracy since it is illegal, that most people are unaware about it&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;h4&gt;
What is Software Piracy?&lt;/h4&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Illegal usage, copy, distribute software without ownership or legal rights. So If we are using a paid software product without purchasing it means we are using it Illegally, the good thing is it does not hurt any person directly. There is no such a strict rules on pirated software usage on most of the countries. Most of us are still using pirated software even without aware that it is illegal.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;h4&gt;
There are Three options in our hand:&lt;/h4&gt;
&lt;/div&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Let us continue with &lt;b&gt;Microsoft Windows&lt;/b&gt; by purchasing licence from Online for cheap price&lt;/li&gt;
&lt;li&gt;Once they are ready to buy software and gonna spend huge amount, they can consider &lt;b&gt;Apples Mac&lt;/b&gt; Desktop or Laptop.&lt;/li&gt;
&lt;li&gt;Best way is &lt;b&gt;Linux&lt;/b&gt; obviously.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 style=&quot;text-align: left;&quot;&gt;
Why should we move towards Linux?&lt;/h4&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Now Linux has evolved a lot. It is not how, what we know Linux was 5 or 10 years before. It is more powerful now than Windows or Mac. People those who started to use Linux will love a lot. And It is FREE&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Linux Beginners may face problem like which software should be used for particular task. On windows we are very familiar with the 
softwares. For example to do Document processing, Presentations, Spreed sheet
 works we use Microsoft Office, for images most people use 
Adobe Photoshop, for movies &amp;amp; songs we use VLC Media Player. The same software we can find by maximum 5 minute of Google search.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Let us stop this cheep activity of using pirated software. And let us enjoy pirate free software and make everyone feel good.&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/4603821938079397573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2014/09/preparing-for-pirate-free.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/4603821938079397573'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/4603821938079397573'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2014/09/preparing-for-pirate-free.html' title='Preparing for Pirate Free'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-2681220296411607290</id><published>2014-09-07T16:30:00.002+05:30</published><updated>2018-05-02T20:59:05.188+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><title type='text'>[Solution] WIFI Driver problem for HP 15-n011tu</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script src=&quot;https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js&quot;&gt;&lt;/script&gt;
&lt;style&gt;
pre .str, code .str { color: #65B042; } /* string  - green */
pre .kwd, code .kwd { color: #E28964; } /* keyword - dark pink */
pre .com, code .com { color: #AEAEAE; font-style: italic; } /* comment - gray */
pre .typ, code .typ { color: #89bdff; } /* type - light blue */
pre .lit, code .lit { color: #3387CC; } /* literal - blue */
pre .pun, code .pun { color: #fff; } /* punctuation - white */
pre .pln, code .pln { color: #fff; } /* plaintext - white */
pre .tag, code .tag { color: #89bdff; } /* html/xml tag    - light blue */
pre .atn, code .atn { color: #bdb76b; } /* html/xml attribute name  - khaki */
pre .atv, code .atv { color: #65B042; } /* html/xml attribute value - green */
pre .dec, code .dec { color: #3387CC; } /* decimal - blue */

pre.prettyprint, code.prettyprint {
 background-color: #000;
 border-radius: 8px;
}

pre.prettyprint {
 width: 95%;
 margin: 1em auto;
 padding: 1em;
 white-space: pre-wrap;
}

/* Specify class=linenums on a pre to get line numbering */
ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE; } /* IE indents via margin-left */
li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
/* Alternate shading for lines */
li.L1,li.L3,li.L5,li.L7,li.L9 { }

@media print {
  pre .str, code .str { color: #060; }
  pre .kwd, code .kwd { color: #006; font-weight: bold; }
  pre .com, code .com { color: #600; font-style: italic; }
  pre .typ, code .typ { color: #404; font-weight: bold; }
  pre .lit, code .lit { color: #044; }
  pre .pun, code .pun { color: #440; }
  pre .pln, code .pln { color: #000; }
  pre .tag, code .tag { color: #006; font-weight: bold; }
  pre .atn, code .atn { color: #404; }
  pre .atv, code .atv { color: #060; }
}
&lt;/style&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I have purchased an HP Pavilion 15-n011tu laptop recently with the operating system Ubuntu 12.04. The laptop is completely fine when I purchase,but after I upgraded to Ubuntu 14.04 version, only WIFI has stoped working. Even we can switch on or off the WIFI. This is a very common problem for all those who purchase HP laptop with Ubuntu OS, since HP is not supporting drivers for any Linux destro.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;Solution 1:&lt;/b&gt; Solution for this problem is we can purchase Windows 7 or 8, since HP is providing driver support for Windows 8 (both 32 &amp;amp; 64 bit) and Windows 7(only 64 bit). Currently HP Windows drivers are available at the following URL address
&lt;/div&gt;
&lt;a href=&quot;http://h10025.www1.hp.com/ewfrf/wc/softwareCategory?cc=us&amp;amp;lc=en&amp;amp;product=5440120&quot;&gt;http://h10025.www1.hp.com/ewfrf/wc/softwareCategory?cc=us&amp;amp;lc=en&amp;amp;product=5440120&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Solution 2:&lt;/b&gt; But purchasing Windows OS is costly. Now a days, It is trend to migrating Windows to Linux for developers. In that case, Without WIFI or Internet any laptop is almost waste.&lt;br /&gt;
&lt;h3&gt;
Please follow the following steps for Ubuntu Operating System.&lt;/h3&gt;
Step 1:Open the terminal and type &quot;lspci&quot; you can find list PCI buses and devices connected to the system.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ5Cn-on4mgjJphYUixKLXNMjE_xmItrSw6aTz8kmT4E7tDO4bURk3JnwDulYiWPpIWDxKBeolpvnkWHmRQguZOupVYzmR77WwBvd5ilE1g5QA2BghHADbtsf6wQGeupAYSRnW7-FVBGU/s1600/lspci.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ5Cn-on4mgjJphYUixKLXNMjE_xmItrSw6aTz8kmT4E7tDO4bURk3JnwDulYiWPpIWDxKBeolpvnkWHmRQguZOupVYzmR77WwBvd5ilE1g5QA2BghHADbtsf6wQGeupAYSRnW7-FVBGU/s1600/lspci.png&quot; height=&quot;233&quot; width=&quot;640&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Step 2: Note your laptop WIFI model, My laptop WIFI Model is MEDIATEK Corp. MT7630e.&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Step 3: If your laptop WIFI model is same as mine (MEDIATEK Corp. MT7630e), download the driver by &lt;a href=&quot;http://www.mediafire.com/?fsbq546munbr9&quot;&gt;&lt;b&gt;&lt;i&gt;Clicking Here&lt;/i&gt;&lt;/b&gt;&lt;/a&gt;. Once downloaded the driver, extract and copy files to /etc/ directory as /etc/MT7630E&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
[NOTE: if your WIFI model is different, you need to search for your WIFI model from Internet]&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Step 4: Create Wifi.sh file under your home directory, then copy paste the following lines and save the file.&lt;/div&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;
cp /etc/MT7630E/firmware/Wi-FI/MT7650E234.bin /lib/firmware
cd /etc/MT7630E/rt2x00
make clean
make
bash load.sh
exit&lt;/pre&gt;
Step 5: For every restart of the laptop execute the Wifi.sh file as root&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;
sudo ./Wifi.sh
&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;
Now WIFI will start working on your Ubuntu Operating System also. Thank You :-)&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/2681220296411607290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2014/09/solution-wifi-driver-problem-for-hp-15.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/2681220296411607290'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/2681220296411607290'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2014/09/solution-wifi-driver-problem-for-hp-15.html' title='[Solution] WIFI Driver problem for HP 15-n011tu'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ5Cn-on4mgjJphYUixKLXNMjE_xmItrSw6aTz8kmT4E7tDO4bURk3JnwDulYiWPpIWDxKBeolpvnkWHmRQguZOupVYzmR77WwBvd5ilE1g5QA2BghHADbtsf6wQGeupAYSRnW7-FVBGU/s72-c/lspci.png" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-2605886038131668597</id><published>2014-05-11T23:56:00.002+05:30</published><updated>2018-05-02T21:01:56.666+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><title type='text'>Install Spring Tool Suite on Ubuntu</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script src=&quot;https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js&quot;&gt;&lt;/script&gt;
&lt;style&gt;
pre .str, code .str { color: #65B042; } /* string  - green */
pre .kwd, code .kwd { color: #E28964; } /* keyword - dark pink */
pre .com, code .com { color: #AEAEAE; font-style: italic; } /* comment - gray */
pre .typ, code .typ { color: #89bdff; } /* type - light blue */
pre .lit, code .lit { color: #3387CC; } /* literal - blue */
pre .pun, code .pun { color: #fff; } /* punctuation - white */
pre .pln, code .pln { color: #fff; } /* plaintext - white */
pre .tag, code .tag { color: #89bdff; } /* html/xml tag    - light blue */
pre .atn, code .atn { color: #bdb76b; } /* html/xml attribute name  - khaki */
pre .atv, code .atv { color: #65B042; } /* html/xml attribute value - green */
pre .dec, code .dec { color: #3387CC; } /* decimal - blue */

pre.prettyprint, code.prettyprint {
 background-color: #000;
 border-radius: 8px;
}

pre.prettyprint {
 width: 95%;
 margin: 1em auto;
 padding: 1em;
 white-space: pre-wrap;
}

/* Specify class=linenums on a pre to get line numbering */
ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE; } /* IE indents via margin-left */
li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
/* Alternate shading for lines */
li.L1,li.L3,li.L5,li.L7,li.L9 { }

@media print {
  pre .str, code .str { color: #060; }
  pre .kwd, code .kwd { color: #006; font-weight: bold; }
  pre .com, code .com { color: #600; font-style: italic; }
  pre .typ, code .typ { color: #404; font-weight: bold; }
  pre .lit, code .lit { color: #044; }
  pre .pun, code .pun { color: #440; }
  pre .pln, code .pln { color: #000; }
  pre .tag, code .tag { color: #006; font-weight: bold; }
  pre .atn, code .atn { color: #404; }
  pre .atv, code .atv { color: #060; }
}
&lt;/style&gt;
&lt;p align=&quot;justify&quot;&gt;
This post is about installing Spring Tool Suite (STS) on Ubuntu. The Spring Tool Suite is an Eclipse-based development environment that is customized for developing Spring applications.&lt;/p&gt;
&lt;div&gt;
&lt;b&gt;Step 1:&lt;/b&gt;Download the latest Spring Tool Suite for Linux from STS official website: &lt;a href=&quot;http://spring.io/tools/sts/all&quot;&gt;http://spring.io/tools/sts/all&amp;nbsp;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step 2:&lt;/b&gt;Extract into any folder which you prefer. My extracted Spring Tool Suite locations is &lt;b&gt;/home/harishshan/springsource&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step 3:&lt;/b&gt;Create the Menu icon for quick access
&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;
sudo nano /usr/share/applications/STS.desktop
&lt;/pre&gt;
&lt;b&gt;Step 4:&lt;/b&gt;Enter the following content
&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;
[Desktop Entry]
Name=SpringSource Tool Suite
Comment=SpringSource Tool Suite
Exec=/home/harishshan/springsource/sts-3.4.0-RELEASE/STS
Icon=/home/harishshan/springsource/sts-3.4.0-RELEASE/icon.xpm
StartupNotify=true
Terminal=false
Type=Application
Categories=Development;IDE;Java;
&lt;/pre&gt;
&lt;b&gt;Step 5:&lt;/b&gt; Now you can check from Quick Menu by typing &quot;&lt;b&gt;Spring&lt;/b&gt;&quot;
&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/2605886038131668597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2014/05/install-spring-tool-suite-on-ubuntu.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/2605886038131668597'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/2605886038131668597'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2014/05/install-spring-tool-suite-on-ubuntu.html' title='Install Spring Tool Suite on Ubuntu'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-1574148319176661813</id><published>2014-05-11T23:40:00.002+05:30</published><updated>2018-05-02T21:08:13.771+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Articles"/><category scheme="http://www.blogger.com/atom/ns#" term="Database"/><title type='text'>Database Replication Master Slave</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script src=&quot;https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js&quot;&gt;&lt;/script&gt;
&lt;style&gt;
pre .str, code .str { color: #65B042; } /* string  - green */
pre .kwd, code .kwd { color: #E28964; } /* keyword - dark pink */
pre .com, code .com { color: #AEAEAE; font-style: italic; } /* comment - gray */
pre .typ, code .typ { color: #89bdff; } /* type - light blue */
pre .lit, code .lit { color: #3387CC; } /* literal - blue */
pre .pun, code .pun { color: #fff; } /* punctuation - white */
pre .pln, code .pln { color: #fff; } /* plaintext - white */
pre .tag, code .tag { color: #89bdff; } /* html/xml tag    - light blue */
pre .atn, code .atn { color: #bdb76b; } /* html/xml attribute name  - khaki */
pre .atv, code .atv { color: #65B042; } /* html/xml attribute value - green */
pre .dec, code .dec { color: #3387CC; } /* decimal - blue */

pre.prettyprint, code.prettyprint {
 background-color: #000;
 border-radius: 8px;
}

pre.prettyprint {
 width: 95%;
 margin: 1em auto;
 padding: 1em;
 white-space: pre-wrap;
}

/* Specify class=linenums on a pre to get line numbering */
ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE; } /* IE indents via margin-left */
li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
/* Alternate shading for lines */
li.L1,li.L3,li.L5,li.L7,li.L9 { }

@media print {
  pre .str, code .str { color: #060; }
  pre .kwd, code .kwd { color: #006; font-weight: bold; }
  pre .com, code .com { color: #600; font-style: italic; }
  pre .typ, code .typ { color: #404; font-weight: bold; }
  pre .lit, code .lit { color: #044; }
  pre .pun, code .pun { color: #440; }
  pre .pln, code .pln { color: #000; }
  pre .tag, code .tag { color: #006; font-weight: bold; }
  pre .atn, code .atn { color: #404; }
  pre .atv, code .atv { color: #060; }
}
&lt;/style&gt;
This post is about how to perform to Database Replication Slave to Master. I have used the&amp;nbsp;&lt;span style=&quot;color: #25a186;&quot;&gt;Green Font to represent&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #25a186;&quot;&gt;Master Server&amp;nbsp;&lt;/span&gt;and&amp;nbsp;&lt;span style=&quot;color: #fa0202;&quot;&gt;Red Font to represent&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #fa0202;&quot;&gt;Slave Server.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #25a186;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #25a186;&quot;&gt;&lt;b&gt;Step 1:CHANGING MySQL CONFIGURATION&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #25a186;&quot;&gt;We need to add some extra configuration properties in the my.ini/my.cnf file. This step is must to perform replication.The following sub steps will describe in detail.&lt;/span&gt;&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #25a186;&quot;&gt;Open my.ini file for windows or &amp;nbsp;my.cnf file for Linux&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #25a186;&quot;&gt;Search for [mysqld]&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #25a186;&quot;&gt;Add the following properties under [mysqld] section&lt;/span&gt;&lt;/li&gt;
&lt;pre class=&quot;prettyprint lang-sql&quot;&gt;server-id=1
log-bin=mysql-bin
&lt;/pre&gt;
&lt;li&gt;&lt;span style=&quot;color: #25a186;&quot;&gt;save the my.ini file and Restart the mysql services&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #25a186;&quot;&gt;To check the result execute the following command in mysql console&amp;nbsp;&lt;/span&gt;&lt;pre class=&quot;prettyprint lang-sql&quot;&gt;show binary logs;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #25a186;&quot;&gt;If it shows logs, Binary logging has been initiated and we can configure mirroring&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #fa0202;&quot;&gt;Perform the same steps on slave database.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;span style=&quot;color: #25a186;&quot;&gt;&lt;b&gt;Step 2:&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; CRATE USER AND GRANT RELICATION AND PREVILEGES&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #25a186;&quot;&gt;Create user&lt;/span&gt;&lt;/li&gt;
&lt;pre class=&quot;prettyprint lang-sql&quot;&gt;create user &#39;replication&#39;@&#39;%&#39; identified by &#39;PASSWORD&#39;;&lt;/pre&gt;
&lt;li&gt;&lt;span style=&quot;color: #25a186;&quot;&gt;Grant replication&lt;/span&gt;&lt;/li&gt;
&lt;pre class=&quot;prettyprint lang-sql&quot;&gt;grant replication slave on *.* to &#39;replication&#39;@&#39;%&#39;;&lt;/pre&gt;
&lt;li&gt;&lt;span style=&quot;color: #25a186;&quot;&gt;Grant privileges&lt;/span&gt;&lt;/li&gt;
&lt;pre class=&quot;prettyprint lang-sql&quot;&gt;grant all privileges on *.* to &#39;replication&#39;@&#39;%&#39; with grant option;&lt;/pre&gt;
&lt;li&gt;&lt;span style=&quot;color: #fa0202;&quot;&gt;Perform the same steps on slave database with different password&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;b style=&quot;color: #25a186;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;Step &lt;/span&gt;3:&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;CHECKING MASTER STATUS&lt;/b&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: #25a186; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-sql&quot;&gt;show master status;&lt;/pre&gt;
&lt;span style=&quot;color: #fa0202;&quot;&gt;&lt;b&gt;Step 4:SETTING UP THE SLAVE&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-sql&quot;&gt;CHANGE MASTER TO
-&amp;gt; MASTER_HOST=’192.168.2.2′,
-&amp;gt; MASTER_PORT=3306,
-&amp;gt; MASTER_USER=’replication’,
-&amp;gt; MASTER_PASSWORD=&#39;PASSWORD&#39;,
-&amp;gt; MASTER_LOG_FILE=’mysql-bin.000019′,
-&amp;gt; MASTER_LOG_POS= 2186;
&lt;/pre&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #fa0202;&quot;&gt;where&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;color: #fa0202;&quot;&gt;MASTER_HOST is IP address of Master&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #fa0202;&quot;&gt;MASTER_LOG_FILE is credentials of master status (from Step 3)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #fa0202;&quot;&gt;MASTER_LOG_POS is credentials of master status (from Step 3)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;span style=&quot;color: #fa0202;&quot;&gt;Restart mysql from services on both master and slave&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span style=&quot;color: #fa0202;&quot;&gt;&lt;b&gt;Step 5:&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;CHECK MIRRORING&lt;/b&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #fa0202;&quot;&gt;Go to slave database execute the following command&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;prettyprint lang-sql&quot;&gt;show slave status \G;&lt;/pre&gt;
Output:
&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-sql&quot;&gt;*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.195.2.60
Master_User: replication
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 642
Relay_Log_File: India-Server-relay-bin.000003
Relay_Log_Pos: 409
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 642
Relay_Log_Space: 571
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
&lt;/pre&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #fa0202;&quot;&gt;Check Last_IO_Error,If it has error, do the steps provided in ERROR section&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #fa0202;&quot;&gt;Else replication has been performed successfully and you can check executing commands from master to check its validity.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;ERROR&lt;/b&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;ERROR#1 -&amp;gt; Can occur if operation is performed directly on slave instead of master.&lt;/li&gt;
&lt;li&gt;ERROR#2 -&amp;gt; Can occur if there is a problem in network.&lt;/li&gt;
&lt;li&gt;For ERROR#1 drop the replication user, flush the binary logs and restart the mysql server on both master and slave servers.&lt;/li&gt;
&lt;pre class=&quot;prettyprint lang-sql&quot;&gt;drop user &#39;replication&#39;@&#39;%&#39;;
flush binary logs;&lt;/pre&gt;
&lt;li&gt;Now proceed the same procedure again from Step 1&lt;/li&gt;
&lt;/ul&gt;
Note: &amp;nbsp;If two servers are not of same architecture(i.e One server is of 64 bit and another is of 32 bit machine). We should select only 64 bit machine for Master and 32 bit machine for Slave.&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/1574148319176661813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2014/05/database-replication-master-slave.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/1574148319176661813'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/1574148319176661813'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2014/05/database-replication-master-slave.html' title='Database Replication Master Slave'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-6865754868975350804</id><published>2014-05-11T23:03:00.003+05:30</published><updated>2018-05-02T21:12:12.583+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Articles"/><category scheme="http://www.blogger.com/atom/ns#" term="Command"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><title type='text'>Schedule Task on Ubuntu Using Cron Jobs</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script src=&quot;https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js&quot;&gt;&lt;/script&gt;
&lt;style&gt;
pre .str, code .str { color: #65B042; } /* string  - green */
pre .kwd, code .kwd { color: #E28964; } /* keyword - dark pink */
pre .com, code .com { color: #AEAEAE; font-style: italic; } /* comment - gray */
pre .typ, code .typ { color: #89bdff; } /* type - light blue */
pre .lit, code .lit { color: #3387CC; } /* literal - blue */
pre .pun, code .pun { color: #fff; } /* punctuation - white */
pre .pln, code .pln { color: #fff; } /* plaintext - white */
pre .tag, code .tag { color: #89bdff; } /* html/xml tag    - light blue */
pre .atn, code .atn { color: #bdb76b; } /* html/xml attribute name  - khaki */
pre .atv, code .atv { color: #65B042; } /* html/xml attribute value - green */
pre .dec, code .dec { color: #3387CC; } /* decimal - blue */

pre.prettyprint, code.prettyprint {
 background-color: #000;
 border-radius: 8px;
}

pre.prettyprint {
 width: 95%;
 margin: 1em auto;
 padding: 1em;
 white-space: pre-wrap;
}

/* Specify class=linenums on a pre to get line numbering */
ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE; } /* IE indents via margin-left */
li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
/* Alternate shading for lines */
li.L1,li.L3,li.L5,li.L7,li.L9 { }

@media print {
  pre .str, code .str { color: #060; }
  pre .kwd, code .kwd { color: #006; font-weight: bold; }
  pre .com, code .com { color: #600; font-style: italic; }
  pre .typ, code .typ { color: #404; font-weight: bold; }
  pre .lit, code .lit { color: #044; }
  pre .pun, code .pun { color: #440; }
  pre .pln, code .pln { color: #000; }
  pre .tag, code .tag { color: #006; font-weight: bold; }
  pre .atn, code .atn { color: #404; }
  pre .atv, code .atv { color: #060; }
}
&lt;/style&gt;
&lt;link href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;
&lt;style&gt;
@media {
  .container {
    width: 100%;
  }
}
.container {
  padding-right: 15px;
  padding-left: 15px;
  margin-right: auto;
  margin-left: auto;
  width: 100%;
}
&lt;/style&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This article is about the Cron Job and how to schedule task on Ubuntu machine using Cron jobs. The cron is a time-based job scheduler in Unix-like computer operating systems. 
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
The word &quot;&lt;b&gt;Crontab&lt;/b&gt;&quot; is derived from&lt;i&gt; chronos &lt;/i&gt;(Time in Greeks) and &lt;i&gt;tab&lt;/i&gt; stands for table. Crontab is useful for scheduling the task automatically run at regular interval as the background process. Crontabs are useful for taking backups, synchronizing files, etc.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
Before doing all other stuffs, first we will change the default editor to nano editor by typing the following command in terminal.
&lt;/div&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;export EDITOR=&quot;nano&quot;
&lt;/pre&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
To schedule new /edit crontab entries for specific time
&lt;/div&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;crontab -e
&lt;/pre&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This will open the nano editor with the default commented scheduling with five stars to allow our task scheduling. we can schedule our tasks here as follows
&lt;/div&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;* * * * * /home/harishshan/example.sh
&lt;/pre&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This will execute the example.sh for every minute. The following is an easy way to remember the crontab format
&lt;/div&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)
&lt;/pre&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
If you leave star(asterisk), it means every.If you leave ?, it means any.&lt;br /&gt;
&lt;h3&gt;Examples: &lt;/h3&gt;
&lt;/div&gt;
&lt;table class=&quot;table&quot;&gt;
&lt;thead class=&quot;thead-inverse&quot;&gt;
&lt;tr&gt;
&lt;td&gt;Schedule&lt;/td&gt;
&lt;td&gt;Crontab Syntax&lt;/td&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody class=&quot;thead-default&quot;&gt;
&lt;tr&gt;
&lt;td&gt;Daily 10AM&lt;/td&gt;
&lt;td&gt;0 10 * * *&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;October 12th 12.20 PM&lt;/td&gt;
&lt;td&gt;20 12 12 10 *&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5 After 4 Every Sunday&lt;/td&gt;
&lt;td&gt;5 4 * * 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Every 15 minutes&lt;/td&gt;
&lt;td&gt;*/15 * * * *&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Every Friday 1 AM&lt;/td&gt;
&lt;td&gt;0 1 * *5&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ol&gt;
&lt;li&gt;To list crontab entries&lt;/li&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;crontab -l
&lt;/pre&gt;
&lt;li&gt;To list scheduled cron jobs of a particular user&lt;/li&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;crontab -u root -l
&lt;/pre&gt;
&lt;li&gt;To remove all crontab entry&lt;/li&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;crontab -r
&lt;/pre&gt;
&lt;li&gt;To prompt before deleting crontab&lt;/li&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;crontab -i -r
&lt;/pre&gt;
&lt;/ol&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Note: By default crontab saves the output in user&#39;s mailbox which we configured as MAILTO in the crontab&lt;/div&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;MAILTO=&quot;yourname@yourdomain.com&quot;
&lt;/pre&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Instead you can configure to output to separate logfile like as follows
&lt;/div&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;* * * * * /home/harishshan/example.sh &amp;gt;&amp;gt; /var/log/example_log.log 2&amp;gt;&amp;amp;1
&lt;/pre&gt;
&lt;b&gt;Where&lt;/b&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;/var/log/example_log.log represents log file&lt;/li&gt;
&lt;li&gt;1 represents STDOUT&lt;/li&gt;
&lt;li&gt;2 represents STDERR&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/6865754868975350804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2014/05/schedule-task-on-ubuntu-using-crontab.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/6865754868975350804'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/6865754868975350804'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2014/05/schedule-task-on-ubuntu-using-crontab.html' title='Schedule Task on Ubuntu Using Cron Jobs'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Southern Asia</georss:featurename><georss:point>23.563987128451217 79.8046875</georss:point><georss:box>-4.1503783715487828 38.4960935 51.278352628451216 121.1132815</georss:box></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-7031045130852290455</id><published>2014-04-29T23:19:00.001+05:30</published><updated>2018-05-02T21:19:02.246+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Articles"/><category scheme="http://www.blogger.com/atom/ns#" term="Command"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><title type='text'>How to Install Java on Ubuntu</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script src=&quot;https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js&quot;&gt;&lt;/script&gt;
&lt;style&gt;
pre .str, code .str { color: #65B042; } /* string  - green */
pre .kwd, code .kwd { color: #E28964; } /* keyword - dark pink */
pre .com, code .com { color: #AEAEAE; font-style: italic; } /* comment - gray */
pre .typ, code .typ { color: #89bdff; } /* type - light blue */
pre .lit, code .lit { color: #3387CC; } /* literal - blue */
pre .pun, code .pun { color: #fff; } /* punctuation - white */
pre .pln, code .pln { color: #fff; } /* plaintext - white */
pre .tag, code .tag { color: #89bdff; } /* html/xml tag    - light blue */
pre .atn, code .atn { color: #bdb76b; } /* html/xml attribute name  - khaki */
pre .atv, code .atv { color: #65B042; } /* html/xml attribute value - green */
pre .dec, code .dec { color: #3387CC; } /* decimal - blue */

pre.prettyprint, code.prettyprint {
 background-color: #000;
 border-radius: 8px;
}

pre.prettyprint {
 width: 95%;
 margin: 1em auto;
 padding: 1em;
 white-space: pre-wrap;
}

/* Specify class=linenums on a pre to get line numbering */
ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE; } /* IE indents via margin-left */
li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
/* Alternate shading for lines */
li.L1,li.L3,li.L5,li.L7,li.L9 { }

@media print {
  pre .str, code .str { color: #060; }
  pre .kwd, code .kwd { color: #006; font-weight: bold; }
  pre .com, code .com { color: #600; font-style: italic; }
  pre .typ, code .typ { color: #404; font-weight: bold; }
  pre .lit, code .lit { color: #044; }
  pre .pun, code .pun { color: #440; }
  pre .pln, code .pln { color: #000; }
  pre .tag, code .tag { color: #006; font-weight: bold; }
  pre .atn, code .atn { color: #404; }
  pre .atv, code .atv { color: #060; }
}
&lt;/style&gt;
&lt;p align=&quot;justify&quot;&gt;
This article is about installing the Oracle Java JDK7 (Java Development Kit 7) on the Ubuntu Operating System.
&lt;/p&gt;
&lt;p align=&quot;justify&quot;&gt;
Everybody knows that Sun Java was migrated to Oracle Java with Open source licence. Similarly IBM and Open source community has their own standard Java JDK. I personally prefer Oracle&#39;s Java JDK, Since majority of the cooperates uses Oracle JDK,I also recommend Ubuntu Java beginners to start with Oracle JDK. So don&#39;t confuse while downloading/Installing Oracle Java JDK.The following steps will guide you to install Oracle JDK in Ubuntu in a very easy manner.
&lt;/p&gt;
&lt;p align=&quot;justify&quot;&gt;
To install Oracle JDK in Ubuntu, Advanced Package Tools (apt) provides the many providers for oracle. The webupd8team provider provides the following command to install the Oracle JDK.
&lt;/p&gt;
&lt;h3&gt;
To install Oracle JDK 7, execute the following commands in the terminal.
&lt;/h3&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer
&lt;/pre&gt;
&lt;p align=&quot;justify&quot;&gt;
By executing the above command in the terminal, we installed Java in Ubuntu, But we still need to&amp;nbsp; set the environment variables. To set the &lt;i&gt;&lt;b&gt;JAVA_HOME&lt;/b&gt;&lt;/i&gt; environment variable, execute the following commands in the terminal.
&lt;/p&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;sudo update-alternatives --config java
&lt;/pre&gt;
&lt;p align=&quot;justify&quot;&gt;
This will return the installed java version in the system.&lt;/p&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;
There are 1 choices for the alternative java (providing /usr/bin/java).
Selection   Path                                       Priority   Status
-----------------------------------------------------------------------------
  *0        /usr/lib/jvm/java-7-oracle/jre/bin/java    1062       auto mode 
   1        /usr/lib/jvm/java-7-oracle/jre/bin/java    1062       manual mode

Press enter to keep the current choice[*], or type selection number:
&lt;/pre&gt;
&lt;p&gt;Now copy the path from your preferred installation and then edit &lt;i&gt;&lt;b&gt;/etc/environment&lt;/b&gt;&lt;/i&gt; file by the command&lt;/p&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;sudo nano /etc/environment
&lt;/pre&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This will open the environment file in nano editor, in the opened file add the following line &lt;/div&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;JAVA_HOME=&quot;/usr/lib/jvm/java-7-oracle
&lt;/pre&gt;
&lt;p align=&quot;justify&quot;&gt;
After adding this line, press ctrl+o and enter to save the file and ctrl+X to close the file. Finally we installed the Oracle JDK 7 in the Ubuntu Operating system.
&lt;/p&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/7031045130852290455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2014/04/how-to-install-java-on-ubuntu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/7031045130852290455'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/7031045130852290455'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2014/04/how-to-install-java-on-ubuntu.html' title='How to Install Java on Ubuntu'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-5855755129448638925</id><published>2014-04-29T00:06:00.002+05:30</published><updated>2018-05-02T21:19:49.408+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Articles"/><title type='text'>Transfer Bulk Data  via Torrent file</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;

&lt;div style=&quot;text-align: justify;&quot;&gt;
This article is all about the Torrent File Transfer Mechanism and its features. How to optimize Torrent client and how to create our own Torrent file for transferring bulk data instead downloading Movies and Software from other Torrent sites.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;What is Torrent?&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Torrent is the protocol for distributing files. It uses Peer-to-Peer data transmission. Its advantage over plain HTTP is that when multiple downloads of the same file happen concurrently, the downloaders upload to each other, making it possible for the file source to support very large numbers of downloaders, with only a modest increase in its load.Torrent&#39;s peer protocol can operate over TCP or uTP.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Torrent is created by Bram cohen in 2001 and now handled by BitTorrent.inc company&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;Torrent file distribution consists of these entities:&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;An ordinary web server&lt;/li&gt;
&lt;li&gt;A static &#39;metainfo&#39; file&lt;/li&gt;
&lt;li&gt;A Torrent tracker&lt;/li&gt;
&lt;li&gt;An &#39;original&#39; downloader&lt;/li&gt;
&lt;li&gt;The end user web browsers&lt;/li&gt;
&lt;li&gt;The end user downloaders&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;Torrent Files&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Torrent files are also known as metainfo files which are bencoded dictionaries which contains metadata like name, piece length, pieces, length, path and announce URL for trackers&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;Trackers&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Tracker GET requests have the following keys:&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i style=&quot;font-weight: bold;&quot;&gt;info_hash- &lt;/i&gt;Bencoded form of info values&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;i&gt;peer_id-&lt;/i&gt;&lt;/b&gt;Random generated id at the start of new download&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;i&gt;ip-&lt;/i&gt;&lt;/b&gt;Trackers machines IP address&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;i&gt;port-&lt;/i&gt;&lt;/b&gt;Port number for listening on peer&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;i&gt;uploaded-&lt;/i&gt;&lt;/b&gt;Total amount uploaded so far&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;i&gt;downloaded-&lt;/i&gt;&lt;/b&gt; Total amount downloaded so for&lt;/li&gt;
&lt;li&gt;&lt;i&gt;left-&lt;/i&gt;Remaining amount has to download&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;i&gt;event-&lt;/i&gt;&lt;/b&gt;Announcement events such as started, completed, stopped(empty)&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;b&gt;How Torrent Network works?&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Seed&lt;/b&gt; is the user or computer that has a file can be downloaded. There are also so-called &lt;b&gt;leechers/peers&lt;/b&gt;. &lt;b&gt;Leechers &lt;/b&gt;are the users or computers who want to download the file. When one leecher has managed to download the files 100% of the seed, then the leecher&#39;s role will change to seed. Therefore torrent source files are not fixated on single sources.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Advantage of Torrent&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;It will be very faster when the files are being download by many users. But normal download will fail s to serve if number of downloaders increases.&lt;/li&gt;
&lt;li&gt;By downloading via torrent, the same file can be downloaded from many sources.&lt;/li&gt;
&lt;li&gt;The leecher can become seeder once the download complete to serve other leecher.&lt;/li&gt;
&lt;li&gt;It consume less CPU utilization compared to normal download.&lt;/li&gt;
&lt;li&gt;It allows to transfer files with anyone, anywhere.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;b&gt;Tips to optimize Torrent Client[&lt;/b&gt;Some Popular Torrent Client Softwares are BitTorrent, uTorrent, Vuze, qBittorrent.]&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Go to Options-&amp;gt; setup guide -&amp;gt; uncheck the bandwith&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Go to Options-&amp;gt; Preferences -&amp;gt; Advanced -&amp;gt;&amp;nbsp;Change &quot;net.max_halfopen&quot; value to 50 by selecting the line, modifying the value at the bottom to 50 and clicking Set.&lt;/li&gt;
&lt;li&gt;At the same Advanced screen, Change &quot;bt.transp_disposition&quot; value to 255 by selecting the line, modifying the value at the bottom to 255 and clicking Set.&lt;/li&gt;
&lt;li&gt;More Peers means more speed,&amp;nbsp;To get more peers, right-click the entry on the list of peers , and click Update Tracker.&lt;/li&gt;
&lt;li&gt;Increase the number of connections by Options -&amp;gt; Preferences -&amp;gt; Bandwidth -&amp;gt; Number of Connections. Experiment by increasing the number of global/max connections in steps of 25&lt;/li&gt;
&lt;li&gt;Increase the speed of particular torrent by setting the download limit to unlimited and upload limit to very less.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;b&gt;How to transfer files via Torrent file.&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
Step 1: Create Built-in Tracker&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; a) Open the utorrent Software-&amp;gt;Options-&amp;gt;Preferences&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; b) Go to Connections and set the port number which is opened/unused&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_ea7v3slmG7glgPiCd2-hIySEPxIVvBqRchgMaW4G4KOS0j6N1CwNewwOzpkgKKsT2aDih7viU7osGZ37hJCacriZYyv0PkOZq16tzClW-m8I9nOLcgK3oIFfxsEgSWu9cJ_BHsT1-NY/s1600/Screenshot+2014-04-29+00.01.38.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;473&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_ea7v3slmG7glgPiCd2-hIySEPxIVvBqRchgMaW4G4KOS0j6N1CwNewwOzpkgKKsT2aDih7viU7osGZ37hJCacriZYyv0PkOZq16tzClW-m8I9nOLcgK3oIFfxsEgSWu9cJ_BHsT1-NY/s640/Screenshot+2014-04-29+00.01.38.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; c) Then go to BitTorrent and set the IP/Hostname to report to tracker: [as your sender IP address]&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi95QY1Smm3HnEjfMYufLmIVoNk_k7eohV2GK-QoIBHNc5bybXayerjpPVL65MyRIEuQDsL0BEWZRxUDTwTN_N8i-HV-02HHX_U0jFP0F9olb8yHlQtLNhaNZav2dgxcV0RtqB9Zwj_HzI/s1600/Screenshot+2014-04-29+00.02.10.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;474&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi95QY1Smm3HnEjfMYufLmIVoNk_k7eohV2GK-QoIBHNc5bybXayerjpPVL65MyRIEuQDsL0BEWZRxUDTwTN_N8i-HV-02HHX_U0jFP0F9olb8yHlQtLNhaNZav2dgxcV0RtqB9Zwj_HzI/s640/Screenshot+2014-04-29+00.02.10.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; d) And go the Advanced and set true for bt.enable_tracker and save the setting&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVbmeU6z5CwUBpunWq0kQPa2xwwFXym_07nFekolr-dDZRnLiBOtZoY_w_H6bd3vQ_Gtosftbqzi9-GAV9yjokqf8daEwvQVQkMv982rsvXs1fMnIytP6Ramgis8tpfKQLE4X8Fv02jmI/s1600/Screenshot+2014-04-29+00.02.22.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;474&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVbmeU6z5CwUBpunWq0kQPa2xwwFXym_07nFekolr-dDZRnLiBOtZoY_w_H6bd3vQ_Gtosftbqzi9-GAV9yjokqf8daEwvQVQkMv982rsvXs1fMnIytP6Ramgis8tpfKQLE4X8Fv02jmI/s640/Screenshot+2014-04-29+00.02.22.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Step 2:Create Torrent file&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; a) Click File-&amp;gt;Create New Torrent&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; b) Select Source which you want to transfer&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; c) Give the Torrent Properties Tracker values as &quot;http://[Sender IP Address][Port]/announce&quot; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; where &amp;nbsp;Port and Sender IP Address are we already configured in tracker&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggQ8u4ubVhY_3napZ7iclBAYR36pT5RK83wmINctfZLCuAgfshVSFCVpZclUpap-sQhdxF9cKWK2_Zm0lLKicDtqZDyfMxrdSkYWzFbJ1kHYd-sq3wuv7z4NxS19rtH0MZ-f0DawHvJdA/s1600/Screenshot+2014-04-29+00.03.31.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggQ8u4ubVhY_3napZ7iclBAYR36pT5RK83wmINctfZLCuAgfshVSFCVpZclUpap-sQhdxF9cKWK2_Zm0lLKicDtqZDyfMxrdSkYWzFbJ1kHYd-sq3wuv7z4NxS19rtH0MZ-f0DawHvJdA/s640/Screenshot+2014-04-29+00.03.31.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; d) Delete if any other trackers found other than our tracker.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; e) Give tick Start Seeding and Private torrent. and press Create&lt;/div&gt;
&lt;div&gt;
Now this will create a .torrent extension file&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Step 3:Download the file from any other system like as normal as we download movies using .torrent file.&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/5855755129448638925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2014/04/transfer-bulk-data-via-torrent-file.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/5855755129448638925'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/5855755129448638925'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2014/04/transfer-bulk-data-via-torrent-file.html' title='Transfer Bulk Data  via Torrent file'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_ea7v3slmG7glgPiCd2-hIySEPxIVvBqRchgMaW4G4KOS0j6N1CwNewwOzpkgKKsT2aDih7viU7osGZ37hJCacriZYyv0PkOZq16tzClW-m8I9nOLcgK3oIFfxsEgSWu9cJ_BHsT1-NY/s72-c/Screenshot+2014-04-29+00.01.38.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-8559015970921076057</id><published>2013-11-13T17:40:00.002+05:30</published><updated>2017-07-13T15:28:13.911+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Articles"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>Command Prompt Full Screen on Windows 8/7</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
In Windows 8/7 and Vista we could not open full screen Command Prompt. It makes more trouble especially for the Developers who majorly work on the command prompt. By following the simple steps we can open our Windows Vista / 7 / 8 Operating System Command Prompt in full screen.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Full Screen Command Prompt&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;Step 1:&lt;/b&gt; Open the command prompt by typing &quot;cmd&quot; in the Windows Run.&lt;/i&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-tfCEQ6Cmpan260AmbhztiGvh9Yx8RXGQU5iCtj8MPc9VRqR2pMavoSZuuEZ2djT5RYcnp8DFz_bSahQaD-LNDI9AAdJDitcpxbTXQEczfFVH2O1oUIJk8zCDnaRaXVZR8HZUA3-Fdf0/s1600/cmdrun.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;206&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-tfCEQ6Cmpan260AmbhztiGvh9Yx8RXGQU5iCtj8MPc9VRqR2pMavoSZuuEZ2djT5RYcnp8DFz_bSahQaD-LNDI9AAdJDitcpxbTXQEczfFVH2O1oUIJk8zCDnaRaXVZR8HZUA3-Fdf0/s400/cmdrun.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;i&gt;&lt;b&gt;Step 2:&lt;/b&gt; Right click on the title bar of the command prompt and select &quot;default&quot; option to open the &quot;Console Window Properties&quot;.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixKkg64l8E4mETktHP_KP87VO8bealJeIMUcUGbn2HlIDZlXm9ELRqFnPsG9PeLqeeheytdPlYm2CJRqXb9kF4zpSxfbdfqd7928gr8mWRMAg__iENXeco5qHIHF1ReWsRFuRGYOCPjNU/s1600/cmd.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;352&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixKkg64l8E4mETktHP_KP87VO8bealJeIMUcUGbn2HlIDZlXm9ELRqFnPsG9PeLqeeheytdPlYm2CJRqXb9kF4zpSxfbdfqd7928gr8mWRMAg__iENXeco5qHIHF1ReWsRFuRGYOCPjNU/s640/cmd.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;i&gt;&lt;b&gt;Step 3:&lt;/b&gt;Open the Layout tab and change the Screen Buffer Size as Width:1500 and Height: 500 and change the Window Size as Width: 168 and Height: 55 and press OK.&lt;/i&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikFhFsmNm-1ZKPbxLJ69ngQh6uNY3zx1RpcpVq1YKpXFpXEJXVoOG2eVZBV3q6prJTGAG0GlGUyrIoo2rkU_4LcHpzxJGS-g2brzpKXJg4sGq2kxTTTPbYCQQhUsTvnA67LgOX8EumS3U/s1600/Console.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikFhFsmNm-1ZKPbxLJ69ngQh6uNY3zx1RpcpVq1YKpXFpXEJXVoOG2eVZBV3q6prJTGAG0GlGUyrIoo2rkU_4LcHpzxJGS-g2brzpKXJg4sGq2kxTTTPbYCQQhUsTvnA67LgOX8EumS3U/s640/Console.png&quot; width=&quot;516&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;Step 4:&lt;/b&gt; Close the current command prompt and open the command Prompt using Step 1 and enjoy the full screen Command Prompt in Windows Vista / 7 / 8.&lt;/i&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/8559015970921076057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2013/11/command-prompt-full-screen-on-windows-87.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/8559015970921076057'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/8559015970921076057'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2013/11/command-prompt-full-screen-on-windows-87.html' title='Command Prompt Full Screen on Windows 8/7'/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-tfCEQ6Cmpan260AmbhztiGvh9Yx8RXGQU5iCtj8MPc9VRqR2pMavoSZuuEZ2djT5RYcnp8DFz_bSahQaD-LNDI9AAdJDitcpxbTXQEczfFVH2O1oUIJk8zCDnaRaXVZR8HZUA3-Fdf0/s72-c/cmdrun.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7986013827740262174.post-6467479817457636047</id><published>2013-11-02T23:16:00.000+05:30</published><updated>2018-05-02T21:28:56.740+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type='text'>Read Java Properties File </title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script src=&quot;https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js&quot;&gt;&lt;/script&gt;
&lt;style&gt;
pre .str, code .str { color: #65B042; } /* string  - green */
pre .kwd, code .kwd { color: #E28964; } /* keyword - dark pink */
pre .com, code .com { color: #AEAEAE; font-style: italic; } /* comment - gray */
pre .typ, code .typ { color: #89bdff; } /* type - light blue */
pre .lit, code .lit { color: #3387CC; } /* literal - blue */
pre .pun, code .pun { color: #fff; } /* punctuation - white */
pre .pln, code .pln { color: #fff; } /* plaintext - white */
pre .tag, code .tag { color: #89bdff; } /* html/xml tag    - light blue */
pre .atn, code .atn { color: #bdb76b; } /* html/xml attribute name  - khaki */
pre .atv, code .atv { color: #65B042; } /* html/xml attribute value - green */
pre .dec, code .dec { color: #3387CC; } /* decimal - blue */

pre.prettyprint, code.prettyprint {
 background-color: #000;
 border-radius: 8px;
}

pre.prettyprint {
 width: 95%;
 margin: 1em auto;
 padding: 1em;
 white-space: pre-wrap;
}

/* Specify class=linenums on a pre to get line numbering */
ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE; } /* IE indents via margin-left */
li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
/* Alternate shading for lines */
li.L1,li.L3,li.L5,li.L7,li.L9 { }

@media print {
  pre .str, code .str { color: #060; }
  pre .kwd, code .kwd { color: #006; font-weight: bold; }
  pre .com, code .com { color: #600; font-style: italic; }
  pre .typ, code .typ { color: #404; font-weight: bold; }
  pre .lit, code .lit { color: #044; }
  pre .pun, code .pun { color: #440; }
  pre .pln, code .pln { color: #000; }
  pre .tag, code .tag { color: #006; font-weight: bold; }
  pre .atn, code .atn { color: #404; }
  pre .atv, code .atv { color: #060; }
}
&lt;/style&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The properties files are generally used as configuration file for java programs.In Java, there is a special class for manipulating properties file called java.util.Properites. Properties are configuration values managed as key and value pairs since it is basically a Hashtable that can be saved/loaded from stream. In each pair, both key and value are String values.
&lt;/div&gt;
&lt;h3&gt;Example Program for Reading Properties File&lt;/h3&gt;
&lt;h4&gt;ReadProperties.java&lt;/h4&gt;
&lt;pre class=&quot;prettyprint lang-java&quot;&gt;
import java.util.Properties;
import java.io.FileInputStream;
class ReadProperties {
  public static void main(String arg[]) {
    try {
      Properties properties=new Properties();
      properties.load(new FileInputStream(&quot;D:\\config.properties&quot;));
      System.out.println(&quot;Message from Properties file: &quot;+ properties.getProperty(&quot;message&quot;));   
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
}
&lt;/pre&gt;
&lt;h3&gt;config.properties&lt;/h3&gt;
&lt;pre class=&quot;prettyprint lang-c&quot;&gt;
message=All The Best
&lt;/pre&gt;
&lt;h4&gt;Output:&lt;/h4&gt;
&lt;pre class=&quot;prettyprint lang-sh&quot;&gt;
Message from Properties file: All The Best
&lt;/pre&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://harishshan.blogspot.com/feeds/6467479817457636047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://harishshan.blogspot.com/2013/11/read-java-properties-file.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/6467479817457636047'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/7986013827740262174/posts/default/6467479817457636047'/><link rel='alternate' type='text/html' href='https://harishshan.blogspot.com/2013/11/read-java-properties-file.html' title='Read Java Properties File '/><author><name>Harish Shan</name><uri>http://www.blogger.com/profile/09232337188343562946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>