<?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-3829362838309310679</id><updated>2024-11-05T19:11:40.335-08:00</updated><category term="jenkins"/><category term="Deep Learning"/><category term="Kubernetes"/><category term="News"/><category term="Samsung"/><category term="google"/><category term="Java"/><category term="Machine Learning"/><category term="policy"/><category term="signal"/><category term="telegram"/><category term="whatsapp"/><title type='text'>Tech Edic</title><subtitle type='html'>https://techedic.blogspot.com/ is a blog contain Technical stuff like programming, E-money, latest updates, etc.In Tech Edic I&#39;m going to present the various Kind of tutorials and tech updates </subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://techedic.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='https://techedic.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tech Edic</name><uri>http://www.blogger.com/profile/11134449933406915845</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>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3829362838309310679.post-3547849086994820827</id><published>2021-01-10T08:48:00.002-08:00</published><updated>2021-01-10T08:48:51.656-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="News"/><category scheme="http://www.blogger.com/atom/ns#" term="policy"/><category scheme="http://www.blogger.com/atom/ns#" term="signal"/><category scheme="http://www.blogger.com/atom/ns#" term="telegram"/><category scheme="http://www.blogger.com/atom/ns#" term="whatsapp"/><title type='text'>WhatsApp Privacy Policy Update : Concerned about privacy policy , Users Look at Alternative like Signal, Telegram</title><content type='html'>&lt;p style=&quot;text-align: justify;&quot;&gt;Recently, WhatsApp began turning out in-application notices to Android and iOS clients uncovering an update in its Terms of Service and protection strategy. The warning educated clients regarding an update in the manner client information is taken care of by the stage, how organizations can utilize Facebook facilitated administrations to store and oversee, and the organization accomplices with Facebook to offer incorporations across the Facebook Company Product. It further cautioned clients that they need to consent to the new terms and strategy by&lt;b&gt; 8 February 2021&lt;/b&gt; to keep utilizing the application.&lt;/p&gt;&lt;p&gt;&lt;/p&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/AVvXsEjH3P_ldrkZnKZI9evUjsIlRc73RA6X39fWlIu2mHs6eyWFmz1mU7yj1TNPryaxNHO20E4hyphenhyphenaKyqypuNogz9muln6Fr4StoaCsjXXj8KWSVjA3pxmJugx73LTTu59CM6_rVr1QKUZHVj-g//&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;whatsapp&quot; data-original-height=&quot;183&quot; data-original-width=&quot;275&quot; height=&quot;429&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH3P_ldrkZnKZI9evUjsIlRc73RA6X39fWlIu2mHs6eyWFmz1mU7yj1TNPryaxNHO20E4hyphenhyphenaKyqypuNogz9muln6Fr4StoaCsjXXj8KWSVjA3pxmJugx73LTTu59CM6_rVr1QKUZHVj-g/w640-h429/download.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Since the update, there has been a great deal of discussion on the web about WhatsApp offering client data to Facebook. Numerous clients on Twitter have been persuading each other into getting off WhatsApp and making a move to other scrambled couriers like Signal and Telegram. Tesla, SpaceX, and Boring Company CEO Elon Musk participated in the discussion as well, requesting that individuals leave WhatsApp. Toward the end of last night, he posted on Twitter, &quot;Utilize Signal&quot;.&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p dir=&quot;ltr&quot; lang=&quot;en&quot;&gt;Use Signal&lt;/p&gt;— Elon Musk (@elonmusk) &lt;a href=&quot;https://twitter.com/elonmusk/status/1347165127036977153?ref_src=twsrc%5Etfw&quot;&gt;January 7, 2021&lt;/a&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span face=&quot;&amp;quot;Titillium Web&amp;quot;, sans-serif&quot; style=&quot;background-color: white; font-size: 16px;&quot;&gt;Signal has also shared how users can transfer their group chat from some other messaging app to&amp;nbsp;&lt;/span&gt;&lt;em style=&quot;background-color: white; box-sizing: border-box; font-family: &amp;quot;Titillium Web&amp;quot;, sans-serif; font-size: 16px;&quot;&gt;Signal&lt;/em&gt;&lt;span face=&quot;&amp;quot;Titillium Web&amp;quot;, sans-serif&quot; style=&quot;background-color: white; font-size: 16px;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span face=&quot;&amp;quot;Titillium Web&amp;quot;, sans-serif&quot; style=&quot;background-color: white; font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p dir=&quot;ltr&quot; lang=&quot;en&quot;&gt;&lt;span face=&quot;&amp;quot;Titillium Web&amp;quot;, sans-serif&quot; style=&quot;background-color: white; font-size: 16px;&quot;&gt;A lot of people have been asking how to move their group chats from other apps to Signal, and Signal group links are a great way to get started. Drop a group link into your former chat app of choice like you&#39;re dropping the mic on the way out. &lt;a href=&quot;https://t.co/q49DeZufBG&quot;&gt;pic.twitter.com/q49DeZufBG&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;span face=&quot;&amp;quot;Titillium Web&amp;quot;, sans-serif&quot; style=&quot;background-color: white; font-size: 16px;&quot;&gt;— Signal (@signalapp) &lt;a href=&quot;https://twitter.com/signalapp/status/1347309781564813312?ref_src=twsrc%5Etfw&quot;&gt;January 7, 2021&lt;/a&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;TechCrunch supervisor Mike Butcher as of late tweeted about how Signal and Telegram are presently better than other options on the off chance that you are worried about your security.&lt;/p&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p dir=&quot;ltr&quot; lang=&quot;en&quot;&gt;WhatsApp will share its users&#39; personal information, including phone numbers, IP addresses, contacts, &amp;amp; more with Facebook from Feb. 8, according to the new T&amp;amp;Cs. No opt-out. The only way to object is to leave the service &amp;amp; move to a service like Signal or Telegram. &lt;a href=&quot;https://t.co/FbGcq5T3JB&quot;&gt;https://t.co/FbGcq5T3JB&lt;/a&gt;&lt;/p&gt;— Mike Butcher (@mikebutcher) &lt;a href=&quot;https://twitter.com/mikebutcher/status/1346959937679798274?ref_src=twsrc%5Etfw&quot;&gt;January 6, 2021&lt;/a&gt;&lt;/blockquote&gt;&lt;p&gt;Also now currently number 1 trending app on App Store is the &lt;b&gt;Signal app.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Look at what you&amp;#39;ve done. 🇮🇳 &lt;a href=&quot;https://t.co/0YuqyZXtgP&quot;&gt;pic.twitter.com/0YuqyZXtgP&lt;/a&gt;&lt;/p&gt;&amp;mdash; Signal (@signalapp) &lt;a href=&quot;https://twitter.com/signalapp/status/1347693761044701186?ref_src=twsrc%5Etfw&quot;&gt;January 8, 2021&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;/b&gt;&lt;/p&gt; &lt;script async=&quot;&quot; charset=&quot;utf-8&quot; src=&quot;https://platform.twitter.com/widgets.js&quot;&gt;&lt;/script&gt;&lt;p&gt;&lt;/p&gt;&lt;span face=&quot;&amp;quot;Titillium Web&amp;quot;, sans-serif&quot; style=&quot;background-color: white; font-size: 16px;&quot;&gt; &lt;script async=&quot;&quot; charset=&quot;utf-8&quot; src=&quot;https://platform.twitter.com/widgets.js&quot;&gt;&lt;/script&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;script async=&quot;&quot; charset=&quot;utf-8&quot; src=&quot;https://platform.twitter.com/widgets.js&quot;&gt;&lt;/script&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://techedic.blogspot.com/feeds/3547849086994820827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://techedic.blogspot.com/2021/01/whatsapp-privacy-policy-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/3547849086994820827'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/3547849086994820827'/><link rel='alternate' type='text/html' href='https://techedic.blogspot.com/2021/01/whatsapp-privacy-policy-update.html' title='WhatsApp Privacy Policy Update : Concerned about privacy policy , Users Look at Alternative like Signal, Telegram'/><author><name>Tech Edic</name><uri>http://www.blogger.com/profile/11134449933406915845</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/AVvXsEjH3P_ldrkZnKZI9evUjsIlRc73RA6X39fWlIu2mHs6eyWFmz1mU7yj1TNPryaxNHO20E4hyphenhyphenaKyqypuNogz9muln6Fr4StoaCsjXXj8KWSVjA3pxmJugx73LTTu59CM6_rVr1QKUZHVj-g/s72-w640-h429-c/download.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3829362838309310679.post-3917408538684031846</id><published>2020-12-16T08:34:00.002-08:00</published><updated>2020-12-16T08:34:13.416-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="News"/><title type='text'>U.S. Robot Strikes: Should Terrorism Suspects be given a Fair Trial?</title><content type='html'>&lt;p&gt;&quot;They state Lewis Carol is fiction,&quot; Senator Rand Paul starts his delay, restricting robot strikes on American soil. &quot;Alice never tumbled down a bunny opening, and the White Queen&#39;s scathing decisions are not generally a danger to your security. Has America the lovely become Alice&#39;s wonderland?&quot; Paul continues with an exchange passage from exemplary writing, finishing with frivolity:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;“No no!” said the Queen, “Sentence first, verdict afterwards!”&lt;/p&gt;&lt;p&gt;“Stuff and nonsense!” said Alice loudly. “The idea of having the sentence first!”&lt;/p&gt;&lt;p&gt;“Hold your tongue!” said the Queen, turning purple.&lt;/p&gt;&lt;p&gt;“I won’t!” said Alice.&lt;/p&gt;&lt;p&gt;“Release the drones!” the Queen shouted at the top of her voice.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Congressperson Rand Paul makes a practically equivalent association between fiction and reality. In spite of the fact that Senator&#39;s contention, at last, contradicts drone strikes on American soil, maybe it should be made a stride further, serving likewise as contention for restricting strikes on outsiders. For similarly as the Queen demanded condemning a suspect before the jury got an opportunity to consider, so President Barack Obama executes the utilization of robot strikes to condemn unfamiliar suspects to death without a decision.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&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/AVvXsEgPIhErorjgp3_FY25NTpWympOvj6sJ0VMw_wX9zYQponqpGP-4x0MBB6jf0ZB13JNHhAPJlBuHkisQ4tX-84_UmdyPIk2qqMZQuqdSVtaRvyWfgBp5qPtUmVjhXBHSISxubnHwvGzV5cI//&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1280&quot; data-original-width=&quot;1600&quot; height=&quot;512&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPIhErorjgp3_FY25NTpWympOvj6sJ0VMw_wX9zYQponqpGP-4x0MBB6jf0ZB13JNHhAPJlBuHkisQ4tX-84_UmdyPIk2qqMZQuqdSVtaRvyWfgBp5qPtUmVjhXBHSISxubnHwvGzV5cI/w640-h512/an-f-14ab-tomcat-aircraft-assigned-to-the-strike-aircraft-test-directorate-66a125-1600.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Robots have been utilized to strike residents in far off nations since 2004 when it was first approved by George W. Hedge. From that point forward, there have been several robot strikes in Pakistan, Libya, Yemen, Somalia, Iraq, and Afghanistan. The reason for these assaults is to wipe out outsiders associated with psychological oppression. For what reason would they say they are stuck somewhere around rambles, rather than given a free preliminary? Obama&#39;s thinking for denying them a reasonable and quick preliminary is basically on the grounds that we need more time or space. Does this thinking legitimize the outcomes?&amp;nbsp;&lt;/p&gt;&lt;p&gt;Since psychological oppression is quite a delicate issue, the same number of Americans have been harmed by occasions, for example, 9/11, some might be slanted to state that denying illegal intimidation presumes a preliminary is irrelevant. Maybe, insofar as they&#39;re being gotten, it doesn&#39;t make a difference how their sentence is being completed. There are numerous issues with this way of thinking, in any case, one being that a president&#39;s expected set of responsibilities does exclude being an adjudicator, jury, and killer. There is no higher force than deciding whether a man lives or passes on, and it a force excessively extraordinary for the judgment of one man alone. Notwithstanding this, President Obama has heightened the utilization of robots dramatically, and even dispatched a battle on Libya unlawfully in 2011, with no respect for legislative endorsement. Strangely, even Obama himself concurs with its unlawfulness, as he wrote in 2007:&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: #f6f3f3; font-family: &amp;quot;Select Font&amp;quot;, Arial, Helvetica, sans-serif; font-size: 16px; font-style: italic;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;span style=&quot;background-color: #f6f3f3; font-family: &amp;quot;Select Font&amp;quot;, Arial, Helvetica, sans-serif; font-size: 16px; font-style: italic;&quot;&gt;“The president does not have power under the Constitution to unilaterally authorize a military attack in a situation that does not involve stopping an actual or imminent threat to the nation … History has shown us time and again, however, that military action is most successful when it is authorized and supported by the Legislative branch.”&lt;/span&gt;&amp;nbsp;&lt;/blockquote&gt;&lt;p&gt;Furthermore, U.S. drones are not just focusing on Al Qaeda and their partners they are focusing on assailants crossing the Afghan outskirt. This negates the Obama Administration&#39;s explanation that the robots were just being utilized to target individuals from al-Qaeda or the individuals who represent an &#39;unavoidable danger&#39;. Furthermore, focusing on Taliban infantrymen was not legitimized under the Authorization to Use Military Force (AUMF) that was passed by Congress in 2001.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://techedic.blogspot.com/feeds/3917408538684031846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://techedic.blogspot.com/2020/12/us-robot-strikes-should-terrorism.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/3917408538684031846'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/3917408538684031846'/><link rel='alternate' type='text/html' href='https://techedic.blogspot.com/2020/12/us-robot-strikes-should-terrorism.html' title='U.S. Robot Strikes: Should Terrorism Suspects be given a Fair Trial?'/><author><name>Tech Edic</name><uri>http://www.blogger.com/profile/11134449933406915845</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/AVvXsEgPIhErorjgp3_FY25NTpWympOvj6sJ0VMw_wX9zYQponqpGP-4x0MBB6jf0ZB13JNHhAPJlBuHkisQ4tX-84_UmdyPIk2qqMZQuqdSVtaRvyWfgBp5qPtUmVjhXBHSISxubnHwvGzV5cI/s72-w640-h512-c/an-f-14ab-tomcat-aircraft-assigned-to-the-strike-aircraft-test-directorate-66a125-1600.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3829362838309310679.post-8091476217724906354</id><published>2020-12-15T09:51:00.013-08:00</published><updated>2020-12-15T09:58:54.887-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Deep Learning"/><title type='text'>What is Deep Learning?</title><content type='html'>&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-size: 15px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Deep Learning&lt;/span&gt;&lt;span style=&quot;background-color: white; font-size: 15px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-size: 15px;&quot;&gt;is a subfield of machine learning concerned with algorithms inspired by the structure and function of the brain called&lt;/span&gt;&lt;span style=&quot;background-color: white; font-size: 15px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-size: 15px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;artificial neural networks&lt;/span&gt;&lt;span style=&quot;background-color: white; font-size: 15px;&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;background: rgb(255, 255, 255); border: 0px; font-size: 15px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.5em; margin: 0px 0px 1.2em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;If you are just starting out in the field of deep learning or you had some experience with neural networks some time ago, you may be confused.&amp;nbsp;I know I was confused initially and so were many of my colleagues and friends who learned and used neural networks in the 1990s and early 2000s.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;background: rgb(255, 255, 255); border: 0px; font-size: 15px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.5em; margin: 0px 0px 1.2em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;The leaders and experts in the field have ideas of what deep learning is and these specific and nuanced perspectives shed a lot of light on what deep learning is all about.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;background: rgb(255, 255, 255); border: 0px; font-size: 15px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.5em; margin: 0px 0px 1.2em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;In this post, you will discover exactly what deep learning is by hearing from a range of experts and leaders in the field.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;background: rgb(255, 255, 255); border: 0px; font-size: 15px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.5em; margin: 0px 0px 1.2em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR7q72NXr7gAIbWByjUM0MjYecDrVd7V5a2G7Kccx0rcRXRtFHvy6Z2YFX8WxlAT4RYax5XlxbytKyHWA3_ofP77WY5Vbo4FZYBC9IhBOYo2bRg0r2GyTBjPgTpFnWDjwDRCBxox-6OEs//&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;340&quot; data-original-width=&quot;604&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR7q72NXr7gAIbWByjUM0MjYecDrVd7V5a2G7Kccx0rcRXRtFHvy6Z2YFX8WxlAT4RYax5XlxbytKyHWA3_ofP77WY5Vbo4FZYBC9IhBOYo2bRg0r2GyTBjPgTpFnWDjwDRCBxox-6OEs//&quot; width=&quot;639&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 style=&quot;background: rgb(255, 255, 255); border: 0px; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 24px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.5em; margin: 0px 0px 0.5em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Deep Learning is Large Neural Networks&lt;/h2&gt;&lt;p style=&quot;background: rgb(255, 255, 255); border: 0px; font-size: 15px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.5em; margin: 0px 0px 1.2em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black; font-family: inherit;&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Andrew_Ng&quot; style=&quot;background: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;&quot;&gt;Andrew Ng&lt;/a&gt;&amp;nbsp;from Coursera and Chief Scientist at Baidu Research formally founded&amp;nbsp;&lt;a href=&quot;https://en.wikipedia.org/wiki/Google_Brain&quot; style=&quot;background: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;&quot;&gt;Google Brain&lt;/a&gt;&amp;nbsp;that eventually resulted in the productization of deep learning technologies across a large number of Google services.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;background: rgb(255, 255, 255); border: 0px; font-size: 15px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.5em; margin: 0px 0px 1.2em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;He has spoken and written a lot about what deep learning is and is a good place to start.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;background: rgb(255, 255, 255); border: 0px; font-size: 15px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.5em; margin: 0px 0px 1.2em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;In early talks on deep learning, Andrew described deep learning in the context of traditional artificial neural networks.&amp;nbsp;In the 2013 talk titled “&lt;a href=&quot;https://www.youtube.com/watch?v=n1ViNeWhC24&quot; style=&quot;background: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;&quot;&gt;Deep Learning, Self-Taught Learning and Unsupervised Feature Learning&lt;/a&gt;” he described the idea of deep learning as:&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;background: rgb(255, 255, 255); border: 0px; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 15px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.5em; margin: 0px 0px 1.2em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-style: italic;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p style=&quot;background: rgb(255, 255, 255); border: 0px; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 15px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.5em; margin: 0px 0px 1.2em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-style: italic;&quot;&gt;Using brain simulations, hope to:&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;background: rgb(255, 255, 255); border: 0px; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 15px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.5em; margin: 0px 0px 1.2em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-style: italic;&quot;&gt;– Make learning algorithms much better and easier to use.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;background: rgb(255, 255, 255); border: 0px; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 15px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.5em; margin: 0px 0px 1.2em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-style: italic;&quot;&gt;– Make revolutionary advances in machine learning and AI.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;background: rgb(255, 255, 255); border: 0px; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 15px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.5em; margin: 0px 0px 1.2em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-style: italic;&quot;&gt;I believe this is our best shot at progress towards real AI&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style=&quot;background: rgb(255, 255, 255); border: 0px; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 15px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.5em; margin: 0px 0px 1.2em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-style: italic;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&amp;nbsp;&lt;span style=&quot;background-color: white; font-size: 15px;&quot;&gt;Later his comments became more nuanced.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;background: rgb(255, 255, 255); border: 0px; font-size: 15px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.5em; margin: 0px 0px 1.2em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;The core of deep learning according to Andrew is that we now have fast enough computers and enough data to actually train large neural networks. When discussing why now is the time that deep learning is taking off at ExtractConf 2015 in a talk titled “&lt;a href=&quot;https://www.youtube.com/watch?v=O0VN0pGgBZM&quot; style=&quot;background: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;&quot;&gt;What data scientists should know about deep learning&lt;/a&gt;“, he commented:&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;background: rgb(255, 255, 255); border: 0px; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 15px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 1.5em; margin: 0px 0px 1.2em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;/p&gt;&lt;blockquote&gt;very large neural networks we can now have and … huge amounts of data that we have access to&lt;/blockquote&gt;&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;He also commented on the important point that it is all about scale. That as we construct larger neural networks and train them with more and more data, their performance continues to increase. This is generally different from other machine learning techniques that reach a plateau in performance.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;for most flavors of the old generations of learning algorithms … performance will plateau. … deep learning … is the first class of algorithms … that is scalable. … performance just keeps getting better as you feed them more data &lt;/blockquote&gt;&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&amp;nbsp;Finally, he is clear to point out that the benefits from deep learning that we are seeing in practice come from supervised learning.&amp;nbsp;From the 2015 ExtractConf talk, he commented:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;almost all the value today of deep learning is through supervised learning or learning from labeled data&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;Earlier at a talk to Stanford University titled “&lt;a href=&quot;https://www.youtube.com/watch?v=W15K9PegQt0&quot; style=&quot;background: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Deep Learning&lt;/a&gt;” in 2014, he made a similar comment:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;one reason that deep learning has taken off like crazy is because it is fantastic at supervised learning&lt;/blockquote&gt;&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&amp;nbsp;Andrew&amp;nbsp;often mentions that we should and will see more benefits coming from the unsupervised side of the tracks as the field matures to deal with the&amp;nbsp;&lt;strong style=&quot;background: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;abundance of unlabeled&amp;nbsp;data available&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Jeff_Dean_(computer_scientist)&quot; style=&quot;background: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Jeff Dean&lt;/a&gt;&amp;nbsp;is a Wizard and Google Senior Fellow in the Systems and Infrastructure Group at Google and has been involved and perhaps partially responsible for the scaling and adoption of deep learning within Google. Jeff was involved in the Google Brain project and the development of large-scale deep learning software DistBelief and later&amp;nbsp;&lt;a href=&quot;https://machinelearningmastery.com/tensorflow-tutorial-deep-learning-with-tf-keras/&quot; style=&quot;background: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;TensorFlow&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;In a 2016 talk titled “&lt;a href=&quot;https://www.youtube.com/watch?v=QSaZGT4-6EY&quot; style=&quot;background: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Deep Learning for Building Intelligent Computer Systems&lt;/a&gt;,” he made&amp;nbsp;a comment in a similar vein, that deep learning is really all about large neural networks.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;When you hear the term deep learning, just think of a large deep neural net. Deep refers to the number of layers typically and so this kind of the popular term that’s been adopted in the press. I think of them as deep neural networks generally.&lt;/blockquote&gt;&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;He has given this talk a few times, and in a&amp;nbsp;&lt;a href=&quot;http://static.googleusercontent.com/media/research.google.com/en//people/jeff/BayLearn2015.pdf&quot; style=&quot;background: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;modified set of slides for the same talk&lt;/a&gt;, he highlights the&amp;nbsp;&lt;strong style=&quot;background: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;scalability of neural networks&lt;/strong&gt;&amp;nbsp;indicating that results get better with more data and larger models, which in turn require more computation to train.&lt;/span&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://techedic.blogspot.com/feeds/8091476217724906354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://techedic.blogspot.com/2020/12/what-is-deep-learning.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/8091476217724906354'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/8091476217724906354'/><link rel='alternate' type='text/html' href='https://techedic.blogspot.com/2020/12/what-is-deep-learning.html' title='What is Deep Learning?'/><author><name>Tech Edic</name><uri>http://www.blogger.com/profile/11134449933406915845</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/AVvXsEhR7q72NXr7gAIbWByjUM0MjYecDrVd7V5a2G7Kccx0rcRXRtFHvy6Z2YFX8WxlAT4RYax5XlxbytKyHWA3_ofP77WY5Vbo4FZYBC9IhBOYo2bRg0r2GyTBjPgTpFnWDjwDRCBxox-6OEs/s72-c/" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3829362838309310679.post-3591506961840594257</id><published>2020-12-14T09:39:00.001-08:00</published><updated>2020-12-14T09:40:16.589-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type='text'>Java Tutorial 01 - Overview</title><content type='html'>&lt;p&gt;&lt;span style=&quot;font-family: Arial, Verdana, Tahoma; font-size: 16px; text-align: justify;&quot;&gt;Java programming language was originally developed by Sun Microsystems which was initiated by James Gosling and released in 1995 as a core component of Sun Microsystems&#39; Java platform (Java 1.0 [J2SE]).&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Arial, Verdana, Tahoma; font-size: 16px; text-align: justify;&quot;&gt;&lt;/span&gt;&lt;/p&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/AVvXsEhAdzF4B1qjy658pfMmjJw_OVHzPsrYQ2tMVhOXIoTsQx4rdqQry4eRKdV_bc5h6qn-HeTH3Wa6ySwrZg8roYqQSF9DwmHmWsTN3ngly_yGXqkTazSIFQJgU7FawZgjbaJWYsxeMrc2nCY//&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;441&quot; data-original-width=&quot;881&quot; height=&quot;318&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAdzF4B1qjy658pfMmjJw_OVHzPsrYQ2tMVhOXIoTsQx4rdqQry4eRKdV_bc5h6qn-HeTH3Wa6ySwrZg8roYqQSF9DwmHmWsTN3ngly_yGXqkTazSIFQJgU7FawZgjbaJWYsxeMrc2nCY/w640-h318/Java-Debugging-Tips-881x441.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;font-family: Arial, Verdana, Tahoma; font-size: 16px; margin: 0.5em 0.2em 0.6em; padding: 0px; text-align: justify;&quot;&gt;The latest release of the Java Standard Edition is Java SE 8. With the advancement of Java and its widespread popularity, multiple configurations were built to suit various types of platforms. For example J2EE for Enterprise Applications, J2ME for Mobile Applications.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, Verdana, Tahoma; font-size: 16px; margin: 0.5em 0.2em 0.6em; padding: 0px; text-align: justify;&quot;&gt;The new J2 versions were renamed Java SE, Java EE, and Java ME respectively. Java is guaranteed to be&amp;nbsp;&lt;span style=&quot;font-weight: 640;&quot;&gt;Write Once, Run Anywhere.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;font-family: Arial, Verdana, Tahoma; font-size: 16px; margin: 0.5em 0.2em 0.6em; padding: 0px; text-align: justify;&quot;&gt;Java is −&lt;/p&gt;&lt;ul class=&quot;list&quot; style=&quot;color: rgba(0, 0, 0, 0.87); font-family: Arial, Verdana, Tahoma; font-size: 16px; margin-bottom: 0rem !important; margin-top: 0px;&quot;&gt;&lt;li style=&quot;background-attachment: initial; background-clip: initial; background-image: url(&amp;quot;/images/icon-bullet.png&amp;quot;); background-origin: initial; background-position: 0px 3px; background-repeat: no-repeat; background-size: initial; list-style: none; margin-bottom: 5px; padding: 0px 0px 0px 19px;&quot;&gt;&lt;p style=&quot;color: black; margin: 0.5em 0.2em 0.6em; padding: 0px; text-align: justify;&quot;&gt;&lt;span style=&quot;font-weight: 640;&quot;&gt;Object-Oriented&lt;/span&gt;&amp;nbsp;− In Java, everything is an Object. Java can be easily extended since it is based on the Object model.&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;background-attachment: initial; background-clip: initial; background-image: url(&amp;quot;/images/icon-bullet.png&amp;quot;); background-origin: initial; background-position: 0px 3px; background-repeat: no-repeat; background-size: initial; list-style: none; margin-bottom: 5px; padding: 0px 0px 0px 19px;&quot;&gt;&lt;p style=&quot;color: black; margin: 0.5em 0.2em 0.6em; padding: 0px; text-align: justify;&quot;&gt;&lt;span style=&quot;font-weight: 640;&quot;&gt;Platform Independent&lt;/span&gt;&amp;nbsp;− Unlike many other programming languages including C and C++, when Java is compiled, it is not compiled into the platform-specific machine, rather into platform independent byte code. This byte code is distributed over the web and interpreted by the Virtual Machine (JVM) on whichever platform it is being run on.&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;background-attachment: initial; background-clip: initial; background-image: url(&amp;quot;/images/icon-bullet.png&amp;quot;); background-origin: initial; background-position: 0px 3px; background-repeat: no-repeat; background-size: initial; list-style: none; margin-bottom: 5px; padding: 0px 0px 0px 19px;&quot;&gt;&lt;p style=&quot;color: black; margin: 0.5em 0.2em 0.6em; padding: 0px; text-align: justify;&quot;&gt;&lt;span style=&quot;font-weight: 640;&quot;&gt;Simple&lt;/span&gt;&amp;nbsp;− Java is designed to be easy to learn. If you understand the basic concept of OOP Java, it would be easy to master.&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;background-attachment: initial; background-clip: initial; background-image: url(&amp;quot;/images/icon-bullet.png&amp;quot;); background-origin: initial; background-position: 0px 3px; background-repeat: no-repeat; background-size: initial; list-style: none; margin-bottom: 5px; padding: 0px 0px 0px 19px;&quot;&gt;&lt;p style=&quot;color: black; margin: 0.5em 0.2em 0.6em; padding: 0px; text-align: justify;&quot;&gt;&lt;span style=&quot;font-weight: 640;&quot;&gt;Secure&lt;/span&gt;&amp;nbsp;− With Java&#39;s secure feature it enables to development of virus-free, tamper-free systems. Authentication techniques are based on public-key encryption.&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;background-attachment: initial; background-clip: initial; background-image: url(&amp;quot;/images/icon-bullet.png&amp;quot;); background-origin: initial; background-position: 0px 3px; background-repeat: no-repeat; background-size: initial; list-style: none; margin-bottom: 5px; padding: 0px 0px 0px 19px;&quot;&gt;&lt;p style=&quot;color: black; margin: 0.5em 0.2em 0.6em; padding: 0px; text-align: justify;&quot;&gt;&lt;span style=&quot;font-weight: 640;&quot;&gt;Architecture-neutral&lt;/span&gt;&amp;nbsp;− Java compiler generates an architecture-neutral object file format, which makes the compiled code executable on many processors, with the presence of Java runtime system.&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;background-attachment: initial; background-clip: initial; background-image: url(&amp;quot;/images/icon-bullet.png&amp;quot;); background-origin: initial; background-position: 0px 3px; background-repeat: no-repeat; background-size: initial; list-style: none; margin-bottom: 5px; padding: 0px 0px 0px 19px;&quot;&gt;&lt;p style=&quot;color: black; margin: 0.5em 0.2em 0.6em; padding: 0px; text-align: justify;&quot;&gt;&lt;span style=&quot;font-weight: 640;&quot;&gt;Portable&lt;/span&gt;&amp;nbsp;− Being architecture-neutral and having no implementation dependent aspects of the specification makes Java portable. Compiler in Java is written in ANSI C with a clean portability boundary, which is a POSIX subset.&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;background-attachment: initial; background-clip: initial; background-image: url(&amp;quot;/images/icon-bullet.png&amp;quot;); background-origin: initial; background-position: 0px 3px; background-repeat: no-repeat; background-size: initial; list-style: none; margin-bottom: 5px; padding: 0px 0px 0px 19px;&quot;&gt;&lt;p style=&quot;color: black; margin: 0.5em 0.2em 0.6em; padding: 0px; text-align: justify;&quot;&gt;&lt;span style=&quot;font-weight: 640;&quot;&gt;Robust&lt;/span&gt;&amp;nbsp;− Java makes an effort to eliminate error-prone situations by emphasizing mainly compile-time error checking and runtime checking.&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;background-attachment: initial; background-clip: initial; background-image: url(&amp;quot;/images/icon-bullet.png&amp;quot;); background-origin: initial; background-position: 0px 3px; background-repeat: no-repeat; background-size: initial; list-style: none; margin-bottom: 5px; padding: 0px 0px 0px 19px;&quot;&gt;&lt;p style=&quot;color: black; margin: 0.5em 0.2em 0.6em; padding: 0px; text-align: justify;&quot;&gt;&lt;span style=&quot;font-weight: 640;&quot;&gt;Multithreaded&lt;/span&gt;&amp;nbsp;− With Java&#39;s multithreaded feature it is possible to write programs that can perform many tasks simultaneously. This design feature allows the developers to construct interactive applications that can run smoothly.&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;background-attachment: initial; background-clip: initial; background-image: url(&amp;quot;/images/icon-bullet.png&amp;quot;); background-origin: initial; background-position: 0px 3px; background-repeat: no-repeat; background-size: initial; list-style: none; margin-bottom: 5px; padding: 0px 0px 0px 19px;&quot;&gt;&lt;p style=&quot;color: black; margin: 0.5em 0.2em 0.6em; padding: 0px; text-align: justify;&quot;&gt;&lt;span style=&quot;font-weight: 640;&quot;&gt;Interpreted&lt;/span&gt;&amp;nbsp;− Java byte code is translated on the fly to native machine instructions and is not stored anywhere. The development process is more rapid and analytical since linking is an incremental and light-weight process.&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;background-attachment: initial; background-clip: initial; background-image: url(&amp;quot;/images/icon-bullet.png&amp;quot;); background-origin: initial; background-position: 0px 3px; background-repeat: no-repeat; background-size: initial; list-style: none; margin-bottom: 5px; padding: 0px 0px 0px 19px;&quot;&gt;&lt;p style=&quot;color: black; margin: 0.5em 0.2em 0.6em; padding: 0px; text-align: justify;&quot;&gt;&lt;span style=&quot;font-weight: 640;&quot;&gt;High Performance&lt;/span&gt;&amp;nbsp;− With the use of Just-In-Time compilers, Java enables high performance.&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;background-attachment: initial; background-clip: initial; background-image: url(&amp;quot;/images/icon-bullet.png&amp;quot;); background-origin: initial; background-position: 0px 3px; background-repeat: no-repeat; background-size: initial; list-style: none; margin-bottom: 5px; padding: 0px 0px 0px 19px;&quot;&gt;&lt;p style=&quot;color: black; margin: 0.5em 0.2em 0.6em; padding: 0px; text-align: justify;&quot;&gt;&lt;span style=&quot;font-weight: 640;&quot;&gt;Distributed&lt;/span&gt;&amp;nbsp;− Java is designed for the distributed environment of the internet.&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;background-attachment: initial; background-clip: initial; background-image: url(&amp;quot;/images/icon-bullet.png&amp;quot;); background-origin: initial; background-position: 0px 3px; background-repeat: no-repeat; background-size: initial; list-style: none; margin-bottom: 5px; padding: 0px 0px 0px 19px;&quot;&gt;&lt;p style=&quot;color: black; margin: 0.5em 0.2em 0.6em; padding: 0px; text-align: justify;&quot;&gt;&lt;span style=&quot;font-weight: 640;&quot;&gt;Dynamic&lt;/span&gt;&amp;nbsp;− Java is considered to be more dynamic than C or C++ since it is designed to adapt to an evolving environment. Java programs can carry an extensive amount of run-time information that can be used to verify and resolve access to objects on run-time.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 style=&quot;color: rgba(0, 0, 0, 0.87); font-family: Arial, Verdana, Tahoma; font-size: 23px; font-weight: 400; line-height: 2rem; margin-bottom: 0.625rem; margin-top: 1.25rem;&quot;&gt;History of Java&lt;/h2&gt;&lt;p style=&quot;font-family: Arial, Verdana, Tahoma; font-size: 16px; margin: 0.5em 0.2em 0.6em; padding: 0px; text-align: justify;&quot;&gt;James Gosling initiated the Java language project in June 1991 for use in one of his many set-top box projects. The language, initially called ‘Oak’ after an oak tree that stood outside Gosling&#39;s office, also went by the name ‘Green’ and ended up later being renamed as Java, from a list of random words.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, Verdana, Tahoma; font-size: 16px; margin: 0.5em 0.2em 0.6em; padding: 0px; text-align: justify;&quot;&gt;Sun released the first public implementation as Java 1.0 in 1995. It promised to&amp;nbsp;&lt;span style=&quot;font-weight: 640;&quot;&gt;Write Once, Run Anywhere&lt;/span&gt;&amp;nbsp;(WORA), providing no-cost run-times on popular platforms.&lt;/p&gt;&lt;p style=&quot;font-family: Arial, Verdana, Tahoma; font-size: 16px; margin: 0.5em 0.2em 0.6em; padding: 0px; text-align: justify;&quot;&gt;On 13 November 2006, Sun released much of Java as free and open-source software under the terms of the GNU General Public License (GPL).&lt;/p&gt;&lt;p style=&quot;font-family: Arial, Verdana, Tahoma; font-size: 16px; margin: 0.5em 0.2em 0.6em; padding: 0px; text-align: justify;&quot;&gt;On 8 May 2007, Sun finished the process, making all of Java&#39;s core code free and open-source, aside from a small portion of code to which Sun did not hold the copyright.&lt;/p&gt;&lt;h2 style=&quot;color: rgba(0, 0, 0, 0.87); font-family: Arial, Verdana, Tahoma; font-size: 23px; font-weight: 400; line-height: 2rem; margin-bottom: 0.625rem; margin-top: 1.25rem;&quot;&gt;Tools You Will Need&lt;/h2&gt;&lt;p style=&quot;font-family: Arial, Verdana, Tahoma; font-size: 16px; margin: 0.5em 0.2em 0.6em; padding: 0px; text-align: justify;&quot;&gt;For performing the examples discussed in this tutorial, you will need a Pentium 200-MHz computer with a minimum of 64 MB of RAM (128 MB of RAM recommended).&lt;/p&gt;&lt;p style=&quot;font-family: Arial, Verdana, Tahoma; font-size: 16px; margin: 0.5em 0.2em 0.6em; padding: 0px; text-align: justify;&quot;&gt;You will also need the following software −&lt;/p&gt;&lt;ul class=&quot;list&quot; style=&quot;color: rgba(0, 0, 0, 0.87); font-family: Arial, Verdana, Tahoma; font-size: 16px; margin-bottom: 0rem !important; margin-top: 0px;&quot;&gt;&lt;li style=&quot;background-attachment: initial; background-clip: initial; background-image: url(&amp;quot;/images/icon-bullet.png&amp;quot;); background-origin: initial; background-position: 0px 3px; background-repeat: no-repeat; background-size: initial; list-style: none; margin-bottom: 5px; padding: 0px 0px 0px 19px;&quot;&gt;Linux 7.1 or Windows xp/7/8 operating system&lt;/li&gt;&lt;li style=&quot;background-attachment: initial; background-clip: initial; background-image: url(&amp;quot;/images/icon-bullet.png&amp;quot;); background-origin: initial; background-position: 0px 3px; background-repeat: no-repeat; background-size: initial; list-style: none; margin-bottom: 5px; padding: 0px 0px 0px 19px;&quot;&gt;Java JDK 8&lt;/li&gt;&lt;li style=&quot;background-attachment: initial; background-clip: initial; background-image: url(&amp;quot;/images/icon-bullet.png&amp;quot;); background-origin: initial; background-position: 0px 3px; background-repeat: no-repeat; background-size: initial; list-style: none; margin-bottom: 5px; padding: 0px 0px 0px 19px;&quot;&gt;Microsoft Notepad or any other text editor&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;font-family: Arial, Verdana, Tahoma; font-size: 16px; margin: 0.5em 0.2em 0.6em; padding: 0px; text-align: justify;&quot;&gt;This tutorial will provide the necessary skills to create GUI, networking, and web applications using Java.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://techedic.blogspot.com/feeds/3591506961840594257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://techedic.blogspot.com/2020/12/java-tutorial-overview.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/3591506961840594257'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/3591506961840594257'/><link rel='alternate' type='text/html' href='https://techedic.blogspot.com/2020/12/java-tutorial-overview.html' title='Java Tutorial 01 - Overview'/><author><name>Tech Edic</name><uri>http://www.blogger.com/profile/11134449933406915845</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/AVvXsEhAdzF4B1qjy658pfMmjJw_OVHzPsrYQ2tMVhOXIoTsQx4rdqQry4eRKdV_bc5h6qn-HeTH3Wa6ySwrZg8roYqQSF9DwmHmWsTN3ngly_yGXqkTazSIFQJgU7FawZgjbaJWYsxeMrc2nCY/s72-w640-h318-c/Java-Debugging-Tips-881x441.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3829362838309310679.post-5585235629701487844</id><published>2020-12-14T04:32:00.003-08:00</published><updated>2020-12-14T04:32:32.867-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="google"/><title type='text'>Yes, Google&#39;s Gmail, YouTube, Maps and other services are down around the world</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;span style=&quot;background-color: white; color: #49545e; font-family: Roboto, sans-serif; font-size: 17px;&quot;&gt;Yes, Google’s two of the major services, Gmail and YouTube are down for millions across the globe. Several are also complaining about Google Docs going down. While Google Docs users are seeing the message “Google Docs encountered an error. Please try reloading this page, or coming back to it in a few minutes,” YouTube just shows its error page with a monkey and states ‘Something went wrong’ along with a search bar.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: white; color: #49545e; font-family: Roboto, sans-serif; font-size: 17px;&quot;&gt;&lt;/span&gt;&lt;/p&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/AVvXsEgKewIbuDJKt-r_BA-LpHP14hVDT9e9TE98ZB8VPaWO3QlVd0chWwkZ3njfNwGkcxykzKHaZ8JuA4XQBWH_ASam_ZNAQLIAfanbRlXI5M8LPa_sA2RhT3qjadmS6XiSYKfK9vNg2fAN-EY//&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;120&quot; data-original-width=&quot;420&quot; height=&quot;91&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKewIbuDJKt-r_BA-LpHP14hVDT9e9TE98ZB8VPaWO3QlVd0chWwkZ3njfNwGkcxykzKHaZ8JuA4XQBWH_ASam_ZNAQLIAfanbRlXI5M8LPa_sA2RhT3qjadmS6XiSYKfK9vNg2fAN-EY//&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;textC mb20 ht-dfp-ad-small&quot; data-adcode=&quot;/1055314/HT_Tech_WAP_ES_In-Story_A_Multisize&quot; data-adsize=&quot;[&#39;fluid&#39;, [200, 200], [250, 250], [300, 250], [336, 280]]&quot; style=&quot;background-color: white; box-sizing: border-box; color: #49545e; font-family: Roboto, sans-serif; font-size: 15px; margin-bottom: 20px; text-align: center;&quot;&gt;&lt;/div&gt;&lt;p style=&quot;background-color: white; box-sizing: border-box; color: #49545e; font-family: Roboto, sans-serif; font-size: 17px; line-height: 28px; margin: 0px 0px 34px;&quot;&gt;As for Gmail, the page says ‘We’re sorry, but your account is temporarily unavailable. We apologize for the inconvenience and suggest trying again in a few minutes. You can view the G Suite Status Dashboard for the current status of the service.’&lt;/p&gt;&lt;p style=&quot;background-color: white; box-sizing: border-box; color: #49545e; font-family: Roboto, sans-serif; font-size: 17px; line-height: 28px; margin: 0px 0px 34px;&quot;&gt;According to down detector website, almost all the Google services seem to be affected. This includes Google Drive, Hangouts, Meet, Play, and Duo.&lt;br style=&quot;box-sizing: border-box;&quot; /&gt;&lt;br style=&quot;box-sizing: border-box;&quot; /&gt;Google Maps users can open the page but cannot sign in to get personalized results.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://techedic.blogspot.com/feeds/5585235629701487844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://techedic.blogspot.com/2020/12/yes-googles-gmail-youtube-maps-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/5585235629701487844'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/5585235629701487844'/><link rel='alternate' type='text/html' href='https://techedic.blogspot.com/2020/12/yes-googles-gmail-youtube-maps-and.html' title='Yes, Google&#39;s Gmail, YouTube, Maps and other services are down around the world'/><author><name>Tech Edic</name><uri>http://www.blogger.com/profile/11134449933406915845</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/AVvXsEgKewIbuDJKt-r_BA-LpHP14hVDT9e9TE98ZB8VPaWO3QlVd0chWwkZ3njfNwGkcxykzKHaZ8JuA4XQBWH_ASam_ZNAQLIAfanbRlXI5M8LPa_sA2RhT3qjadmS6XiSYKfK9vNg2fAN-EY/s72-c/" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3829362838309310679.post-4091355419159173111</id><published>2020-12-13T08:52:00.006-08:00</published><updated>2020-12-13T08:52:47.535-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="google"/><title type='text'>Google&#39;s Pixel phones catch up with iPhones as they get this basic camera feature</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;img alt=&quot;Google Pixel Camera app.&quot; class=&quot;entry__img&quot; src=&quot;https://images.hindustantimes.com/tech/img/2020/12/13/960x540/image_-_2020-12-13T152640.292_1607853415112_1607853430010.jpg&quot; /&gt;&lt;/p&gt;&lt;p style=&quot;background-color: white; box-sizing: border-box; color: #49545e; font-family: Roboto, sans-serif; font-size: 17px; line-height: 28px; margin: 0px 0px 34px;&quot;&gt;Google recently rolled out an update for the&amp;nbsp;&lt;a href=&quot;https://tech.hindustantimes.com/mobile/news/google-pixel-feature-drops-to-improve-battery-health-with-adaptive-charging-for-older-phones-as-well-71607413261236.html&quot; style=&quot;background-color: transparent; box-sizing: border-box; color: #e12a21; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;camera app in Pixel phones&lt;/a&gt;. This update brought features like Audio Zoom and Cinematic Pan to older Pixel phones. It also added a storage saver and new video effects. Google also improved the camera app in Pixel phones by adding two level indicators for getting that perfectly leveled shot.&lt;/p&gt;&lt;div class=&quot;textC mb20 ht-dfp-ad-small&quot; data-adcode=&quot;/1055314/HT_Tech_WAP_ES_In-Story_A_Multisize&quot; data-adsize=&quot;[&#39;fluid&#39;, [200, 200], [250, 250], [300, 250], [336, 280]]&quot; style=&quot;background-color: white; box-sizing: border-box; color: #49545e; font-family: Roboto, sans-serif; font-size: 15px; margin-bottom: 20px; text-align: center;&quot;&gt;&lt;/div&gt;&lt;p style=&quot;background-color: white; box-sizing: border-box; color: #49545e; font-family: Roboto, sans-serif; font-size: 17px; line-height: 28px; margin: 0px 0px 34px;&quot;&gt;The new leveling tool in the camera app for Pixels was first&amp;nbsp;&lt;a href=&quot;https://www.androidpolice.com/2020/12/12/tip-the-new-google-camera-helps-you-align-your-phone-for-perfectly-level-shots/&quot; rel=&quot;nofollow&quot; style=&quot;background-color: transparent; box-sizing: border-box; color: #e12a21; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;spotted&lt;/a&gt;&amp;nbsp;by Android Police. There’s now a yellow line in addition to the white one that already exists. Google Pixel users will see the two-level indicators appear after a few seconds of holding the phone still. To get the perfect level shot, you will need to make the yellow and white lines touch each other to form a single yellow line. You can capture your photo once this single level is achieved.&lt;/p&gt;&lt;p style=&quot;background-color: white; box-sizing: border-box; color: #49545e; font-family: Roboto, sans-serif; font-size: 17px; line-height: 28px; margin: 0px 0px 34px;&quot;&gt;Android Police notes that on&amp;nbsp;&lt;a href=&quot;https://tech.hindustantimes.com/mobile/news/google-pixel-4a-launched-in-barely-blue-colour-71605580140042.html&quot; style=&quot;background-color: transparent; box-sizing: border-box; color: #e12a21; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;Pixel 4&amp;nbsp;&lt;/a&gt;and above, users will feel a faint vibration when it reaches the perfect level. The two-level indicators also appear as crosshairs when you’re taking top-down shots. The same process should be followed for this too by getting both the indicators to appear as one. This way you can get the perfect shot in both landscape and portrait mode. The new feature is turned on by default, and there’s no option to turn it off.&lt;/p&gt;&lt;div class=&quot;textC mb20 ht-dfp-ad-small&quot; data-adcode=&quot;/1055314/HT_Tech_WAP_ES_In-Story_B_Multisize&quot; data-adsize=&quot;[&#39;fluid&#39;, [200, 200], [250, 250], [300, 250], [336, 280]]&quot; style=&quot;background-color: white; box-sizing: border-box; color: #49545e; font-family: Roboto, sans-serif; font-size: 15px; margin-bottom: 20px; text-align: center;&quot;&gt;&lt;/div&gt;&lt;p style=&quot;background-color: white; box-sizing: border-box; color: #49545e; font-family: Roboto, sans-serif; font-size: 17px; line-height: 28px; margin: 0px 0px 34px;&quot;&gt;This feature is new for Pixel phones but it’s something that has existed for years on iPhones. iPhone users can turn on the grid from the camera settings to take shots following the rule of thirds, and also adjust the frame with the leveling tool.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://techedic.blogspot.com/feeds/4091355419159173111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://techedic.blogspot.com/2020/12/googles-pixel-phones-catch-up-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/4091355419159173111'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/4091355419159173111'/><link rel='alternate' type='text/html' href='https://techedic.blogspot.com/2020/12/googles-pixel-phones-catch-up-with.html' title='Google&#39;s Pixel phones catch up with iPhones as they get this basic camera feature'/><author><name>Tech Edic</name><uri>http://www.blogger.com/profile/11134449933406915845</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-3829362838309310679.post-6406163940353107706</id><published>2020-12-12T23:43:00.003-08:00</published><updated>2020-12-13T13:39:34.248-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Samsung"/><title type='text'>Samsung Galaxy M12 Reportedly Gets Certified in India, Geekbench Listing Suggests Exynos 850 SoC</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;span style=&quot;background-color: white; color: #3e433e; font-family: &amp;quot;Open Sans&amp;quot;, HelveticaNeue, Helvetica, Arial, sans-serif; font-size: 16px;&quot;&gt;Samsung Galaxy M12 is said to have secured a certification from the Bureau of Indian Standards (BIS). The latest development suggests that the new Samsung phone may soon make its way to India. Separately, a Samsung phone, believed to be the Galaxy M12, has been listed on the benchmarking portal Geekbench. The listing indicates that the smartphone could be powered by Exynos 850 SoC that debuted on the Galaxy A21s earlier. The Galaxy M12 is likely to succeed the Galaxy M11, which was launched in March with entry-level specifications. It is also speculated to launch in some markets as Galaxy F12.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;background-color: white; box-sizing: border-box; color: #3e433e; font-family: &amp;quot;Open Sans&amp;quot;, HelveticaNeue, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 24px; margin: 0px 0px 20px; width: 728px;&quot;&gt;&lt;/p&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/AVvXsEgNr0VRLyq2PW9t3s3lQbEysui-PPDaWTeNDwdmvDSgK3mu8lrNlGe147lPr6Ixb9GeE8WM3_XyRbNwVEf8P9zanlPYfy6lOOO0RRQ6YK9jot3H0f5rtLf_9jxJtWDlMrPiTVTEthHuY1s//&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;534&quot; data-original-width=&quot;950&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNr0VRLyq2PW9t3s3lQbEysui-PPDaWTeNDwdmvDSgK3mu8lrNlGe147lPr6Ixb9GeE8WM3_XyRbNwVEf8P9zanlPYfy6lOOO0RRQ6YK9jot3H0f5rtLf_9jxJtWDlMrPiTVTEthHuY1s/w640-h360/image.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;background-color: white; box-sizing: border-box; color: #3e433e; font-family: &amp;quot;Open Sans&amp;quot;, HelveticaNeue, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 24px; margin: 0px 0px 20px; width: 728px;&quot;&gt;MySmartPrice has&amp;nbsp;&lt;a href=&quot;https://www.mysmartprice.com/gear/samsung-galaxy-m12-galaxy-f12-spotted-bis-certification-india-launch-expected-soon/&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; color: #da0000; cursor: pointer; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;reported&lt;/a&gt;&amp;nbsp;that a&amp;nbsp;&lt;a href=&quot;https://gadgets.ndtv.com/samsung&quot; style=&quot;box-sizing: border-box; color: #da0000; cursor: pointer; text-decoration-line: none;&quot; target=&quot;_self&quot;&gt;Samsung&lt;/a&gt;&amp;nbsp;phone has been listed on the BIS website with a model number SM-M127G/DS that is so far associated with the&amp;nbsp;&lt;a href=&quot;https://gadgets.ndtv.com/tags/samsung-galaxy-m12&quot; style=&quot;box-sizing: border-box; color: #da0000; cursor: pointer; text-decoration-line: none;&quot; target=&quot;_self&quot;&gt;Galaxy M12&lt;/a&gt;. The same listing is also said to include a model number SM-F127G/DS that seems to be related to the&amp;nbsp;&lt;a href=&quot;https://gadgets.ndtv.com/tags/samsung-galaxy-f12&quot; style=&quot;box-sizing: border-box; color: #da0000; cursor: pointer; text-decoration-line: none;&quot; target=&quot;_self&quot;&gt;Galaxy F12&lt;/a&gt;.&lt;/p&gt;&lt;p style=&quot;background-color: white; box-sizing: border-box; color: #3e433e; font-family: &amp;quot;Open Sans&amp;quot;, HelveticaNeue, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 24px; margin: 0px 0px 20px; width: 728px;&quot;&gt;The BIS certification site doesn&#39;t provide any particular details about the Galaxy M12 or the Galaxy F12, according to the report. However, some previous&amp;nbsp;&lt;a href=&quot;https://gadgets.ndtv.com/mobiles/news/samsung-galaxy-m12-rebranded-f12-back-panel-leak-7000mah-battery-6-7-inch-display-2320624&quot; style=&quot;box-sizing: border-box; color: #da0000; cursor: pointer; text-decoration-line: none;&quot;&gt;reports suggest&lt;/a&gt;&amp;nbsp;that both phones could be identical, and the Galaxy M12 may just come as the Galaxy F12 in some markets.&lt;/p&gt;&lt;h2 id=&quot;heading_1&quot; style=&quot;background-color: white; box-sizing: border-box; color: #3e433e; font-family: &amp;quot;Open Sans&amp;quot;, HelveticaNeue, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 24px; margin: 0px;&quot;&gt;Samsung Galaxy M12 specifications (expected)&lt;/h2&gt;&lt;p style=&quot;background-color: white; box-sizing: border-box; color: #3e433e; font-family: &amp;quot;Open Sans&amp;quot;, HelveticaNeue, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 24px; margin: 0px 0px 20px; width: 728px;&quot;&gt;In addition to the BIS certification, a Samsung phone carrying model number SM-M127F, associated with the Galaxy M12, has&amp;nbsp;&lt;a href=&quot;https://browser.geekbench.com/v5/cpu/5268654&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; color: #da0000; cursor: pointer; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;surfaced&lt;/a&gt;&amp;nbsp;on Geekbench. It appears to have Exynos 850 SoC and 3GB of RAM. The listing on the Geekbench site also suggests&amp;nbsp;&lt;a href=&quot;https://gadgets.ndtv.com/tags/android-11&quot; style=&quot;box-sizing: border-box; color: #da0000; cursor: pointer; text-decoration-line: none;&quot; target=&quot;_self&quot;&gt;Android 11&lt;/a&gt;&amp;nbsp;on the Galaxy smartphone.&lt;/p&gt;&lt;p style=&quot;background-color: white; box-sizing: border-box; color: #3e433e; font-family: &amp;quot;Open Sans&amp;quot;, HelveticaNeue, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 24px; margin: 0px 0px 20px; width: 728px;&quot;&gt;Earlier this month, the Samsung phone with the same model number SM-M127F&amp;nbsp;&lt;a href=&quot;https://gadgets.ndtv.com/mobiles/news/samsung-galaxy-m12-f12-bluetooth-sig-wi-fi-alliance-certification-spotted-2334214&quot; style=&quot;box-sizing: border-box; color: #da0000; cursor: pointer; text-decoration-line: none;&quot;&gt;appeared&lt;/a&gt;&amp;nbsp;on the Bluetooth SIG and Wi-Fi Alliance websites. Those listings suggested Bluetooth v5.0 and single-band (2.4GHz) Wi-Fi.&lt;/p&gt;&lt;p style=&quot;background-color: white; box-sizing: border-box; color: #3e433e; font-family: &amp;quot;Open Sans&amp;quot;, HelveticaNeue, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 24px; margin: 0px 0px 20px; width: 728px;&quot;&gt;Some&amp;nbsp;&lt;a href=&quot;https://gadgets.ndtv.com/mobiles/news/samsung-galaxy-m12-renders-leak-design-quad-cameras-onleaks-2326129&quot; style=&quot;box-sizing: border-box; color: #da0000; cursor: pointer; text-decoration-line: none;&quot;&gt;early renders&lt;/a&gt;&amp;nbsp;of the Samsung Galaxy M12 suggest a side-mounted fingerprint sensor and a square-shaped camera module with multiple sensors. The renders also hinted at a USB Type-C port as well as a 3.5mm headphone jack. Further, the phone appeared to have a waterdrop-style display notch.&lt;/p&gt;&lt;p style=&quot;background-color: white; box-sizing: border-box; color: #3e433e; font-family: &amp;quot;Open Sans&amp;quot;, HelveticaNeue, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 24px; margin: 0px 0px 20px; width: 728px;&quot;&gt;The Samsung Galaxy M12 is rumored to have a 6.7-inch display and a massive 7,000mAh battery. The phone is expected to launch in early 2021.&lt;/p&gt;&lt;p style=&quot;background-color: white; box-sizing: border-box; color: #3e433e; font-family: &amp;quot;Open Sans&amp;quot;, HelveticaNeue, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 24px; margin: 0px 0px 20px; width: 728px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://techedic.blogspot.com/feeds/6406163940353107706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://techedic.blogspot.com/2020/12/samsung-galaxy-m12-reportedly-gets.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/6406163940353107706'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/6406163940353107706'/><link rel='alternate' type='text/html' href='https://techedic.blogspot.com/2020/12/samsung-galaxy-m12-reportedly-gets.html' title='Samsung Galaxy M12 Reportedly Gets Certified in India, Geekbench Listing Suggests Exynos 850 SoC'/><author><name>Tech Edic</name><uri>http://www.blogger.com/profile/11134449933406915845</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/AVvXsEgNr0VRLyq2PW9t3s3lQbEysui-PPDaWTeNDwdmvDSgK3mu8lrNlGe147lPr6Ixb9GeE8WM3_XyRbNwVEf8P9zanlPYfy6lOOO0RRQ6YK9jot3H0f5rtLf_9jxJtWDlMrPiTVTEthHuY1s/s72-w640-h360-c/image.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3829362838309310679.post-3765452085788501489</id><published>2020-12-12T23:40:00.003-08:00</published><updated>2020-12-13T13:39:59.840-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Samsung"/><title type='text'>Samsung to Get Incentives for Setting Up Display Factory in Uttar Pradesh</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;span style=&quot;background-color: white; color: #3e433e; font-family: &amp;quot;Open Sans&amp;quot;, HelveticaNeue, Helvetica, Arial, sans-serif; font-size: 16px;&quot;&gt;Uttar Pradesh government on Friday said it will give financial incentives to South Korea&#39;s Samsung Electronics to set up a $654.36 million (Rs. 4,825 crores) display factory.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;background-color: white; box-sizing: border-box; color: #3e433e; font-family: &amp;quot;Open Sans&amp;quot;, HelveticaNeue, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 24px; margin: 0px 0px 20px; width: 728px;&quot;&gt;&lt;/p&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/AVvXsEgRDeqmLwNi2voY5QAGWfldKetbCDkGYXV7zLo70FzqYyA4FfaUBhzUk3y18zZ4U9YigOySDH3xBe4BGb7nIQPShlI-p1lifjmkmw5A0ZceY7lSO4aR3KEi4-n_gmNAOHmgIyOkRk6qhxU//&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;633&quot; data-original-width=&quot;950&quot; height=&quot;426&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRDeqmLwNi2voY5QAGWfldKetbCDkGYXV7zLo70FzqYyA4FfaUBhzUk3y18zZ4U9YigOySDH3xBe4BGb7nIQPShlI-p1lifjmkmw5A0ZceY7lSO4aR3KEi4-n_gmNAOHmgIyOkRk6qhxU//&quot; width=&quot;639&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;background-color: white; box-sizing: border-box; color: #3e433e; font-family: &amp;quot;Open Sans&amp;quot;, HelveticaNeue, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 24px; margin: 0px 0px 20px; width: 728px;&quot;&gt;&lt;a href=&quot;https://gadgets.ndtv.com/samsung&quot; style=&quot;box-sizing: border-box; color: #da0000; cursor: pointer; text-decoration-line: none;&quot; target=&quot;_self&quot;&gt;Samsung&lt;/a&gt;&amp;nbsp;is relocating the factory to the state from China, the Uttar Pradesh administration said in a statement, a move that will help boost Prime Minister Narendra Modi&#39;s flagship drive to make India a manufacturing hub.&lt;/p&gt;&lt;p style=&quot;background-color: white; box-sizing: border-box; color: #3e433e; font-family: &amp;quot;Open Sans&amp;quot;, HelveticaNeue, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 24px; margin: 0px 0px 20px; width: 728px;&quot;&gt;India is the world&#39;s second-biggest smartphone market with significant growth potential, which has driven companies such as Samsung to expand locally.&lt;/p&gt;&lt;p style=&quot;background-color: white; box-sizing: border-box; color: #3e433e; font-family: &amp;quot;Open Sans&amp;quot;, HelveticaNeue, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 24px; margin: 0px 0px 20px; width: 728px;&quot;&gt;New Delhi earlier this year also&amp;nbsp;&lt;a href=&quot;https://gadgets.ndtv.com/mobiles/news/india-launches-rs-50000-crores-plan-to-boost-electronics-manufacturing-2239836&quot; style=&quot;box-sizing: border-box; color: #da0000; cursor: pointer; text-decoration-line: none;&quot; target=&quot;_self&quot;&gt;approved financial incentives&lt;/a&gt;&amp;nbsp;— under a $6.65 billion (roughly Rs. 49,035 crores) federal plan to boost domestic smartphone production — for 16 companies, including Samsung and top&amp;nbsp;&lt;a href=&quot;https://gadgets.ndtv.com/apple&quot; style=&quot;box-sizing: border-box; color: #da0000; cursor: pointer; text-decoration-line: none;&quot; target=&quot;_self&quot;&gt;Apple&lt;/a&gt;&amp;nbsp;suppliers&amp;nbsp;&lt;a href=&quot;https://gadgets.ndtv.com/tags/foxconn&quot; style=&quot;box-sizing: border-box; color: #da0000; cursor: pointer; text-decoration-line: none;&quot; target=&quot;_self&quot;&gt;Foxconn&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;https://gadgets.ndtv.com/tags/wistron&quot; style=&quot;box-sizing: border-box; color: #da0000; cursor: pointer; text-decoration-line: none;&quot; target=&quot;_self&quot;&gt;Wistron&lt;/a&gt;, and&amp;nbsp;&lt;a href=&quot;https://gadgets.ndtv.com/tags/pegatron&quot; style=&quot;box-sizing: border-box; color: #da0000; cursor: pointer; text-decoration-line: none;&quot; target=&quot;_self&quot;&gt;Pegatron&lt;/a&gt;.&lt;/p&gt;&lt;p style=&quot;background-color: white; box-sizing: border-box; color: #3e433e; font-family: &amp;quot;Open Sans&amp;quot;, HelveticaNeue, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 24px; margin: 0px 0px 20px; width: 728px;&quot;&gt;On Friday, Uttar Pradesh said Samsung will receive Rs. 700 crores in financial benefits and will also get an exemption from a tax payable on the transfer of land for the factory.&lt;/p&gt;&lt;p style=&quot;background-color: white; box-sizing: border-box; color: #3e433e; font-family: &amp;quot;Open Sans&amp;quot;, HelveticaNeue, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 24px; margin: 0px 0px 20px; width: 728px;&quot;&gt;Samsung had sought tax and other incentives from Uttar Pradesh for this smartphone display manufacturing plant, Reuters previously reported.&lt;/p&gt;&lt;p style=&quot;background-color: white; box-sizing: border-box; color: #3e433e; font-family: &amp;quot;Open Sans&amp;quot;, HelveticaNeue, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 24px; margin: 0px 0px 20px; width: 728px;&quot;&gt;The unit, expected to create 510 direct jobs, is expected to be operational next year.&lt;/p&gt;&lt;p style=&quot;background-color: white; box-sizing: border-box; color: #3e433e; font-family: &amp;quot;Open Sans&amp;quot;, HelveticaNeue, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 24px; margin: 0px 0px 20px; width: 728px;&quot;&gt;Samsung already operates one of the world&#39;s biggest mobile phone manufacturing plants in Uttar Pradesh.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://techedic.blogspot.com/feeds/3765452085788501489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://techedic.blogspot.com/2020/12/samsung-to-get-incentives-for-setting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/3765452085788501489'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/3765452085788501489'/><link rel='alternate' type='text/html' href='https://techedic.blogspot.com/2020/12/samsung-to-get-incentives-for-setting.html' title='Samsung to Get Incentives for Setting Up Display Factory in Uttar Pradesh'/><author><name>Tech Edic</name><uri>http://www.blogger.com/profile/11134449933406915845</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/AVvXsEgRDeqmLwNi2voY5QAGWfldKetbCDkGYXV7zLo70FzqYyA4FfaUBhzUk3y18zZ4U9YigOySDH3xBe4BGb7nIQPShlI-p1lifjmkmw5A0ZceY7lSO4aR3KEi4-n_gmNAOHmgIyOkRk6qhxU/s72-c/" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3829362838309310679.post-3212186032954227157</id><published>2020-12-12T12:53:00.006-08:00</published><updated>2020-12-12T12:53:44.278-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Kubernetes"/><title type='text'>Understanding Kubernetes networking: pods</title><content type='html'>&lt;figure class=&quot;graf graf--figure&quot; name=&quot;2013&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;625&quot; data-image-id=&quot;1*lOFUj8SnHtV3WrmZN1msNg.png&quot; data-is-featured=&quot;true&quot; data-width=&quot;800&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*lOFUj8SnHtV3WrmZN1msNg.png&quot; /&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;how does the Kubernetes networking work&lt;/figcaption&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;ad51&quot;&gt;This post is going to attempt to demystify the several layers of networking operating in a &lt;a class=&quot;markup--anchor markup--p-anchor&quot; data-href=&quot;https://kubernetes.io/&quot; href=&quot;https://kubernetes.io/&quot; rel=&quot;noopener nofollow noopener noopener&quot; target=&quot;_blank&quot;&gt;Kubernetes&lt;/a&gt; cluster. Kubernetes is a powerful platform embodying many intelligent design choices, but discussing the way things interact can get confusing: pod networks, service networks, cluster IPs, container ports, host ports, node ports… I’ve seen a few eyes glaze over. We mostly talk about these things at work, cutting across all layers at once because something is broken and someone wants it fixed. If you take it a piece at a time and get clear on how each layer works it all makes sense in a rather elegant way.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;00d6&quot;&gt;In order to keep things focused, I’m going to split the post into three parts. This first part will look at containers and pods. The &lt;a class=&quot;markup--anchor markup--p-anchor&quot; data-href=&quot;https://medium.com/@betz.mark/understanding-kubernetes-networking-services-f0cb48e4cc82&quot; href=&quot;https://medium.com/@betz.mark/understanding-kubernetes-networking-services-f0cb48e4cc82&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;second will examine services&lt;/a&gt;, which are the abstraction layer that allows pods to be ephemeral. The&lt;a class=&quot;markup--anchor markup--p-anchor&quot; data-href=&quot;https://medium.com/@betz.mark/understanding-kubernetes-networking-ingress-1bc341c84078&quot; href=&quot;https://medium.com/@betz.mark/understanding-kubernetes-networking-ingress-1bc341c84078&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt; last post&lt;/a&gt; will look at ingress and getting traffic to your pods from outside the cluster. A few disclaimers first. This post isn’t intended to be a basic intro to containers, Kubernetes, or pods. To learn more about how containers work to see &lt;a class=&quot;markup--anchor markup--p-anchor&quot; data-href=&quot;https://docs.docker.com/engine/docker-overview/#the-underlying-technology&quot; href=&quot;https://docs.docker.com/engine/docker-overview/#the-underlying-technology&quot; rel=&quot;noopener nofollow noopener noopener&quot; target=&quot;_blank&quot;&gt;this overview&lt;/a&gt; from &lt;a class=&quot;markup--anchor markup--p-anchor&quot; data-href=&quot;https://www.docker.com/&quot; href=&quot;https://www.docker.com/&quot; rel=&quot;noopener nofollow noopener noopener&quot; target=&quot;_blank&quot;&gt;Docker&lt;/a&gt;. A high-level overview of Kubernetes can be f&lt;a class=&quot;markup--anchor markup--p-anchor&quot; data-href=&quot;https://kubernetes.io/&quot; href=&quot;https://kubernetes.io/&quot; rel=&quot;noopener nofollow noopener noopener&quot; target=&quot;_blank&quot;&gt;ound here&lt;/a&gt;, and an overview of pods specifically &lt;a class=&quot;markup--anchor markup--p-anchor&quot; data-href=&quot;https://kubernetes.io/docs/concepts/workloads/pods/pod/&quot; href=&quot;https://kubernetes.io/docs/concepts/workloads/pods/pod/&quot; rel=&quot;noopener nofollow noopener noopener&quot; target=&quot;_blank&quot;&gt;is here&lt;/a&gt;. Lastly, a basic familiarity with &lt;a class=&quot;markup--anchor markup--p-anchor&quot; data-href=&quot;https://www.digitalocean.com/community/tutorials/an-introduction-to-networking-terminology-interfaces-and-protocols&quot; href=&quot;https://www.digitalocean.com/community/tutorials/an-introduction-to-networking-terminology-interfaces-and-protocols&quot; rel=&quot;noopener nofollow noopener noopener&quot; target=&quot;_blank&quot;&gt;networking&lt;/a&gt; and &lt;a class=&quot;markup--anchor markup--p-anchor&quot; data-href=&quot;https://www.digitalocean.com/community/tutorials/understanding-ip-addresses-subnets-and-cidr-notation-for-networking&quot; href=&quot;https://www.digitalocean.com/community/tutorials/understanding-ip-addresses-subnets-and-cidr-notation-for-networking&quot; rel=&quot;noopener nofollow noopener noopener&quot; target=&quot;_blank&quot;&gt;IP address spaces&lt;/a&gt; will be helpful.&lt;/p&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;2269&quot;&gt;Pods&lt;/h3&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;ad1b&quot;&gt;So what is a pod? A pod consists of one or more containers that are collocated on the same host, and are configured to share a network stack and other resources such as volumes. Pods are the basic unit Kubernetes applications are built from. What does “share a network stack” actually mean? In practical terms, it means that all the containers in a pod can reach each other on the localhost. If I have a container running nginx and listening on port 80 and another container running scrapyd the second container can connect to the first as &lt;a class=&quot;markup--anchor markup--p-anchor&quot; data-href=&quot;http://localhost:80.&quot; href=&quot;http://localhost:80.&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;http://localhost:80.&lt;/a&gt; But how does that really work? Let&#39;s look at the typical situation when we start a docker container on our local machine:&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;2737&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;963&quot; data-image-id=&quot;1*fEa9qUV5dztrMTlnIb1PCw.png&quot; data-width=&quot;1400&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*fEa9qUV5dztrMTlnIb1PCw.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;5da2&quot;&gt;From the top down we have a physical network interface eth0. Attached to that is a bridge docker0, and attached to that is a virtual network interface veth0. Note that docker0 and veth0 are both on the same network, 172.17.0.0/24 in this example. On this network, docker0 is assigned 172.17.0.1 and is the &lt;a class=&quot;markup--anchor markup--p-anchor&quot; data-href=&quot;https://en.wikipedia.org/wiki/Default_gateway&quot; href=&quot;https://en.wikipedia.org/wiki/Default_gateway&quot; rel=&quot;noopener nofollow noopener noopener&quot; target=&quot;_blank&quot;&gt;default gateway&lt;/a&gt; for veth0, which is assigned 172.17.0.2. Due to how network namespaces are configured when the container is launched processes inside it sees only veth0 and communicates with the outside world through docker0 and eth0. Now let’s launch a second container:&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;2ddc&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;963&quot; data-image-id=&quot;1*xNSlkpDYdTvKew0fMdfe-g.png&quot; data-width=&quot;1400&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*xNSlkpDYdTvKew0fMdfe-g.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;1547&quot;&gt;As shown above, the second container gets a new virtual network interface veth1, connected to the same docker0 bridge.* This interface is assigned 172.17.0.3, so it is on the same logical network as the bridge and the first container, and both containers can communicate through the bridge as long as they can discover the other container’s IP address somehow.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;9b13&quot;&gt;That’s fine and all but it doesn’t get us to the “shared network stack” of a Kubernetes pod. Fortunately, the namespaces are very flexible. Docker can start a container and rather than creating a new virtual network interface for it, specify that it &lt;a class=&quot;markup--anchor markup--p-anchor&quot; data-href=&quot;https://docs.docker.com/engine/reference/run/#network-settings&quot; href=&quot;https://docs.docker.com/engine/reference/run/#network-settings&quot; rel=&quot;noopener nofollow noopener noopener&quot; target=&quot;_blank&quot;&gt;shares an existing interface&lt;/a&gt;. In this case, the drawing above looks a little different:&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;61ff&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;963&quot; data-image-id=&quot;1*4If6Kuj9AHnKmE6x0Uhs7A.png&quot; data-width=&quot;1400&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*4If6Kuj9AHnKmE6x0Uhs7A.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;e23e&quot;&gt;Now the second container sees veth0 rather than getting its own veth1 as in the previous example. This has a few implications: first, both containers are addressable from the outside on 172.17.0.2, and on the inside, each can hit ports opened by the other on localhost. This also means that the two containers cannot open the same port, which is a restriction but no different than the situation when running multiple processes on a single host. In this way, a set of processes can take full advantage of the decoupling and isolation of containers, while at the same time collaborating together in the simplest possible networking environment.&lt;/p&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;95f3&quot;&gt;The Pod&amp;nbsp;Network&lt;/h3&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;12c6&quot;&gt;That’s all pretty cool, but one pod full of containers that can talk to each other does not get us a system. For reasons that will become even clearer in the next post where I discuss services, the very heart of Kubernetes’ design requires that pods be able to communicate with other pods whether they are running on the same localhost or separate hosts. To look at how that happens we need to step up a level and look at nodes in a cluster. This section will contain some unfortunate references to network routing and routes, a subject I realize all of humanity would prefer to avoid. Finding a clear, brief tutorial on IP routing is difficult, but if you want a decent review of Wikipedia&#39;s &lt;a class=&quot;markup--anchor markup--p-anchor&quot; data-href=&quot;https://en.wikipedia.org/wiki/Routing_table&quot; href=&quot;https://en.wikipedia.org/wiki/Routing_table&quot; rel=&quot;noopener nofollow noopener noopener&quot; target=&quot;_blank&quot;&gt;article on the topic&lt;/a&gt; isn’t horrible.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;6dd5&quot;&gt;A Kubernetes cluster consists of one or more nodes. A node is a host system, whether physical or virtual, with a container runtime and its dependencies (i.e. docker mostly) and several Kubernetes system components, that are connected to a network that allows it to reach other nodes in the cluster. A simple cluster of two nodes might look like this:&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;a2d9&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;1119&quot; data-image-id=&quot;1*4b-lzfXTAXZleHljyqYkjw.png&quot; data-width=&quot;1400&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*4b-lzfXTAXZleHljyqYkjw.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;1031&quot;&gt;If you’re running your cluster on a cloud platform like GCP or AWS that drawing pretty well approximates the default networking architecture for a single project environment. For the purposes of illustration, I’ve used the private network 10.100.0.0/24 for this example, so the router is 10.100.0.1 and the two instances are 10.100.0.2 and 10.100.0.3 respectively. Given this setup, each instance can communicate with the other on eth0. That’s great, but recall that the pod we looked at above is not on this private network: it’s hanging off a bridge on a different network entirely, one that is virtual and exists only on a specific node. The host on the left has interface eth0 with an address of 10.100.0.2, whose default gateway is the router at 10.100.0.1. Connected to that interface is bridge docker0 with an address of 172.17.0.1, and connected to that is interface veth0 with address 172.17.0.2. The veth0 interface was created with the pause container and is visible inside all three containers by virtue of the shared network stack. Because of local routing rules set up when the bridge has created any packet arriving at eth0 with a destination address of 172.17.0.2 will be forwarded to the bridge, which will then send it on to veth0. Sounds ok so far. If we know we have a pod at 172.17.0.2 on this host we can add rules to our router setting the next hop for that address to 10.100.0.2 and they will get forwarded from there to veth0.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;256f&quot;&gt;The host on the right also has eth0, with an address of 10.100.0.3, using the same default gateway at 10.100.0.1, and again connected to it is the docker0 bridge with an address of 172.17.0.1. Hmm. That’s going to be an issue. Now, this address might not actually be the same as the other bridge on host 1. I’ve made it the same here because that’s a pathological worst case, and it might very well work out that way if you just installed docker and let it do its thing. But even if the chosen network is different this highlights the more fundamental problem which is that one node typically has no idea what private address space was assigned to a bridge on another node, and we need to know that if we’re going to send packets to it and have them arrive at the right place. Clearly some structure is required.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;8652&quot;&gt;Kubernetes provides that structure in two ways. First, it assigns an overall address space for the bridges on each node, and then assigns the bridge&#39;s addresses within that space, based on the node the bridge is built on. Secondly, it adds routing rules to the gateway at 10.100.0.1 telling it how packets destined for each bridge should be routed, i.e. which node’s eth0 the bridge can be reached through. Such a combination of virtual network interfaces, bridges, and routing rules is usually called an &lt;a class=&quot;markup--anchor markup--p-anchor&quot; data-href=&quot;https://en.wikipedia.org/wiki/Overlay_network&quot; href=&quot;https://en.wikipedia.org/wiki/Overlay_network&quot; rel=&quot;noopener nofollow noopener noopener&quot; target=&quot;_blank&quot;&gt;overlay network&lt;/a&gt;. When talking about Kubernetes I usually call this network the “pod network”&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://techedic.blogspot.com/feeds/3212186032954227157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://techedic.blogspot.com/2020/12/understanding-kubernetes-networking-pods.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/3212186032954227157'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/3212186032954227157'/><link rel='alternate' type='text/html' href='https://techedic.blogspot.com/2020/12/understanding-kubernetes-networking-pods.html' title='Understanding Kubernetes networking: pods'/><author><name>Tech Edic</name><uri>http://www.blogger.com/profile/11134449933406915845</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-3829362838309310679.post-8592761549040884144</id><published>2020-12-12T12:45:00.000-08:00</published><updated>2020-12-12T12:45:01.897-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Kubernetes"/><title type='text'>Kubernetes Overview</title><content type='html'>&lt;figure class=&quot;graf graf--figure&quot; name=&quot;a4d9&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;389&quot; data-image-id=&quot;1*31yUo0vkrD-GXigltTsfyw.png&quot; data-is-featured=&quot;true&quot; data-width=&quot;730&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*31yUo0vkrD-GXigltTsfyw.png&quot; /&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;Kubernetes&lt;/figcaption&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p graf--hasDropCapModel graf--hasDropCap&quot; name=&quot;a246&quot;&gt;The name Kubernetes comes from a Greek word and this is a word for helmsman or vessel pilot. Kubernetes is commanding a ship of containers for our applications. Kubernetes began as a secret project funded by Google called Brog. brog Eventually evolved into Kubernetes, powered by many of the Borg support staff. In 2015 Google donated the project to a community called &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Cloud Native Computing Foundation (CNCF).&lt;/strong&gt; Kubernetes solves the problem of the &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;application monolith&lt;/strong&gt;, which is defined as a software product running on dedicated hardware. Monoliths are expensive and quickly drift to legacy hardware. Upgrades to virtual environments and Clouds are expensive and complicated. The advent of microservices and APIs such as RESt services and Service Oriented Architecture (SOA) and the Cloud has made the monolith obsolete and unnecessary.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;1baa&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;600&quot; data-image-id=&quot;1*Klugx0k82yClfw1K5C-5KA.png&quot; data-width=&quot;800&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*Klugx0k82yClfw1K5C-5KA.png&quot; /&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;Monolithic Architecture and Microservices&lt;/figcaption&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;5247&quot;&gt;Kubernetes microservices include:&lt;/p&gt;&lt;ol class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;56de&quot;&gt;&lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Deployment&lt;/strong&gt; - Application Distribution&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;0148&quot;&gt;&lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Sensitive Information&lt;/strong&gt; - Certificates, Password&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;6433&quot;&gt;&lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Registration and scaling&lt;/strong&gt;&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;6198&quot;&gt;&lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Load Balancing&lt;/strong&gt;-Managing requests, data load, traffic, and computing processing power for running applications.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;d2f5&quot;&gt;&lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Job scheduling and Management.&lt;/strong&gt;&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;3780&quot;&gt;&lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;DevOps&lt;/strong&gt;&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;1a69&quot;&gt;&lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Continuity and Fault Tolerance&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;e473&quot;&gt;Before we go further it is important to discuss Container technologies. Kubernetes and other products host applications running in Containers. Containers are a solution for reliably deploying to and running software products in different computing environments. Containers are standardized packages consisting of an application and the items needed to execute it, including runtimes, system tools, libraries, and settings.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;7112&quot;&gt;Also, multiple containers can run on the same operating system(OS)and share the OS kernel. The application and dependencies are packaged in their own container. The difference is supporting infrastructure are abstracted away. The underlying infrastructure only has to run the containers.&lt;/p&gt;&lt;h4 class=&quot;graf graf--h4&quot; name=&quot;998d&quot;&gt;Container management&lt;/h4&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;31e6&quot;&gt;One of the Kubernetes key features is Container management or Orchestration.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;a69a&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;729&quot; data-image-id=&quot;1*8l0_92JjLIkYlOIY-YcXGw.png&quot; data-width=&quot;629&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*8l0_92JjLIkYlOIY-YcXGw.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;b7ab&quot;&gt;Containers&amp;nbsp;:&lt;/p&gt;&lt;ul class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;ae5f&quot;&gt;Are not unique to Kubernetes.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;faed&quot;&gt;Are application-centric, Platform-as-a-Service (PaaS) operating system (OS) level virtualized packages that include their own microservices, and other dependencies.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;dd6f&quot;&gt;Run in isolation from one another, and do not interact&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;2628&quot;&gt;Run with their own set of services&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;a864&quot;&gt;Are not full virtual machines&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;a26c&quot;&gt;All Containers connect to and run using the same OS kernel.&lt;/p&gt;&lt;h4 class=&quot;graf graf--h4&quot; name=&quot;9e3a&quot;&gt;Container Orchestration&lt;/h4&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;2b1e&quot;&gt;The automatic process of managing or scheduling the work of individual containers for applications based on microservices within multiple clusters. Following are the Container orchestration supports,&lt;/p&gt;&lt;ul class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;b051&quot;&gt;Fault-Tolerance: Business continuity&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;3836&quot;&gt;Optimization&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;1f15&quot;&gt;real-time scalability&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;c0b3&quot;&gt;Automatic discovery of other Containers&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;c71b&quot;&gt;On-lines updates, recovery, and rollbacks without downtime&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;da75&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Kubernetes is an open-source container orchestration tool&lt;/strong&gt;. however, Amazon Web services, Azure, Docker, and other vendors also offer Containers Orchestration solution.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;0a10&quot;&gt;Deployment and installation of the container orchestrators can be performed on many types of infrastructure. Organizations and users can almost always select the environment with which they are most familiar: “bare metal”, virtual machines, private or public Clouds. A very popular model is installing Kubernetes on infrastructure as a service (IaaS) solution like Amazon Web Services, Google, etc. Kubernetes can be installed quite readily on these laaS solutions with only a few commands.&lt;/p&gt;&lt;h4 class=&quot;graf graf--h4&quot; name=&quot;fb2b&quot;&gt;Kubernetes features&lt;/h4&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;52d1&quot;&gt;Some Kubernetes features for supporting Container Orchestration:&lt;/p&gt;&lt;ul class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;5656&quot;&gt;&lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Fault tolerance / Self-healing&lt;/strong&gt; -As a multi-node cluster solution, Kubernetes can automatically backup and replace containers in failed nodes.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;f566&quot;&gt;&lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Automatic Bin Packaging&lt;/strong&gt; -Tomaximize resource utilization.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;20e5&quot;&gt;&lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Horizontal Scaling&lt;/strong&gt; -Kubernetes can dynamically add containers as needed based on processing utilization rules and criteria&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;6767&quot;&gt;In Kubernetes, &lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Clusters run Pods &lt;/strong&gt;-Each Pod receives its own IP address, However, all containers communicate using localhost to support load balancing across the containers set.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;f342&quot;&gt;&lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Automatic Recovery and Rollbacks &lt;/strong&gt;-Kubertnets saves application and environment configuration version. When needed, Kubernetes can restore or rollback to a stable version of the app or/or the environment configuration.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;40bb&quot;&gt;&lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Secret and Configuration management&lt;/strong&gt; -Kubernetes manages application secrets and configuration data separately to avoid extensive image rebuilds. Secrets consist of confidential information passed to the application without revealing the sensitive content to the stack configuration.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;7fcf&quot;&gt;&lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Storage Orchestration&lt;/strong&gt; -Kubernetes automatically mounts storage for containers from local appliance storage or virtual storage.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;b77a&quot;&gt;&lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Batch Execution&lt;/strong&gt; -Kubernetes supports batch operations, long-running processes, and container failover.&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;3cd4&quot;&gt;Kubernetes has a flexible modular architecture, that supports plugins and microservice APIs. Kubernetes is extensile and can be augmented by writing custom software programs, API calls, plugins, etc. Kubernetes is supported by a community of more than 2,000 contributors. The Kubernetes community also includes local groups such as meet-ups and interest Groups focused on scaling, networking, and other features.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;e2a1&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;734&quot; data-image-id=&quot;1*0yWa0e48RSZXfDReb4O1oQ.jpeg&quot; data-width=&quot;1159&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*0yWa0e48RSZXfDReb4O1oQ.jpeg&quot; /&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;Kubernetes architecture&lt;/figcaption&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;60e1&quot;&gt;For Kubernetes, the CNCF offerings include:&lt;/p&gt;&lt;ul class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;a2f5&quot;&gt;Licensing and proper use.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;3994&quot;&gt;Scanning for vendor code&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;de77&quot;&gt;Marketing and conferences&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;82f8&quot;&gt;Legal guidance&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;eb7d&quot;&gt;Certification standards&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;0eaf&quot;&gt;Other items&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;d02f&quot;&gt;The Kubernetes host, the Cloud Native Computing Foundation (CNCF) is part of the Linux foundation. The CNCF also host several generally available(GA) products, and incubating projects. Besides Kubernetes, the CNCF’s GA products include Prometheus for monitoring, Fluentd for logging, and several others.&lt;/p&gt;&lt;h4 class=&quot;graf graf--h4&quot; name=&quot;b8c9&quot;&gt;Kubernetes Architecture&lt;/h4&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;3a05&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;504&quot; data-image-id=&quot;1*aqOATOynhJEfE8rx95pIQg.png&quot; data-width=&quot;1484&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*aqOATOynhJEfE8rx95pIQg.png&quot; /&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;Kubernetes Architecture&lt;/figcaption&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;8cc2&quot;&gt;In general, Kubernetes Architecture consists of three major tiers&amp;nbsp;:&lt;/p&gt;&lt;ol class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;24ec&quot;&gt;The User Interface&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;c6bb&quot;&gt;The Master node&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;6f7d&quot;&gt;Worker Node&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;33c5&quot;&gt;The etcd or Key store&lt;/li&gt;&lt;/ol&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;2d63&quot;&gt;Kubernetes is a node-based architecture, with two types of nodes.&lt;/p&gt;&lt;h4 class=&quot;graf graf--h4&quot; name=&quot;796d&quot;&gt;&lt;strong class=&quot;markup--strong markup--h4-strong&quot;&gt;1. Master&amp;nbsp;Node&lt;/strong&gt;:&lt;/h4&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;4df6&quot;&gt;The master node provides connections to the user interface (UI) and executes the control plane service. the control plane services manage and operate the Kubernetes cluster. Each of the control plane services run with distinct roles in cluster operation. the UI includes a command-line interface (CLI), a web dashboard, and an API. Since the Kubernetes Master node runs the cluster, downtime is not tolerated. For redundancy, a replication strategy is used for the Master node. the master node replicas are added to the cluster in High Availability (HA)mode. State data for the cluster is stored in the etcd which is part of the key store. HA mode keeps all master nodes replicas synchronized. If the currently active Master nodes go offline, a replica will start up to continue operating the master node. the master node runs 4 components. They are the API server, the scheduler, the controller, and etcd, or key store.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;f262&quot;&gt;The &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;API server&lt;/strong&gt; manages all administrative tasks in the master node. The API server receives users&#39; REST calls. The API server accesses the state data from the etcd. After the completion of any API processing, the new state of the cluster is written to the etcd, key-store. The API server can be configured and customized.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;f541&quot;&gt;The &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Scheduler &lt;/strong&gt;assigns objects to the nodes. Node assignment is largely based on the Kubernetes cluster&#39;s current state and the object&#39;s runtime requirements. As expected, the scheduler queries the state of the cluster from the etcd, and new object requirements from the objects configuration files. The scheduler is also very configurable and runs complex operations in multi-node clusters.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;b32f&quot;&gt;The &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Controller &lt;/strong&gt;component manages the state of the Kubernetes cluster and the currently running pods. The controller manages a configuration called a DEployments. A Pod is a group of one or more containers. The controller acts when pods go offline. The optimal cluster state or required number of running pods is configured into the controller.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;636e&quot;&gt;The &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;etcd &lt;/strong&gt;is the key-value repository where Kubernetes stores the clusters state. As stated, earlier, only the Controller can access the etcd key-store. The etcd can run in HA-mode to support fault tolerance.&lt;/p&gt;&lt;h4 class=&quot;graf graf--h4&quot; name=&quot;fb34&quot;&gt;&lt;strong class=&quot;markup--strong markup--h4-strong&quot;&gt;Worker Node&lt;/strong&gt;&lt;/h4&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;b888&quot;&gt;Just as master nodes, Worker nodes have four components:&lt;/p&gt;&lt;ul class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;ff3d&quot;&gt;Container runtime&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;da21&quot;&gt;Kubelet&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;d012&quot;&gt;Kube-proxy&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;8057&quot;&gt;Plugins for DNS, Dashboard, cluster monitoring, and cluster logging.&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;deab&quot;&gt;The worker node is the runtime for the application. Through containerization and microservices, the applications run out of pods. Pods are managed on worker nodes, where they consume computing resources such as memory, storage, networking.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;fdb3&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;853&quot; data-image-id=&quot;1*GsFgaOEEGJwpNZv2C-FcPg.png&quot; data-width=&quot;1107&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*GsFgaOEEGJwpNZv2C-FcPg.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;664a&quot;&gt;The &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Kubelet &lt;/strong&gt;is a service that communicates with the master node and the containers. The kubelet connects to the container using a container runtime interface(CRI)&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;d417&quot;&gt;Kubernetes is a container orchestration engine, however, interestingly enough Kubernetes does not directly execute containers. Kubernetes needs a container runtime, on a node where it is executing a pod and containers. Kubernetes supports several container runtimes including;&lt;/p&gt;&lt;ul class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;7727&quot;&gt;Docker: a very popular runtime for Kubernetes&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;da20&quot;&gt;CRI-O: Considered a lightweight container runtime&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;f23f&quot;&gt;Containerd: A very general Container runtime built for many solutions&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;99fe&quot;&gt;rklet&amp;nbsp;: Apod native Container runtime.&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;5e3f&quot;&gt;The Kube-proxy is the networking agent for each node. The plugins and Addons:&lt;/p&gt;&lt;ul class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;f092&quot;&gt;DNS -cluster DNS is a DNS server required to assign DNS records to Kubernetes resources.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;bfc5&quot;&gt;Dashboard -general purposed web-based user interface for cluster management&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;f37f&quot;&gt;Monitoring-Collects cluster level container metrics&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;02ff&quot;&gt;Logging — collects cluster level container logs.&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='https://techedic.blogspot.com/feeds/8592761549040884144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://techedic.blogspot.com/2020/12/kubernetes-overview.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/8592761549040884144'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/8592761549040884144'/><link rel='alternate' type='text/html' href='https://techedic.blogspot.com/2020/12/kubernetes-overview.html' title='Kubernetes Overview'/><author><name>Tech Edic</name><uri>http://www.blogger.com/profile/11134449933406915845</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-3829362838309310679.post-4337906055845863611</id><published>2020-12-12T12:27:00.005-08:00</published><updated>2020-12-13T13:32:22.256-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jenkins"/><title type='text'>Jenkins Tutorials For Beginners — Part 05</title><content type='html'>&lt;p&gt;&lt;span style=&quot;background-color: white; font-family: Arial, Verdana, Tahoma; font-size: 16px; text-align: justify;&quot;&gt;Jenkins is a powerful application that allows continuous integration and continuous delivery of projects, regardless of the platform you are working on. It is a free source that can handle any kind of build or continuous integration. You can integrate Jenkins with a number of testing and deployment technologies. In this tutorial, we would explain how you can use Jenkins to build and test your software projects continuously.&lt;/span&gt;&lt;/p&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;f0f8&quot;&gt;&lt;strong class=&quot;markup--strong markup--h3-strong&quot;&gt;How to Create and builds With the Jenkins FreeStyle Project&lt;/strong&gt;&lt;/h3&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;6cb9&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;242&quot; data-image-id=&quot;1*h2UMmBGGOicR4MInJjgpWw.jpeg&quot; data-is-featured=&quot;true&quot; data-width=&quot;368&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*h2UMmBGGOicR4MInJjgpWw.jpeg&quot; /&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;Jenkins&lt;/figcaption&gt;&lt;/figure&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;15aa&quot;&gt;What is a Jenkins freestyle project?&lt;/h3&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;ef4f&quot;&gt;A Jenkins project is a repeatable build job which contains steps and post-build actions. The types of actions you can perform in a build step or post-build action are quite limited. There are many standard plugins available within a Jenkins freestyle project to help you overcome this problem. They allow you to configure build triggers and offer project-based security for your Jenkins project.&lt;/p&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;5eeb&quot;&gt;Creating a Freestyle Build&amp;nbsp;Job&lt;/h3&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;770b&quot;&gt;The freestyle build job is a highly flexible and easy-to-use option. You can use it for any type of project; it is easy to set up, and many of its options appear in other build jobs.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;1577&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 1) &lt;/strong&gt;To create a Jenkins freestyle job, log on to your Jenkins dashboard by visiting your Jenkins installation path. Usually, it will be hosted on localhost at &lt;a class=&quot;markup--anchor markup--p-anchor&quot; data-href=&quot;http://localhost:8000&quot; href=&quot;http://localhost:8000&quot; target=&quot;_blank&quot;&gt;http://localhost:8000&lt;/a&gt; If you have installed Jenkins in another path, use the appropriate URL to access your dashboard.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;6d11&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 2) &lt;/strong&gt;Click on “&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;New Item&lt;/strong&gt;” at the top left-hand side of your dashboard.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;c27c&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 3) &lt;/strong&gt;In the next screen,&lt;/p&gt;&lt;ol class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;dac4&quot;&gt;Enter the name of the item you want to create. We shall use the “Hello world” for this demo.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;1a0b&quot;&gt;Select Freestyle project&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;3522&quot;&gt;Click Okay&lt;/li&gt;&lt;/ol&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;7013&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;689&quot; data-image-id=&quot;0*0BfI_7SBC-YwKJtt.png&quot; data-width=&quot;705&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*0BfI_7SBC-YwKJtt.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;151c&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 4) &lt;/strong&gt;Enter the details of the project you want to test.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;4231&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 5) &lt;/strong&gt;Under Source Code Management, Enter your repository URL. We have a test repository located at &lt;a class=&quot;markup--anchor markup--p-anchor&quot; data-href=&quot;https://github.com/LakmalAsh/JenkinsFreestyle.git&quot; href=&quot;https://github.com/LakmalAsh/JenkinsFreestyle.git&quot; rel=&quot;nofollow noopener noopener&quot; target=&quot;_blank&quot;&gt;https://github.com/LakmalAsh/JenkinsFreestyle.git&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;58b5&quot;&gt;It is also possible for you to use a local repository.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;c319&quot;&gt;If your GitHub repository is private, Jenkins will first validate your login credentials with GitHub and only then pull the source code from your GitHub repository.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;7dab&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 6) &lt;/strong&gt;Now that you have provided all the details, it’s time to build the code. Tweak the settings under the &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;build&lt;/strong&gt; section to build the code at the time you want. You can even schedule the build to happen periodically, at set times.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;9afa&quot;&gt;Underbuild,&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;930c&quot;&gt;1. Click on “&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Add build step&lt;/strong&gt;”&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;2986&quot;&gt;2. Click on “&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Execute Windows batch command&lt;/strong&gt;” and add the commands you want to execute during the build process.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;b726&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;303&quot; data-image-id=&quot;0*tA4aKUfBi5fUBa4P.png&quot; data-width=&quot;531&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*tA4aKUfBi5fUBa4P.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;c0ed&quot;&gt;Here, I have added the java commands to compile the java code.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;0f4e&quot;&gt;I have added the following windows commands:&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;282c&quot;&gt;javac HelloWorld.java&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;133e&quot;&gt;java HelloWorld&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;4628&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;266&quot; data-image-id=&quot;0*CXbFvKDeW-Rmnqbn.png&quot; data-width=&quot;447&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*CXbFvKDeW-Rmnqbn.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;4b57&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 7)&lt;/strong&gt; When you have entered all the data,&lt;/p&gt;&lt;ol class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;9b97&quot;&gt;Click &lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Apply&lt;/strong&gt;&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;2ae0&quot;&gt;&lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Save &lt;/strong&gt;the project.&lt;/li&gt;&lt;/ol&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;f448&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 8) &lt;/strong&gt;Now, on the main screen, click the &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Build Now &lt;/strong&gt;button on the left-hand side to build the source code.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;ca22&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;305&quot; data-image-id=&quot;0*9ov7YCccwAKd3-8_.png&quot; data-width=&quot;634&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*9ov7YCccwAKd3-8_.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;ddb5&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 9) &lt;/strong&gt;After clicking on &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Build now, &lt;/strong&gt;you can see the status of the build you run under &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Build History&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;419d&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 10) &lt;/strong&gt;Click on the &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;build number &lt;/strong&gt;and&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt; &lt;/strong&gt;then&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt; &lt;/strong&gt;Click on &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;console output &lt;/strong&gt;to see the status of the build you run. It should show you a success message, provided you have followed the setup properly&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;b326&quot;&gt;In sum, we have executed a HelloWorld program hosted on GitHub. Jenkin pulls the code from the remote repository and builds continuously at a frequency you define.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;61df&quot;&gt;So we discuss now until the freestyle project creation. Next, we discuss the &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Jenkins Pipeline. &lt;/strong&gt;Thank you.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://techedic.blogspot.com/feeds/4337906055845863611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://techedic.blogspot.com/2020/12/jenkins-for-beginnerspart-05.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/4337906055845863611'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/4337906055845863611'/><link rel='alternate' type='text/html' href='https://techedic.blogspot.com/2020/12/jenkins-for-beginnerspart-05.html' title='Jenkins Tutorials For Beginners — Part 05'/><author><name>Tech Edic</name><uri>http://www.blogger.com/profile/11134449933406915845</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-3829362838309310679.post-4208800743585616685</id><published>2020-12-12T12:25:00.006-08:00</published><updated>2020-12-13T13:32:05.062-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jenkins"/><title type='text'>Jenkins Tutorials For Beginners — Part 04</title><content type='html'>&lt;p&gt;&lt;span style=&quot;background-color: white; font-family: Arial, Verdana, Tahoma; font-size: 16px; text-align: justify;&quot;&gt;Jenkins is a powerful application that allows continuous integration and continuous delivery of projects, regardless of the platform you are working on. It is a free source that can handle any kind of build or continuous integration. You can integrate Jenkins with a number of testing and deployment technologies. In this tutorial, we would explain how you can use Jenkins to build and test your software projects continuously.&lt;/span&gt;&lt;/p&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;dbd0&quot;&gt;How to Create Users &amp;amp; Manage Permissions: Role Strategy&amp;nbsp;Plugin&lt;/h3&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;9dc3&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;242&quot; data-image-id=&quot;1*0S8EdFKgSR3e6uNmdympFg.jpeg&quot; data-is-featured=&quot;true&quot; data-width=&quot;368&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*0S8EdFKgSR3e6uNmdympFg.jpeg&quot; /&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;Jenkins&lt;/figcaption&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;90e5&quot;&gt;Generally, in a large organization, there are multiple, separate teams to manage and run jobs in Jenkins. But managing this crowd of users and assigning roles to them can prove troublesome.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;9470&quot;&gt;By default, Jenkins comes with very basic user creation options. You can create multiple users but can only assign the same global roles and privileges to them. This not ideal, especially for a large organization.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;d9cd&quot;&gt;The &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Role Strategy Plugin &lt;/strong&gt;enables you to assign different roles and privileges to different users&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;.&lt;/strong&gt; You will first need to install the plugin in your Jenkins mange environment.&lt;/p&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;51a3&quot;&gt;How to Create/Add a&amp;nbsp;User&lt;/h3&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;ddc7&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 1) log in&lt;/strong&gt; to your Jenkins dashboard by visiting http://localhost:8000/&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;1a53&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 2) &lt;/strong&gt;You will now see options to create new users and manage current users.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;86d5&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 3)&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;c9e8&quot;&gt;Under Manage Jenkins, Click Create User&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;01a4&quot;&gt;Enter User details like password, name, email, etc.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;11eb&quot;&gt;Click Create User&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;3890&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 4) &lt;/strong&gt;User is created&lt;/p&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;5137&quot;&gt;Install Role Strategy&amp;nbsp;Plugin&lt;/h3&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;e879&quot;&gt;There are two methods for installing plugins in Jenkins:&lt;/p&gt;&lt;ol class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;d89b&quot;&gt;Installing it through your Jenkins dashboard&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;1de9&quot;&gt;Downloading the plugin from the Jenkins website and installing it manually.&lt;/li&gt;&lt;/ol&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;a7ff&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 1)&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;87d2&quot;&gt;1. Go to &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Manage Jenkins&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;f755&quot;&gt;2. Click on the Manage Plugins option&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;9ecf&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;620&quot; data-image-id=&quot;0*ky7zLv5MTTpaiCI7.png&quot; data-width=&quot;1007&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*ky7zLv5MTTpaiCI7.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;4674&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 2)&lt;/strong&gt;&lt;/p&gt;&lt;ol class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;0062&quot;&gt;In the available section, screen&lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt; &lt;/strong&gt;Search for “role”.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;bbaa&quot;&gt;Select Role&lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;-based Authorization Strategy &lt;/strong&gt;plugin&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;22f2&quot;&gt;Click on “&lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Install without restart&lt;/strong&gt;” (make sure you have an active internet connection)&lt;/li&gt;&lt;/ol&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;a7b8&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;231&quot; data-image-id=&quot;0*_oWvoB3KkfVBtDM7.png&quot; data-width=&quot;799&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*_oWvoB3KkfVBtDM7.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;af24&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 3)&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;c7cd&quot;&gt;Once the plugin is installed, a “success” status will be displayed.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;6005&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;332&quot; data-image-id=&quot;0*4p0fd5phI34_HYRs.png&quot; data-width=&quot;589&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*4p0fd5phI34_HYRs.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;55b4&quot;&gt;Click on &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Go back to the top page.&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;8701&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 4) &lt;/strong&gt;Go to &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Manage Jenkins -&amp;gt; &lt;/strong&gt;Configure Global Security -&amp;gt; Under &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Authorization, &lt;/strong&gt;select &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Role-Based Strategy&lt;/strong&gt;.&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt; &lt;/strong&gt;Click on&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt; Save&lt;/strong&gt;.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;91e7&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;668&quot; data-image-id=&quot;0*H1BBMviFGqqHzcaI.png&quot; data-width=&quot;572&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*H1BBMviFGqqHzcaI.png&quot; /&gt;&lt;/figure&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;2192&quot;&gt;Create Roles&lt;/h3&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;3d8c&quot;&gt;In this step, we shall learn to certain roles to a single user or a group of users.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;de2d&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 1)&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;5960&quot;&gt;1. Go to &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Manage Jenkins&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;c449&quot;&gt;2. Select &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Manage and Assign Roles&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;499c&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;487&quot; data-image-id=&quot;0*knNyN-b_dZka0q9z.png&quot; data-width=&quot;627&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*knNyN-b_dZka0q9z.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;b00e&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Note: &lt;/strong&gt;that the &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Manage and Assign Roles &lt;/strong&gt;option will only be visible if you’ve installed the role strategy plugin.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;5a9a&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 2) &lt;/strong&gt;Click on &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Manage Roles &lt;/strong&gt;to add new roles based on your organization.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;ef9b&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;272&quot; data-image-id=&quot;0*aTiFIOLYGFiswMQ3.png&quot; data-width=&quot;486&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*aTiFIOLYGFiswMQ3.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;5200&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 3) &lt;/strong&gt;To create a new role called “developer”,&lt;/p&gt;&lt;ol class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;55c7&quot;&gt;Type “developer” under “role”.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;25d3&quot;&gt;Click on “Add” to create a new role.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;d735&quot;&gt;Now, select the permissions you want to assign to the “Developer” role.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;a0b8&quot;&gt;Click Save&lt;/li&gt;&lt;/ol&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;102c&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;633&quot; data-image-id=&quot;0*JHieLXd-1nQcH8Iz.png&quot; data-width=&quot;1220&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*JHieLXd-1nQcH8Iz.png&quot; /&gt;&lt;/figure&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;8fca&quot;&gt;Assign a&amp;nbsp;Role&lt;/h3&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;d99e&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 1) &lt;/strong&gt;Now that you have created roles, let us assign them to specific users.&lt;/p&gt;&lt;ol class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;5b11&quot;&gt;Go to &lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Manage Jenkins&lt;/strong&gt;&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;f91b&quot;&gt;Select Manage and Assign Roles&lt;/li&gt;&lt;/ol&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;6a36&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;286&quot; data-image-id=&quot;0*3H_sjR9W3J31SEhB.png&quot; data-width=&quot;540&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*3H_sjR9W3J31SEhB.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;8190&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 2) &lt;/strong&gt;We shall add the new role “&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;developer&lt;/strong&gt;” to the user “&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;what you enter in user&lt;/strong&gt;”&lt;/p&gt;&lt;ol class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;b320&quot;&gt;Selector developer role checkbox&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;a3bf&quot;&gt;Click Save&lt;/li&gt;&lt;/ol&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;cd82&quot;&gt;You can assign any role to any user, as per your need.&lt;/p&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;a01e&quot;&gt;Project Roles&lt;/h3&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;c00f&quot;&gt;You can create project-specific roles under &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Project Roles.&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;a04e&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 1) &lt;/strong&gt;In Jenkin’s Manage and Assign Roles&lt;/p&gt;&lt;ol class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;de76&quot;&gt;Enter a role as “tester”&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;0c2e&quot;&gt;Add a pattern to this by adding &lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;tester.*&lt;/strong&gt;, so that any username starting with “tester” will be assigned the project role you specify.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;8fb1&quot;&gt;Click Add&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;f3f0&quot;&gt;Select privileges&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;2f9f&quot;&gt;Click Save&lt;/li&gt;&lt;/ol&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;cba4&quot;&gt;So now you can see how the Roles are doing in Jenkins. In the next part, we will discuss &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;How to Create Builds with the Jenkins Freestyle Project&lt;/strong&gt;.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://techedic.blogspot.com/feeds/4208800743585616685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://techedic.blogspot.com/2020/12/jenkins-for-beginnerspart-04.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/4208800743585616685'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/4208800743585616685'/><link rel='alternate' type='text/html' href='https://techedic.blogspot.com/2020/12/jenkins-for-beginnerspart-04.html' title='Jenkins Tutorials For Beginners — Part 04'/><author><name>Tech Edic</name><uri>http://www.blogger.com/profile/11134449933406915845</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-3829362838309310679.post-7774361011243008289</id><published>2020-12-12T11:29:00.006-08:00</published><updated>2020-12-13T13:40:14.222-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Machine Learning"/><title type='text'>Creating a Model for Weather Forecasting Using Linear Regression</title><content type='html'>&lt;section class=&quot;section section--body&quot; name=&quot;d33c&quot;&gt;&lt;div class=&quot;section-content&quot;&gt;&lt;div class=&quot;section-inner sectionLayout--insetColumn&quot;&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;39fa&quot;&gt;Linear Regression is a machine learning algorithm based on supervised learning. It performs a regression task. Regression models a target prediction value based on independent variables. It is mostly used for finding out the relationship between variables and forecasting. Different regression models differ based on — the kind of relationship between dependent and independent variables, they are considering and the number of independent variables being used. creates a model that forecasts weather/temperature based upon some features mainly including Humidity, Ppm, and Air quality index AQI or PM2.5. We searched for a lot of datasets that contain all those features but found none. What we found were two different datasets containing the following features: -&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;cf2f&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;402&quot; data-image-id=&quot;1*doaqR0rl1TZtevGrWjcS4g.png&quot; data-is-featured=&quot;true&quot; data-width=&quot;974&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*doaqR0rl1TZtevGrWjcS4g.png&quot; /&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;h4 class=&quot;graf graf--h4&quot; name=&quot;4622&quot;&gt;&lt;strong class=&quot;markup--strong markup--h4-strong&quot;&gt;Data-set-1&lt;/strong&gt;&lt;/h4&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;eb70&quot;&gt;This data set contains features like Weather temperature, humidity, and AQI(PM2.5) as the target variable. This data set was too short just &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;150&lt;/strong&gt; entries.&lt;/p&gt;&lt;h4 class=&quot;graf graf--h4&quot; name=&quot;76fe&quot;&gt;&lt;strong class=&quot;markup--strong markup--h4-strong&quot;&gt;Data-set-2:&lt;/strong&gt;&lt;/h4&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;072b&quot;&gt;This data set contains almost 24 features including Ppm, Humidity, and weather temperature as a target variable.&lt;/p&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;31b9&quot;&gt;&lt;strong class=&quot;markup--strong markup--h3-strong&quot;&gt;Solution&lt;/strong&gt;&lt;/h3&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;0dd5&quot;&gt;We cannot record real-time data due to pandemic, nor do we have any data set that contains all required features in one place. One possible solution was to combine both data sets so that we can create a final data set that contains all the required features. In order to do so, we must create two separate models. One model that is trained on data-set-1 and predicts the AQI(PM2.5) value and the other data set into which the values of PM2.5 will be embedded to get the final desired data set.&lt;/p&gt;&lt;h4 class=&quot;graf graf--h4&quot; name=&quot;4b50&quot;&gt;&lt;strong class=&quot;markup--strong markup--h4-strong&quot;&gt;Program Structure&lt;/strong&gt;&lt;/h4&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;77f8&quot;&gt;We created a linear regression model and train it on data set-1 to predict PM2.5 values. Before that, we plotted a heat map to check the correlation between features and target variables and found out that only temperature and humidity were in some correlation with PM2.5 (target variable ). So the model was trained using these two features. The following shows the heat map of it.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;0be6&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;797&quot; data-image-id=&quot;1*sZ548WxnZqjSkOBqbEQjCA.png&quot; data-width=&quot;925&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*sZ548WxnZqjSkOBqbEQjCA.png&quot; /&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;Heat map&lt;/figcaption&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;4158&quot;&gt;We saved this model as a pickle file to use it later. Pickle is a python module used to store objects. We save the model at maximum accuracy because every time we ran the program accuracy varies a little bit, so it is always a nice practice to save the best accuracy model to use it again.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;379f&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;536&quot; data-image-id=&quot;1*b3gS_ppIa0Uvuscaggatqw.png&quot; data-width=&quot;610&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*b3gS_ppIa0Uvuscaggatqw.png&quot; /&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;Gather data&lt;/figcaption&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;8f15&quot;&gt;Data-set2 now needed to be embedded with PM2.5 values. So we picked temperature and humidity columns from dataset-2 and give it to our trained linear regression model to get values of PM2.5. in this way we created a final data set that now has all features including Ppm, Humidity, PM2.5.Now we trained another linear regression model on this final data set with Temperature as the target variable. As before we again plotted the heat maps to check the correlation of features and target variables to throw out unnecessary features.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;b544&quot;&gt;The model when trained gave 93% accuracy which is quite good. But as it is not real data rather it is just sample data so the model might not predict very accurately on real-time data. To overcome this, we must retrain our model on real-time data, and then it will be good to go.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section class=&quot;section section--body&quot; name=&quot;b1af&quot;&gt;&lt;div class=&quot;section-divider&quot;&gt;&lt;hr class=&quot;section-divider&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;section-content&quot;&gt;&lt;div class=&quot;section-inner sectionLayout--insetColumn&quot;&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;369b&quot;&gt;Here is the code snippet of the training method that uses here.&lt;/p&gt;&lt;pre class=&quot;graf graf--pre&quot; name=&quot;523f&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;lis_drop = [ &#39;Date2&#39;,&#39;Time3&#39;,&#39;Weather_Temperature6&#39;, &#39;Exterior_Entalpic_120&#39;,&#39;Exterior_Entalpic_221&#39;, &#39;Exterior_Entalpic_turbo22&#39;,&#39;Day_Of_Week\n&#39;&lt;br /&gt;&#39;Lighting_Comedor_Sensor11&#39; , &#39;Lighting_Habitacion_Sensor12&#39;,   &#39;Precipitacion13&#39;  , &#39;Meteo_Exterior_Crepusculo14&#39;]&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;graf graf--pre&quot; name=&quot;0664&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;features = []&lt;br /&gt;for i in data:&lt;br /&gt;  # print(i)&lt;br /&gt;  if i not in lis_drop:&lt;br /&gt;   features.append( i )&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;graf graf--pre&quot; name=&quot;3231&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;print(len(features))&lt;br /&gt;print (features)&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;graf graf--pre&quot; name=&quot;a27d&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;x = np.array(data[features  ])&lt;br /&gt;y = np.array(data[&#39;Weather_Temperature6&#39;])&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;graf graf--pre&quot; name=&quot;e509&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;print(x.shape , y.shape)&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;graf graf--pre&quot; name=&quot;6b2f&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;#x_train , x_test , y_train , y_test = sklearn.model_selection.train_test_split(x , y , test_size = 0.1 )&lt;br /&gt;#print(x_train.shape , y_train.shape) &lt;br /&gt;#print(x_test.shape , y_test.shape)&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;graf graf--pre&quot; name=&quot;a536&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;while True:&lt;br /&gt;  x_train , x_test , y_train , y_test =  sklearn.model_selection.train_test_split(x , y , test_size = 0.2 )&lt;br /&gt;  linear = linear_model.LinearRegression()&lt;br /&gt;  linear.fit(x_train,  y_train)&lt;br /&gt;  acc = linear.score(x_test , y_test)&lt;br /&gt;  if int(acc*100) &amp;gt; 94:&lt;br /&gt;    #print(acc*100)&lt;br /&gt;  break&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;graf graf--pre&quot; name=&quot;4000&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;predictions = linear.predict(x_test)&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;graf graf--pre&quot; name=&quot;dffa&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;for i in range(len(predictions)):&lt;br /&gt;  print(&#39;PREDICTED WEATHER : &#39;+str(predictions[i])  ,&#39;\t&#39;,&#39;ACTUAL    WEATEHR : &#39;+str(y_test[i]))&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;graf graf--pre&quot; name=&quot;a3a1&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;print(acc)&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;fdc8&quot;&gt;Conclusion&lt;/h3&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;0451&quot;&gt;From these code snippets, we can train the data and get an approximately 93% accurate model for weather prediction. Also, forget the more accuracy need to improve the algorithm with neural networks with the Keras LSTM model. That will be worked fine rather than going with the linear regression&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;</content><link rel='replies' type='application/atom+xml' href='https://techedic.blogspot.com/feeds/7774361011243008289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://techedic.blogspot.com/2020/12/creating-model-for-weather-forecasting.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/7774361011243008289'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/7774361011243008289'/><link rel='alternate' type='text/html' href='https://techedic.blogspot.com/2020/12/creating-model-for-weather-forecasting.html' title='Creating a Model for Weather Forecasting Using Linear Regression'/><author><name>Tech Edic</name><uri>http://www.blogger.com/profile/11134449933406915845</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-3829362838309310679.post-5885547649020785264</id><published>2020-12-12T11:28:00.004-08:00</published><updated>2020-12-13T13:41:30.786-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Deep Learning"/><title type='text'>Deep Learning for Air Quality Prediction</title><content type='html'>&lt;section class=&quot;section section--body&quot; name=&quot;ede8&quot;&gt;&lt;div class=&quot;section-content&quot;&gt;&lt;div class=&quot;section-inner sectionLayout--insetColumn&quot;&gt;&lt;h3&gt;&lt;/h3&gt;&lt;h4&gt;&lt;p&gt;&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;068a&quot;&gt;&lt;figcaption class=&quot;imageCaption&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: inherit; font-weight: normal;&quot;&gt;&lt;span class=&quot;graf-dropCap&quot;&gt;As&lt;/span&gt; we all know air pollution is one of the major problems in urban cities, where particulate matter is the most dangerous part of air pollution which affects humans than any other substance. Time Series Forecasting to predict air quality using Deep Learning with Long Short-Term Memory (LSTM) Neural Network. First, let&#39;s talk about what&#39;s called LSTM and the theory of it.&lt;/span&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/h4&gt;&lt;h4 class=&quot;graf graf--h4&quot; name=&quot;ae34&quot;&gt;Recurrent Neural&amp;nbsp;Networks&lt;/h4&gt;&lt;p class=&quot;graf graf--p graf--hasDropCapModel graf--hasDropCap&quot; name=&quot;ed85&quot;&gt;&lt;span class=&quot;graf-dropCap&quot;&gt;T&lt;/span&gt;raditional neural networks can’t do this, and it seems like a major shortcoming. For example, imagine you want to classify what kind of event is happening at every point in a movie. It’s unclear how a traditional neural network could use its reasoning about previous events in the film to inform later ones. Recurrent neural networks address this issue. They are networks with loops in them, allowing information to persist.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;8941&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;313&quot; data-image-id=&quot;1*CoNnxJlmETLqk-diAAujrA.png&quot; data-is-featured=&quot;true&quot; data-width=&quot;451&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*CoNnxJlmETLqk-diAAujrA.png&quot; /&gt;&lt;/p&gt;&lt;h4 class=&quot;graf graf--h4&quot; name=&quot;db15&quot;&gt;LSTM Networks&lt;/h4&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;8941&quot;&gt;Long Short Term Memory networks — usually just called “LSTMs” — are a special kind of RNN, capable of learning long-term dependencies.LSTMs are explicitly designed to avoid the long-term dependency problem. All recurrent neural networks have the form of a chain of repeating modules of the neural networks. In standard RNNs, this repeating module will have a very simple structure, such as a single tanh layer.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;4e1c&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;839&quot; data-image-id=&quot;1*J5W8FrASMi93Z81NlAui4w.png&quot; data-width=&quot;2233&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*J5W8FrASMi93Z81NlAui4w.png&quot; /&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;&lt;strong class=&quot;markup--strong markup--figure-strong&quot;&gt;The repeating module in an LSTM contains four interacting layers.&lt;/strong&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;6bae&quot;&gt;In the above diagram, yellow boxes denote the neural network layer, Pink circle denote Pointwise Operation, and arrows mention the Transfer, copy. Each line carries an entire vector, from the output of one node to the inputs of others. The pink circles represent pointwise operations, like vector addition, while the yellow boxes are learned neural network layers. Lines merging denote concatenation, while a line forking denotes its content being copied and the copies going to different locations. The key to LSTMs is the cell state, the horizontal line running through the top of the diagram. The cell state is kind of like a conveyor belt. It runs straight down the entire chain, with only some minor linear interactions. It’s very easy for information to just flow along with it unchanged.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;7b9f&quot;&gt;The LSTM does have the ability to remove or add information to the cell state, carefully regulated by structures called gates. Gates are a way to optionally let information through. They are composed out of a sigmoid neural net layer and a pointwise multiplication operation. The sigmoid layer outputs numbers between zero and one, describing how much of each component should be let through. A value of zero means “let nothing through,” while a value of one means “let everything through!”&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;b05e&quot;&gt;An LSTM has three of these gates, to protect and control the cell state.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section class=&quot;section section--body&quot; name=&quot;dc5c&quot;&gt;&lt;div class=&quot;section-divider&quot;&gt;&lt;hr class=&quot;section-divider&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;section-content&quot;&gt;&lt;div class=&quot;section-inner sectionLayout--insetColumn&quot;&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;da66&quot;&gt;Now From the above part, we can go through some ideas of the LSTM neural networks. So next move on to the Coding part. Here we choose python as the programming language using the following libraries.&lt;/p&gt;&lt;pre class=&quot;graf graf--pre&quot; name=&quot;d435&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;import datetime, warnings, scipy &lt;br /&gt;import pandas as pd&lt;br /&gt;import numpy as np&lt;br /&gt;import seaborn as sns&lt;br /&gt;import matplotlib as mpl&lt;br /&gt;import matplotlib.pyplot as plt&lt;br /&gt;from IPython.core.interactiveshell import InteractiveShell&lt;br /&gt;import math&lt;br /&gt;from keras.models import Sequential&lt;br /&gt;from keras.layers import Dense&lt;br /&gt;from keras.layers import LSTM&lt;br /&gt;from sklearn.preprocessing import MinMaxScaler, StandardScaler&lt;br /&gt;from sklearn.metrics import mean_squared_error&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;69cb&quot;&gt;After importing the libraries then move to the data importing a part of the algorithm.&lt;/p&gt;&lt;pre class=&quot;graf graf--pre&quot; name=&quot;99db&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;df = pd.read_csv(&#39;Data.csv&#39;, sep=&#39; &#39;)&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;8953&quot;&gt;So after importing the data the main process of the algorithm comes next. The calculation part for the quantile from each attribute. The following code snippet tells how the calculation was done.&lt;/p&gt;&lt;pre class=&quot;graf graf--pre&quot; name=&quot;9f7f&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;def calculate_quantile (i, df2):&lt;br /&gt;    Q1 = df2[[i]].quantile(0.25)[0]&lt;br /&gt;    Q3 = df2[[i]].quantile(0.75)[0]&lt;br /&gt;    IQR = Q3 - Q1&lt;br /&gt;    min = df2[[i]].min()[0]&lt;br /&gt;    max = df2[[i]].max()[0]&lt;br /&gt;    min_IQR = Q1 - 1.5*IQR&lt;br /&gt;    max_IQR = Q3 + 1.5*IQR&lt;br /&gt;    &lt;br /&gt;    return Q1, Q3, min, max, min_IQR, max_IQR&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre class=&quot;graf graf--pre&quot; name=&quot;7edf&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;# delete first and last rows to avoid missing value extrapolation&lt;br /&gt;df2.drop(index=[df2.index[0], df2.index[df2.shape[0]-1]], inplace=True)&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre class=&quot;graf graf--pre&quot; name=&quot;20cf&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;# find and interpolate the outliers&lt;br /&gt;for i in df2.columns:&lt;br /&gt;    print(&#39;\nAttribute-&#39;,i,&#39;:&#39;)&lt;br /&gt;    Q1, Q3, min, max, min_IQR, max_IQR = calculate_quantile(i, df2)&lt;br /&gt;    print(&#39;Q1 = %.2f&#39; % Q1)&lt;br /&gt;    print(&#39;Q3 = %.2f&#39; % Q3)&lt;br /&gt;    print(&#39;min IQR = %.2f&#39; % min_IQR)&lt;br /&gt;    print(&#39;max IQR = %.2f&#39; % max_IQR)&lt;br /&gt;    if (min &amp;lt; min_IQR):&lt;br /&gt;        print(&#39;Low outlier = %.2f&#39; % min)&lt;br /&gt;    if (max &amp;gt; max_IQR):&lt;br /&gt;        print(&#39;High outlier= %.2f&#39; % max)&lt;br /&gt;    &lt;br /&gt;    def convert_nan (x, max_IQR=max_IQR, min_IQR=min_IQR):&lt;br /&gt;        if ((x &amp;gt; max_IQR) | (x &amp;lt; min_IQR)):&lt;br /&gt;            x = np.nan&lt;br /&gt;        else:&lt;br /&gt;            x = x&lt;br /&gt;        return x&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre class=&quot;graf graf--pre&quot; name=&quot;0ef4&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;def convert_nan_HUM (x, max_IQR=100.0, min_IQR=min_IQR):&lt;br /&gt;        if ((x &amp;gt; max_IQR) | (x &amp;lt; min_IQR)):&lt;br /&gt;            x = np.nan&lt;br /&gt;        else:&lt;br /&gt;            x = x&lt;br /&gt;        return x&lt;br /&gt;    &lt;br /&gt;    if (i == &#39;HUM&#39;):&lt;br /&gt;        df2[i] = df2[i].map(convert_nan_HUM)&lt;br /&gt;        df2[i] = df2[i].interpolate(method=&#39;linear&#39;)&lt;br /&gt;    if (i != &#39;HUM&#39;):&lt;br /&gt;        df2[i] = df2[i].map(convert_nan)&lt;br /&gt;        df2[i] = df2[i].interpolate(method=&#39;linear&#39;)&lt;br /&gt;    &lt;br /&gt;    if (len(df2[df2[i].isnull()][i]) == 0):&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;e5ff&quot;&gt;After the calculation then move to the next part which most important part of here the prediction part. So for this step, the data will split into some stages. Here we split the data 75% for training and 25% for testing.&lt;/p&gt;&lt;pre class=&quot;graf graf--pre&quot; name=&quot;e7e0&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;train_size = int(len(dataset) * 0.75)&lt;br /&gt;test_size = len(dataset) - train_size&lt;br /&gt;train, test = dataset[0:train_size,:], dataset[train_size:len(dataset),:]&lt;br /&gt;print(len(train), len(test))&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;06c6&quot;&gt;After doing that, Now the LSTM neural network will create. Following is how the LSTM neural network was made.&lt;/p&gt;&lt;pre class=&quot;graf graf--pre&quot; name=&quot;0249&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;model = Sequential()&lt;br /&gt;model.add(LSTM(4, input_shape=(1, look_back)))&lt;br /&gt;model.add(Dense(1))&lt;br /&gt;model.compile(loss=&#39;mean_squared_error&#39;, optimizer=&#39;adam&#39;)&lt;br /&gt;model.fit(trainX, trainY, epochs=1500, batch_size=32, verbose=2)&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;56b8&quot;&gt;After creating a neural network all the prediction work is done. Now the results will tell how good was the prediction. Here is some example that I have done to analyze the temperature.&lt;/p&gt;&lt;pre class=&quot;graf graf--pre&quot; name=&quot;b0d5&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;# shift train predictions for plotting&lt;br /&gt;trainPredictPlot = np.empty_like(dataset)&lt;br /&gt;trainPredictPlot[:, :] = np.nan&lt;br /&gt;trainPredictPlot[look_back:len(trainPredict)+look_back, :] = trainPredict&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;graf graf--pre&quot; name=&quot;8525&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;# shift test predictions for plotting&lt;br /&gt;testPredictPlot = np.empty_like(dataset)&lt;br /&gt;testPredictPlot[:, :] = np.nan&lt;br /&gt;testPredictPlot[len(trainPredict)+(look_back*2)+1:len(dataset)-1, :] = testPredict&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;graf graf--pre&quot; name=&quot;b535&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;# plot original dataset and predictions&lt;br /&gt;time_axis = np.linspace(0, dataset.shape[0]-1, 15)&lt;br /&gt;time_axis = np.array([int(i) for i in time_axis])&lt;br /&gt;time_axisLab = np.array(df2.index, dtype=&#39;datetime64[D]&#39;)&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;graf graf--pre&quot; name=&quot;8819&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;fig = plt.figure()&lt;br /&gt;ax = fig.add_axes([0, 0, 2.1, 2])&lt;br /&gt;ax.plot(np.expm1(dataset), label=&#39;Original Dataset&#39;)&lt;br /&gt;ax.plot(trainPredictPlot, color=&#39;orange&#39;, label=&#39;Train Prediction&#39;)&lt;br /&gt;ax.plot(testPredictPlot, color=&#39;red&#39;, label=&#39;Test Prediction&#39;)&lt;br /&gt;ax.set_xticks(time_axis)&lt;br /&gt;ax.set_xticklabels(time_axisLab[time_axis], rotation=45)&lt;br /&gt;ax.set_xlabel(&#39;\nDate&#39;, fontsize=27, fontweight=&#39;bold&#39;)&lt;br /&gt;ax.set_ylabel(&#39;TEMP&#39;, fontsize=27, fontweight=&#39;bold&#39;)&lt;br /&gt;ax.legend(loc=&#39;best&#39;, prop= {&#39;size&#39;:20})&lt;br /&gt;ax.tick_params(size=10, labelsize=15)&lt;br /&gt;ax.set_xlim([-1,1735])&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;graf graf--pre&quot; name=&quot;1dcc&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;ax1 = fig.add_axes([2.3, 1.3, 1, 0.7])&lt;br /&gt;ax1.plot(np.expm1(dataset), label=&#39;Original Dataset&#39;)&lt;br /&gt;ax1.plot(testPredictPlot, color=&#39;red&#39;, label=&#39;Test Prediction&#39;)&lt;br /&gt;ax1.set_xticks(time_axis)&lt;br /&gt;ax1.set_xticklabels(time_axisLab[time_axis], rotation=45)&lt;br /&gt;ax1.set_xlabel(&#39;Date&#39;, fontsize=27, fontweight=&#39;bold&#39;)&lt;br /&gt;ax1.set_ylabel(&#39;TEMP&#39;, fontsize=27, fontweight=&#39;bold&#39;)&lt;br /&gt;ax1.tick_params(size=10, labelsize=15)&lt;br /&gt;ax1.set_xlim([1360,1735])&lt;/b&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;ba48&quot;&gt;Here is the output of it&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;section-inner sectionLayout--outsetColumn&quot;&gt;&lt;figure class=&quot;graf graf--figure graf--layoutOutsetCenter&quot; name=&quot;4b89&quot;&gt;&lt;img alt=&quot;Output of the temperature prediction&quot; class=&quot;graf-image&quot; data-height=&quot;598&quot; data-image-id=&quot;1*hlUiSFu0IBObdoLvwpLmMg.png&quot; data-width=&quot;1254&quot; src=&quot;https://cdn-images-1.medium.com/max/1200/1*hlUiSFu0IBObdoLvwpLmMg.png&quot; /&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;The output of the temperature Prediction&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div class=&quot;section-inner sectionLayout--insetColumn&quot;&gt;&lt;h4 class=&quot;graf graf--h4&quot; name=&quot;79e7&quot;&gt;Conclusion&lt;/h4&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;0a95&quot;&gt;From these code snippets, we can train the data and get an approximately 95% accurate model from the neural network using LSTM. In my last story, I was trying to predict the weather using Linear regression. From that, I got 93% accuracy. So, I&#39;m still working get as more accuracy as possible for implement the successful neural network for the Air Quality prediction&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;</content><link rel='replies' type='application/atom+xml' href='https://techedic.blogspot.com/feeds/5885547649020785264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://techedic.blogspot.com/2020/12/deep-learning-for-air-quality-prediction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/5885547649020785264'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/5885547649020785264'/><link rel='alternate' type='text/html' href='https://techedic.blogspot.com/2020/12/deep-learning-for-air-quality-prediction.html' title='Deep Learning for Air Quality Prediction'/><author><name>Tech Edic</name><uri>http://www.blogger.com/profile/11134449933406915845</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-3829362838309310679.post-1694741526797442844</id><published>2020-12-12T11:25:00.005-08:00</published><updated>2020-12-13T13:31:43.702-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jenkins"/><title type='text'>Jenkins Tutorials For Beginners — Part 03</title><content type='html'>&lt;p&gt;&lt;span style=&quot;background-color: white; font-family: Arial, Verdana, Tahoma; font-size: 16px; text-align: justify;&quot;&gt;Jenkins is a powerful application that allows continuous integration and continuous delivery of projects, regardless of the platform you are working on. It is a free source that can handle any kind of build or continuous integration. You can integrate Jenkins with a number of testing and deployment technologies. In this tutorial, we would explain how you can use Jenkins to build and test your software projects continuously.&lt;/span&gt;&lt;/p&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;fb81&quot;&gt;Install Git&amp;nbsp;Plugin&lt;/h3&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;8aec&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;291&quot; data-image-id=&quot;1*vLpBTlbcZz12m0fVOWbxRQ.jpeg&quot; data-is-featured=&quot;true&quot; data-width=&quot;442&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*vLpBTlbcZz12m0fVOWbxRQ.jpeg&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;36f5&quot;&gt;Jenkins has outstanding plugin support. There are thousands of third-party application plugins available on their website. To know if Jenkins supports the third-party applications you have in mind, check their plugins directory at this &lt;a class=&quot;markup--anchor markup--p-anchor&quot; data-href=&quot;https://wiki.jenkins-ci.org/display/JENKINS/Plugins.&quot; href=&quot;https://wiki.jenkins-ci.org/display/JENKINS/Plugins.&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;.&lt;/p&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;ac44&quot;&gt;Installation of Plugins in&amp;nbsp;Jenkins&lt;/h3&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;e0e0&quot;&gt;Jenkins comes with a pretty basic setup, so you will need to install the required plugins to enable respective third-party application support.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;cbf8&quot;&gt;GitHub is a web-based repository of code that plays a major role in DevOps. It provides a common platform for multiple developers working on the same code/project to upload and retrieve updated code, thereby facilitating continuous integration.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;e115&quot;&gt;Jenkins needs to have a GitHub plugin installed to be able to pull code from the GitHub repository.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;d545&quot;&gt;You need not install a GitHub plugin if you have already installed the Git plugin in response to the prompt during the Jenkins installation setup. But if not, here is how you install GitHub plugins in Jenkins and pull code from a GitHub repository.&lt;/p&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;6f61&quot;&gt;Install GIT&amp;nbsp;Plugin&lt;/h3&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;fed6&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 1: &lt;/strong&gt;Click on the &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Manage Jenkins&lt;/strong&gt; button on your Jenkins dashboard:&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;4acf&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;351&quot; data-image-id=&quot;0*aQUfYdBluDZJ5JQy.png&quot; data-width=&quot;725&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*aQUfYdBluDZJ5JQy.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;fced&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 2: &lt;/strong&gt;Click on &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Manage Plugins&lt;/strong&gt;:&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;9d38&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;563&quot; data-image-id=&quot;0*ePAdPLv3zBrpgYnY.png&quot; data-width=&quot;624&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*ePAdPLv3zBrpgYnY.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;470c&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 3: &lt;/strong&gt;In the Plugins Page&lt;/p&gt;&lt;ol class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;4405&quot;&gt;Select the GIT Plugin&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;6807&quot;&gt;Click on &lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Install without restart. &lt;/strong&gt;The plugin will take a few moments to finish downloading depending on your internet connection, and will be installed automatically.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;4d26&quot;&gt;You can also select the option &lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Download now and install after the restart &lt;/strong&gt;button. In which plugin is installed after the restart&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;45b6&quot;&gt;You will be shown a “No updates available” message if you already have the Git plugin installed.&lt;/li&gt;&lt;/ol&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;e179&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;538&quot; data-image-id=&quot;0*fts42QkAMyh4yXne.png&quot; data-width=&quot;1222&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*fts42QkAMyh4yXne.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;aade&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 4:&lt;/strong&gt; Once the plugins have been installed, go to &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Manage Jenkins &lt;/strong&gt;on your Jenkins dashboard. You will see your plugins listed among the rest.&lt;/p&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;98f1&quot;&gt;Integrating Jenkins with&amp;nbsp;GitHub&lt;/h3&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;98ed&quot;&gt;We shall now discuss the process of integrating GitHub into Jenkins in a Windows system.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;a571&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 1) &lt;/strong&gt;Create a new job in Jenkins, open the Jenkins dashboard with your Jenkins URL. For example, &lt;a class=&quot;markup--anchor markup--p-anchor&quot; data-href=&quot;http://localhost:8080/&quot; href=&quot;http://localhost:8080/&quot; target=&quot;_blank&quot;&gt;http://localhost:8000/&lt;/a&gt; (this depend on the local port that you enter in the setup)&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;27ab&quot;&gt;Click on &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;create new jobs&lt;/strong&gt;:&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;0112&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;134&quot; data-image-id=&quot;0*OcsA-cvz1XfIfY32.png&quot; data-width=&quot;432&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*OcsA-cvz1XfIfY32.png&quot; /&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;Create new&amp;nbsp;job&lt;/figcaption&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;b3d2&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 2) &lt;/strong&gt;Enter the item name, select job type, and click &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;OK&lt;/strong&gt;. We shall create a Freestyle project as an example.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure graf--layoutOutsetCenter&quot; name=&quot;fd27&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;807&quot; data-image-id=&quot;1*xjdhd6BT4pctWpecUorgwQ.png&quot; data-width=&quot;1394&quot; src=&quot;https://cdn-images-1.medium.com/max/1200/1*xjdhd6BT4pctWpecUorgwQ.png&quot; /&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;Creating an&amp;nbsp;item.&lt;/figcaption&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;0cfb&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;tep 3) &lt;/strong&gt;Once you click &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;OK, &lt;/strong&gt;the page will be redirected to its project form. Here you will need to enter the project information:&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;51ad&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;474&quot; data-image-id=&quot;0*YuL65eNvSzqTREdg.png&quot; data-width=&quot;1124&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*YuL65eNvSzqTREdg.png&quot; /&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;Jenkin setup&lt;/figcaption&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;8eba&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 4) &lt;/strong&gt;You will see a &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Git &lt;/strong&gt;option under &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Source Code Management &lt;/strong&gt;if your Git plugin has been installed in Jenkins:&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;b421&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;168&quot; data-image-id=&quot;0*v31yxpRTd0kp7Gvd.png&quot; data-width=&quot;327&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*v31yxpRTd0kp7Gvd.png&quot; /&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;Source type selection&lt;/figcaption&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;335e&quot;&gt;NOTE: If the &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Git &lt;/strong&gt;option does not appear, try re-installing the plugins, followed by a restart and a re-login into your Jenkins dashboard.&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt; &lt;/strong&gt;You will now be able to see the &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Git &lt;/strong&gt;option as mentioned above.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;4b21&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 5) &lt;/strong&gt;Enter the Git repository URL to pull the code from GitHub.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;8480&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;405&quot; data-image-id=&quot;0*i-qp-MZpKERoT8-w.png&quot; data-width=&quot;928&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*i-qp-MZpKERoT8-w.png&quot; /&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;Jenkins Git&lt;/figcaption&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;7125&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 6) &lt;/strong&gt;You might get an error message the first time you enter the repository URL.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;f219&quot;&gt;This happens if you do not have Git&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt; &lt;/strong&gt;installed on your local machine. To install Git on your local machine, go to this &lt;a class=&quot;markup--anchor markup--p-anchor&quot; data-href=&quot;https://git-scm.com/downloads&quot; href=&quot;https://git-scm.com/downloads&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;9172&quot;&gt;Download the appropriate Git file for your Operating System, in this case, Windows, and install it onto your local machine running Jenkins. Complete the on-screen instructions to install GIT.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;435c&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;470&quot; data-image-id=&quot;1*LKTTyD8aMiu1b7S920cHpA.png&quot; data-width=&quot;576&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*LKTTyD8aMiu1b7S920cHpA.png&quot; /&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;Git Install Interface&lt;/figcaption&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;88b5&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 7) &lt;/strong&gt;You can execute Git repositories in your Jenkins once Git has been installed on your machine. To check if&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt; &lt;/strong&gt;it&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt; &lt;/strong&gt;has been successfully installed onto your system, open your &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;command prompt,&lt;/strong&gt; type “Git”&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt; &lt;/strong&gt;and press enter. You should see different options come up for Git:&lt;/p&gt;&lt;figure class=&quot;graf graf--figure graf--layoutOutsetCenter&quot; name=&quot;7428&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;901&quot; data-image-id=&quot;1*-GoGs8jtmQE3q2bnwvX5_Q.png&quot; data-width=&quot;1203&quot; src=&quot;https://cdn-images-1.medium.com/max/1200/1*-GoGs8jtmQE3q2bnwvX5_Q.png&quot; /&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;git in Command&amp;nbsp;prompt&lt;/figcaption&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;774d&quot;&gt;This means that Git has been installed in your system.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;3969&quot;&gt;Note: If you have GIT already installed in your system, just add the git.exe path in Global Tool Configuration.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;9943&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 8) &lt;/strong&gt;Once you have everything in place, try adding the Git URL into Jenkins. You will not see any error messages:&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;e536&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;313&quot; data-image-id=&quot;0*zUEH5h_T9rSdtx3o.png&quot; data-width=&quot;932&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*zUEH5h_T9rSdtx3o.png&quot; /&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;After git&amp;nbsp;install&lt;/figcaption&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;e1c6&quot;&gt;Git is now properly configured on your system.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;3295&quot;&gt;So now we did up to the git install. In the next part, we will discuss &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;how to Create Users &amp;amp; Manage Permissions&lt;/strong&gt;.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://techedic.blogspot.com/feeds/1694741526797442844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://techedic.blogspot.com/2020/12/jenkins-for-beginnerspart-03.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/1694741526797442844'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/1694741526797442844'/><link rel='alternate' type='text/html' href='https://techedic.blogspot.com/2020/12/jenkins-for-beginnerspart-03.html' title='Jenkins Tutorials For Beginners — Part 03'/><author><name>Tech Edic</name><uri>http://www.blogger.com/profile/11134449933406915845</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-3829362838309310679.post-7906772296094593926</id><published>2020-12-12T11:24:00.004-08:00</published><updated>2020-12-13T13:31:28.658-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jenkins"/><title type='text'>Jenkins Tutorials  For Beginners — Part 02</title><content type='html'>&lt;p&gt;&lt;span style=&quot;background-color: white; font-family: Arial, Verdana, Tahoma; font-size: 16px; text-align: justify;&quot;&gt;Jenkins is a powerful application that allows continuous integration and continuous delivery of projects, regardless of the platform you are working on. It is a free source that can handle any kind of build or continuous integration. You can integrate Jenkins with a number of testing and deployment technologies. In this tutorial, we would explain how you can use Jenkins to build and test your software projects continuously.&lt;/span&gt;&lt;/p&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;e17b&quot;&gt;How to Download &amp;amp; Install Jenkins on&amp;nbsp;Windows&lt;/h3&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;35d8&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;291&quot; data-image-id=&quot;1*vLpBTlbcZz12m0fVOWbxRQ.jpeg&quot; data-is-featured=&quot;true&quot; data-width=&quot;442&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*vLpBTlbcZz12m0fVOWbxRQ.jpeg&quot; /&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;Jenkins&lt;/figcaption&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;37a9&quot;&gt;Jenkins may be installed on either Windows or Unix platforms, but we will focus on Windows installation only.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;c65b&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Prerequisites:&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;9288&quot;&gt;Before you proceed to install Jenkins in your windows system, there are some prerequisites for Jenkins to install Jenkins on your computer.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;407e&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Hardware requirements:&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;fe5e&quot;&gt;You need a minimum of 256 MB of RAM on your computer or laptop to install Jenkins&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;cdfe&quot;&gt;You need at least 1 GB of space in your hard drive for Jenkins.&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;0e77&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Software Requirements:&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;fa15&quot;&gt;Since Jenkins runs on Java, you need either the latest version of Java Development Kit (JDK) or Java Runtime Environment (JRE).&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;cfb0&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Release Types&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;d104&quot;&gt;Jenkins releases two types of versions based on the organization&#39;s needs.&lt;/p&gt;&lt;ul class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;0f17&quot;&gt;Long-term support release&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;19c0&quot;&gt;Weekly release&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;0cce&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Long term support release (LTS)&amp;nbsp;:&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;fd7c&quot;&gt;Long-term support releases are available every 12 weeks. They are stable and are widely tested. This release is intended for end-users.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;ca97&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Weekly release:&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;5283&quot;&gt;Weekly releases are made available every week by fixing bugs in their earlier version. These releases are intended for plugin developers.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;6c85&quot;&gt;We will use the LTS release though the process remains the same for the Weekly release.&lt;/p&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;f2c0&quot;&gt;How to Download&amp;nbsp;Jenkins?&lt;/h3&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;cfb7&quot;&gt;Following steps should be followed so that to install Jenkins successfully:&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;4e5c&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 1)&lt;/strong&gt; Got to &lt;a class=&quot;markup--anchor markup--p-anchor&quot; data-href=&quot;https://www.jenkins.io/download/&quot; href=&quot;https://www.jenkins.io/download/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;https://jenkins.io/download/&lt;/a&gt; and select the platform. In our case Windows&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;0c99&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;719&quot; data-image-id=&quot;1*v5aqFz8cGgP81G2AcSCOUA.png&quot; data-width=&quot;727&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*v5aqFz8cGgP81G2AcSCOUA.png&quot; /&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;Downloading window&lt;/figcaption&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;94ca&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 2)&lt;/strong&gt; Go to the download location from the local computer and unzip the downloaded package. Double-click on unzipped &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;jenkins.msi&lt;/strong&gt;. You can also Jenkin using a WAR (Web application ARchive) but that is not recommended.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;cd6d&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;108&quot; data-image-id=&quot;0*AOZyC10dk1IZx8_f.png&quot; data-width=&quot;275&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*AOZyC10dk1IZx8_f.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;f84c&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 3)&lt;/strong&gt; In the Jenkin Setup screen, click Next.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;5450&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;387&quot; data-image-id=&quot;0*xvivc8YqWyMhFU5P.png&quot; data-width=&quot;495&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*xvivc8YqWyMhFU5P.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;30f5&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 4)&lt;/strong&gt; Choose the location where you want to have the Jenkins instance installed (default location is C:\Program Files (x86)\Jenkins), then click on &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Next&lt;/strong&gt; button.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;04e7&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;387&quot; data-image-id=&quot;0*MQ61IC4y88yEjk5e.png&quot; data-width=&quot;495&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*MQ61IC4y88yEjk5e.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;b32c&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 5)&lt;/strong&gt;Click on the Install button. (In 2.249.2 they &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;ask for the port number &lt;/strong&gt;you can check whether that the port is already there by clicking the test button use)&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;2ef4&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;387&quot; data-image-id=&quot;0*2fGZ1YQnAawKnYzm.png&quot; data-width=&quot;495&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*2fGZ1YQnAawKnYzm.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;cdbd&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 6)&lt;/strong&gt; Once install is complete, click Finish.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;9338&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;387&quot; data-image-id=&quot;0*qLqSGjIWjQE9DIbR.png&quot; data-width=&quot;495&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*qLqSGjIWjQE9DIbR.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;ea3c&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 7)&lt;/strong&gt; During the installation process an info panel may pop-up to inform the user that for a complete setup, the system should be rebooted at the end of the current installation. Click on the OK button when the Info panel is popping-up:&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;cefa&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;169&quot; data-image-id=&quot;0*PsZnWMeYlKq5-2eY.png&quot; data-width=&quot;364&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*PsZnWMeYlKq5-2eY.png&quot; /&gt;&lt;/figure&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;0c15&quot;&gt;How to Unblock&amp;nbsp;Jenkins?&lt;/h3&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;55a0&quot;&gt;After completing the Jenkins installation phase, you should proceed further and start its configuration. The next steps will guide you on how you can unblock the Jenkins application:&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;e771&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 1)&lt;/strong&gt; After completing the Jenkins installation process, a browser tab will pop-up asking for the initial Administrator password. To access Jenkins, you need to go to browse the following path in your web browser.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;2e6a&quot;&gt;&lt;a class=&quot;markup--anchor markup--p-anchor&quot; data-href=&quot;http://localhost:8080&quot; href=&quot;http://localhost:8080&quot; target=&quot;_blank&quot;&gt;http://localhost:8080&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;f62e&quot;&gt;If you can access the above URL, then it confirms that Jenkins is successfully installed in your system.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;4b4e&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;742&quot; data-image-id=&quot;0*FQmidzoAsX2zEYsK.png&quot; data-width=&quot;1010&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*FQmidzoAsX2zEYsK.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;8f0a&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 2)&lt;/strong&gt; The initial Administrator password should be found under the Jenkins installation path (set at Step 4 in Jenkins Installation).&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;24f3&quot;&gt;For default installation location to C:\Program Files (x86)\Jenkins, a file called &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;initialAdminPassword&lt;/strong&gt; can be found under C:\Program Files (x86)\Jenkins\secrets.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;c0d4&quot;&gt;However, If a custom path for Jenkins installation was selected, then you should check that location for &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;initialAdminPassword&lt;/strong&gt; file.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;84a1&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;403&quot; data-image-id=&quot;0*MNagpa7DolP9lvZl.png&quot; data-width=&quot;765&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*MNagpa7DolP9lvZl.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;6a93&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 3)&lt;/strong&gt; Open the highlighted file and copy the content of the &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;initialAdminPassword &lt;/strong&gt;file.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;66d9&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;105&quot; data-image-id=&quot;0*eQ3sEYb_pQmVRve3.png&quot; data-width=&quot;629&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*eQ3sEYb_pQmVRve3.png&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;6ad9&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 4)&lt;/strong&gt; Paste the password into the browser’s pop-up tab (&lt;a class=&quot;markup--anchor markup--p-anchor&quot; data-href=&quot;http://localhost:8080/login?form=%2F&quot; href=&quot;http://localhost:8080/login?form=%2F&quot; target=&quot;_blank&quot;&gt;http://localhost:8080/login?form=%2F&lt;/a&gt;) and click on the Continue button.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;c0aa&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;779&quot; data-image-id=&quot;0*G6WRMEWOFcLFZGPu.jpg&quot; data-width=&quot;1167&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*G6WRMEWOFcLFZGPu.jpg&quot; /&gt;&lt;/figure&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;eb9c&quot;&gt;Customize Jenkins&lt;/h3&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;16a4&quot;&gt;You can also customize your Jenkins environment by the below-given steps:&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;c730&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 1)&lt;/strong&gt; Click on the “Install suggested plugins button” so Jenkins will retrieve and install the essential plugins&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;7ca4&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;779&quot; data-image-id=&quot;0*Mv03mBQmYenAc5PL.jpg&quot; data-width=&quot;1167&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*Mv03mBQmYenAc5PL.jpg&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;c719&quot;&gt;Jenkins will start to download and install all the necessary plugins needed to create new Jenkins Jobs.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;48d4&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;824&quot; data-image-id=&quot;0*jghuPkkPOCFOOOwL.jpg&quot; data-width=&quot;1249&quot; src=&quot;https://cdn-images-1.medium.com/max/800/0*jghuPkkPOCFOOOwL.jpg&quot; /&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;1bcd&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 2)&lt;/strong&gt; After all the suggested plugins were installed, the “Create First Admin User” panel will show up. Fill all the fields with desired account details and hit the “&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Save and Finish&lt;/strong&gt;” button.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;230e&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Step 3) &lt;/strong&gt;Once you have filled the data, finally it will ask for URL information where you can configure the default instance path for Jenkins. Leave it as it is to avoid any confusion later. However, if another application is already using the 8080 port, you can use another port for Jenkins and finally save the settings, and you are done with the installation of Jenkins. Hit the “&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Save and Continue&lt;/strong&gt;” button:&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;bada&quot;&gt;Below you can find the Jenkins instance up and run, ready to create the first Jenkins jobs:&lt;/p&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;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;868&quot; data-image-id=&quot;1*DcH6HjrlTDKQHsYSPtIY_A.png&quot; data-width=&quot;1920&quot; src=&quot;https://cdn-images-1.medium.com/max/1200/1*DcH6HjrlTDKQHsYSPtIY_A.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;the dashboard of&amp;nbsp;Jenkins&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;figure class=&quot;graf graf--figure graf--layoutOutsetCenter&quot; name=&quot;3964&quot;&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;So these are the steps that you need to do the installation for Jenkins. So in the next part, we discuss how to&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt; install the git plugin&lt;/strong&gt; to Jenkins.&lt;/figcaption&gt;&lt;/figure&gt;</content><link rel='replies' type='application/atom+xml' href='https://techedic.blogspot.com/feeds/7906772296094593926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://techedic.blogspot.com/2020/12/jenkins-for-beginnerspart-02.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/7906772296094593926'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/7906772296094593926'/><link rel='alternate' type='text/html' href='https://techedic.blogspot.com/2020/12/jenkins-for-beginnerspart-02.html' title='Jenkins Tutorials  For Beginners — Part 02'/><author><name>Tech Edic</name><uri>http://www.blogger.com/profile/11134449933406915845</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-3829362838309310679.post-5689966148541362004</id><published>2020-12-12T11:21:00.002-08:00</published><updated>2020-12-13T13:30:49.401-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jenkins"/><title type='text'>Jenkins Tutorials For Beginners — Part 01</title><content type='html'>&lt;p&gt;&lt;span style=&quot;background-color: white; font-family: Arial, Verdana, Tahoma; font-size: 16px; text-align: justify;&quot;&gt;Jenkins is a powerful application that allows continuous integration and continuous delivery of projects, regardless of the platform you are working on. It is a free source that can handle any kind of build or continuous integration. You can integrate Jenkins with a number of testing and deployment technologies. In this tutorial, we would explain how you can use Jenkins to build and test your software projects continuously.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;0920&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;What is Jenkins?&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;5150&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;349&quot; data-image-id=&quot;1*PjAhAoQDShtW8CcLxh2weg.jpeg&quot; data-is-featured=&quot;true&quot; data-width=&quot;530&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*PjAhAoQDShtW8CcLxh2weg.jpeg&quot; /&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;Jenkins&lt;/figcaption&gt;&lt;/figure&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;ca20&quot;&gt;&lt;a class=&quot;markup--anchor markup--p-anchor&quot; data-href=&quot;https://www.jenkins.io/&quot; href=&quot;https://www.jenkins.io/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;Jenkins&lt;/strong&gt; &lt;/a&gt;is an open-source Continuous Integration server capable of orchestrating a chain of actions that help to achieve the Continuous Integration process (and not only) in an automated fashion.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;329d&quot;&gt;Jenkins is free and is entirely written in Java. Jenkins is a widely used application around the world that has around 300k installations and growing day by day.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;6033&quot;&gt;It is a server-based application and requires a web server like Apache Tomcat. The reason Jenkins became so popular is that of its monitoring of repeated tasks that arise during the development of a project. For example, if your team is developing a project, Jenkins will continuously test your project builds and show you the errors in the early stages of your development.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;a97a&quot;&gt;By using Jenkins, software companies can accelerate their software development process, as Jenkins can automate build and test at a rapid rate. Jenkins supports the complete development lifecycle of software from building, testing, documenting the software, deploying, and other stages of a software development lifecycle.&lt;/p&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;b7b2&quot;&gt;What is Continuous Integration?&lt;/h3&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;e9d3&quot;&gt;In Continuous Integration after a code commit, the software is built and tested immediately. In a large project with many developers, commits are made many times during a day. With each commit code is built and tested. If the test is passed, the build is tested for deployment. If the deployment is a success, the code is pushed to production. This commit, build, test, and deploy is a continuous process and hence the name continuous integration/deployment.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;5b1d&quot;&gt;A Continuous Integration Pipeline is a powerful instrument that consists of a set of tools designed to &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;host&lt;/strong&gt;, &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;monitor&lt;/strong&gt;, &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;compile&lt;/strong&gt; and &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;test&lt;/strong&gt; code, or code changes, like:&lt;/p&gt;&lt;ul class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;814f&quot;&gt;&lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Continuous Integration Server&lt;/strong&gt; (Jenkins, Bamboo, CruiseControl, TeamCity, and others)&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;ad53&quot;&gt;&lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Source Control Tool&lt;/strong&gt; (e.g., CVS, SVN, GIT, Mercurial, Perforce, ClearCase and others)&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;a6b8&quot;&gt;&lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Build tool&lt;/strong&gt; (Make, Ant, Maven, Ivy, Gradle, and others)&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;67f3&quot;&gt;&lt;strong class=&quot;markup--strong markup--li-strong&quot;&gt;Automation testing framework&lt;/strong&gt; (Selenium, Appium, TestComplete, UFT, and others)&lt;/li&gt;&lt;/ul&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;31b3&quot;&gt;Jenkin History&lt;/h3&gt;&lt;ul class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;51cb&quot;&gt;Kohsuke Kawaguchi, a Java developer, working at SUN Microsystems, was tired of building the code and fixing errors repetitively. In 2004, created an automation server called Hudson that automates build and test tasks.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;876d&quot;&gt;In 2011, Oracle who owned Sun Microsystems had a dispute with Hudson&#39;s open source community, so they forked Hudson and renamed it, Jenkins.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;eb27&quot;&gt;Both Hudson and Jenkins continued to operate independently. But in a short span of time, Jenkins acquired a lot of projects and contributors while Hudson remained with only 32 projects. With time, Jenkins became more popular, and Hudson is not maintained anymore.&lt;/li&gt;&lt;/ul&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;2b4a&quot;&gt;Real-world case study of Continuous Integration&lt;/h3&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;45d5&quot;&gt;I am sure all of you aware of the old phone Nokia. Nokia used to implement a procedure called nightly build. After multiple commits from diverse developers during the day, the software built every night. Since the software was built only once a day, it’s a huge pain to isolate, identify, and fix the errors in a large codebase.&lt;/p&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;99f0&quot;&gt;Later, they adopted the Continuous Integration approach. The software was built and tested as soon as a developer committed code. If any error is detected, the respective developer can quickly fix the defect.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure&quot; name=&quot;5e1c&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;1070&quot; data-image-id=&quot;1*FbzEJt1XV6LBd0_vkqqfAw.jpeg&quot; data-width=&quot;1371&quot; src=&quot;https://cdn-images-1.medium.com/max/800/1*FbzEJt1XV6LBd0_vkqqfAw.jpeg&quot; /&gt;&lt;/figure&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;3d26&quot;&gt;Jenkins Plugins&lt;/h3&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;0eb5&quot;&gt;By default, Jenkins comes with a limited set of features. If you want to integrate your Jenkins installation with version control tools like Git, then you need to install plugins related to Git. In fact, for integration with tools like Maven, Amazon EC2, you need to install respective plugins in your Jenkins.&lt;/p&gt;&lt;figure class=&quot;graf graf--figure graf--layoutOutsetCenter&quot; name=&quot;7020&quot;&gt;&lt;img class=&quot;graf-image&quot; data-height=&quot;895&quot; data-image-id=&quot;1*Qcz6XRkmTQGr-TA0hdYwdw.png&quot; data-width=&quot;1918&quot; src=&quot;https://cdn-images-1.medium.com/max/1200/1*Qcz6XRkmTQGr-TA0hdYwdw.png&quot; /&gt;&lt;figcaption class=&quot;imageCaption&quot;&gt;Jenkin Plugins integration&lt;/figcaption&gt;&lt;/figure&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;1da8&quot;&gt;Advantages of using&amp;nbsp;Jenkins&lt;/h3&gt;&lt;ul class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;7645&quot;&gt;Jenkins is being managed by the community which is very open. Every month, they hold public meetings and take inputs from the public for the development of the Jenkins project.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;c734&quot;&gt;So far around 280 tickets are closed, and the project publishes a stable release every three months.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;73b2&quot;&gt;As technology grows, so does Jenkins. So far Jenkins has around 320 plugins published in its plugins database. With plugins, Jenkins becomes even more powerful and feature-rich.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;52c4&quot;&gt;Jenkins also supports cloud-based architecture so that you can deploy Jenkins in cloud-based platforms.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;ea87&quot;&gt;The reason why Jenkins became popular is that it was created by a developer for developers.&lt;/li&gt;&lt;/ul&gt;&lt;h3 class=&quot;graf graf--h3&quot; name=&quot;4be1&quot;&gt;Disadvantages of using&amp;nbsp;Jenkins&lt;/h3&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;7161&quot;&gt;Though Jenkins is a very powerful tool, it has its flaws.&lt;/p&gt;&lt;ul class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;eb1c&quot;&gt;Its interface is outdated and not user friendly compared to current UI trends.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;9960&quot;&gt;Though Jenkins is loved by many developers, it’s not that easy to maintain it because Jenkins runs on a server and requires some skills as a server administrator to monitor its activity.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;8986&quot;&gt;One of the reasons why many people don’t implement Jenkins is due to its difficulty in installing and configuring Jenkins.&lt;/li&gt;&lt;li class=&quot;graf graf--li&quot; name=&quot;86f0&quot;&gt;Continuous integrations regularly break due to some small setting changes. Continuous integration will be paused and therefore requires some developer attention.&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;graf graf--p&quot; name=&quot;8aaa&quot;&gt;So In this part, we are talking about the brief of Jenkins. So In the next Part, we will discuss &lt;strong class=&quot;markup--strong markup--p-strong&quot;&gt;How to Download &amp;amp; Install Jenkins on Windows.&lt;/strong&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://techedic.blogspot.com/feeds/5689966148541362004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://techedic.blogspot.com/2020/12/jenkins-for-beginnerspart-01.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/5689966148541362004'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/3829362838309310679/posts/default/5689966148541362004'/><link rel='alternate' type='text/html' href='https://techedic.blogspot.com/2020/12/jenkins-for-beginnerspart-01.html' title='Jenkins Tutorials For Beginners — Part 01'/><author><name>Tech Edic</name><uri>http://www.blogger.com/profile/11134449933406915845</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>