<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Duende]]></title><description><![CDATA[Duende by Fiaz Luthfi is a developer, content creator and writer who breaks down complex concepts for all skill levels.]]></description><link>https://www.duende.id</link><image><url>https://www.duende.id/logos/logo-512.png</url><title>Duende</title><link>https://www.duende.id</link></image><generator>Tania Rascia</generator><lastBuildDate>Sat, 13 Sep 2025 05:02:30 GMT</lastBuildDate><atom:link href="https://www.duende.id/rss.xml" rel="self" type="application/rss+xml"/><item><title><![CDATA[About me]]></title><description><![CDATA[My name is Luthfi Azhari, at high scholl called me Fiaz take from middle name LuthFI AZhari. I’m a developer, designer, content creator. I currently work as a Project Manager/Head…]]></description><link>https://www.duende.id/me/</link><guid isPermaLink="false">https://www.duende.id/me/</guid><content:encoded>&lt;p&gt;My name is Luthfi Azhari, at high scholl called me Fiaz take from middle name Luth&lt;strong&gt;FI AZ&lt;/strong&gt;hari. I’m a developer, designer, content creator. I currently work as a Project Manager/Head IT Department for &lt;a href=&quot;http://www.mediawave.id/&quot;&gt;MediaWave&lt;/a&gt;. I also make video tutorial about programming for &lt;a href=&quot;https://www.youtube.com/devindo&quot;&gt;devindo&lt;/a&gt;&lt;/p&gt;
&lt;!-- A few highlights:

- The [Beginner’s Guide to React](/getting-started-with-react/), included in the official [React docs](https://reactjs.org/docs/getting-started.html#react-for-beginners)
- The [How to Code in JavaScript](https://www.digitalocean.com/community/tutorial_series/how-to-code-in-javascript)/[the DOM](https://www.digitalocean.com/community/tutorial_series/understanding-the-dom-document-object-model) tutorial series on DigitalOcean
- The definitive guide to [Developing a WordPress Theme](/developing-a-wordpress-theme-from-scratch/) from scratch --&gt;
&lt;p&gt;I started this website as a place to document everything I learned while transitioning from designer to developer. I’ve continued throughout my career and the free resources I create help thousands of people successfully become developers. Please consider &lt;a href=&quot;https://ko-fi.com/hifiaz&quot;&gt;supporting me with a coffee&lt;/a&gt;. (I might use it towards beer.)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/resume&quot;&gt;View resume&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;some-things-i-like&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#some-things-i-like&quot; aria-label=&quot;some things i like permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Some things I like&lt;/h3&gt;
&lt;p&gt;Making websites, make mobile app with flutter, create tutorial in youtube, watch movie, read fiction book, video games, ride motorcycle, gardening, coffe with milk, fried rice, dreaming.&lt;/p&gt;
&lt;h2 id=&quot;links&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#links&quot; aria-label=&quot;links permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Links&lt;/h2&gt;
&lt;p&gt;A non-exhaustive list.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.nafies.id&quot;&gt;Nafies Luthfi&lt;/a&gt; – Freelance web developer in banjarmasin&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://agung-setiawan.com&quot;&gt;Agung Setiawan&lt;/a&gt; – Software developer at BukaLapak&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.taniarascia.com&quot;&gt;Tania Rascia&lt;/a&gt; – Front end software engineer at DAIS&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://flaviocopes.com&quot;&gt;Flavio&lt;/a&gt; – a computer enginer&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://jonathanmh.com&quot;&gt;JonathanMH&lt;/a&gt; – Developer, Photographer, Blogger in Copenhagen&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://cogitas.net&quot;&gt;Natalie Masse Hooper&lt;/a&gt; – 9 years experience as a lead Android developer&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;music&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#music&quot; aria-label=&quot;music permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Music&lt;/h2&gt;
&lt;p&gt;Sometimes I need a music and i will play...&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.facebook.com/TIPEX.BAND/&quot;&gt;Tipe-x&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.supermanisdead.net&quot;&gt;Superman Is Dead&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCRggxhdYIz0zSvUgJmCWMGg&quot;&gt;Tulus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://twitter.com/lettoband&quot;&gt;Letto&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;timeline&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#timeline&quot; aria-label=&quot;timeline permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Timeline&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1993&lt;/strong&gt; – Born in Magetan, small town in East Java, Indonesia. I’m the youngest of three.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2006&lt;/strong&gt; – My father buys our first computer, and i play game cat vs dog in windows xp&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2008&lt;/strong&gt; – I found book about hacking and i destroy some website organization&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2009&lt;/strong&gt; – First time found facebook and love it&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2010&lt;/strong&gt; – I create group named with hacking friday in high school and now hacking friday become an official organization at school&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2011&lt;/strong&gt; – I write personal blog &lt;a href=&quot;https://fiazku.wordpress.com&quot;&gt;fiazku&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2012&lt;/strong&gt; – I go to colege at telkom university&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2013&lt;/strong&gt; – First paid for making a stop motion video at &lt;a href=&quot;http://bro.do/en/&quot;&gt;Brodo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2014&lt;/strong&gt; – Runner up #6secfilm at &lt;a href=&quot;https://tribecafilm.com/stories/6secfilms-runners-up-finalists-short-list-2014-vine&quot;&gt;tribeca&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Also 2014&lt;/strong&gt; – I get fist time job at &lt;a href=&quot;http://telkomuniversity.ac.id&quot;&gt;sisfo telkom university&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2015&lt;/strong&gt; – I graduated from college&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Also 2015&lt;/strong&gt; – I move work to ideaplus teknology kreatif &lt;a href=&quot;http://x-igent.com&quot;&gt;x-igent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Also 2015&lt;/strong&gt; – I continued studying at Binus University&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2016&lt;/strong&gt; – I am married with meliza&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Also 2016&lt;/strong&gt; – Move Work to &lt;a href=&quot;http://mediawave.id&quot;&gt;MediaWave&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2017&lt;/strong&gt; – At april promoted as co-head information technology at &lt;a href=&quot;http://mediawave.id&quot;&gt;MediaWave&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Also 2017&lt;/strong&gt; – At June promoted as Head Information Technology / Project Manager at &lt;a href=&quot;http://mediawave.id&quot;&gt;MediaWave&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2018&lt;/strong&gt; – I graduated from Binus University&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Also 2018&lt;/strong&gt; – At december I left my job at mediawave and start as freelance&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2019&lt;/strong&gt; – I continued my master degree at telkom university&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Also 2019&lt;/strong&gt; – Software Instrumentalist at devopjbs singapore &lt;a href=&quot;http://casualess.com&quot;&gt;casualess&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Also 2019&lt;/strong&gt; – CTO at sociotrax &lt;a href=&quot;https://sociotrax.com&quot;&gt;Sociotrax&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;currently-using&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#currently-using&quot; aria-label=&quot;currently using permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Currently Using&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Computer:&lt;/strong&gt; MacBook Pro 2016&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hosting:&lt;/strong&gt; &lt;a href=&quot;https://netlify.com&quot;&gt;Netlify&lt;/a&gt;, &lt;a href=&quot;http://domainesia.com&quot;&gt;Domanesia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Editor:&lt;/strong&gt; &lt;a href=&quot;https://code.visualstudio.com/&quot;&gt;Visual Studio Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><author>fiazhari@gmail.com.com</author></item><item><title><![CDATA[Terms and Conditions]]></title><description><![CDATA[Terms and Conditions Welcome to lthfi! These terms and conditions outline the rules and regulations for the use of lthfi's Website, located at lthfi.netlify.app. By accessing this…]]></description><link>https://www.duende.id/tnc/</link><guid isPermaLink="false">https://www.duende.id/tnc/</guid><content:encoded>&lt;p&gt;Terms and Conditions&lt;/p&gt;
&lt;p&gt;Welcome to lthfi!&lt;/p&gt;
&lt;p&gt;These terms and conditions outline the rules and regulations for the use of lthfi&apos;s Website, located at lthfi.netlify.app.&lt;/p&gt;
&lt;p&gt;By accessing this website we assume you accept these terms and conditions. Do not continue to use lthfi if you do not agree to take all of the terms and conditions stated on this page. Our Terms and Conditions were created with the help of the Terms And Conditions Generator and the Free Terms &amp;#x26; Conditions Generator.&lt;/p&gt;
&lt;p&gt;The following terminology applies to these Terms and Conditions, Privacy Statement and Disclaimer Notice and all Agreements: &quot;Client&quot;, &quot;You&quot; and &quot;Your&quot; refers to you, the person log on this website and compliant to the Company’s terms and conditions. &quot;The Company&quot;, &quot;Ourselves&quot;, &quot;We&quot;, &quot;Our&quot; and &quot;Us&quot;, refers to our Company. &quot;Party&quot;, &quot;Parties&quot;, or &quot;Us&quot;, refers to both the Client and ourselves. All terms refer to the offer, acceptance and consideration of payment necessary to undertake the process of our assistance to the Client in the most appropriate manner for the express purpose of meeting the Client’s needs in respect of provision of the Company’s stated services, in accordance with and subject to, prevailing law of Netherlands. Any use of the above terminology or other words in the singular, plural, capitalization and/or he/she or they, are taken as interchangeable and therefore as referring to same.&lt;/p&gt;
&lt;p&gt;Cookies&lt;/p&gt;
&lt;p&gt;We employ the use of cookies. By accessing lthfi, you agreed to use cookies in agreement with the lthfi&apos;s Privacy Policy.&lt;/p&gt;
&lt;p&gt;Most interactive websites use cookies to let us retrieve the user’s details for each visit. Cookies are used by our website to enable the functionality of certain areas to make it easier for people visiting our website. Some of our affiliate/advertising partners may also use cookies.&lt;/p&gt;
&lt;p&gt;License&lt;/p&gt;
&lt;p&gt;Unless otherwise stated, lthfi and/or its licensors own the intellectual property rights for all material on lthfi. All intellectual property rights are reserved. You may access this from lthfi for your own personal use subjected to restrictions set in these terms and conditions.&lt;/p&gt;
&lt;p&gt;You must not:&lt;/p&gt;
&lt;p&gt;Republish material from lthfi
Sell, rent or sub-license material from lthfi
Reproduce, duplicate or copy material from lthfi
Redistribute content from lthfi
This Agreement shall begin on the date hereof.&lt;/p&gt;
&lt;p&gt;Parts of this website offer an opportunity for users to post and exchange opinions and information in certain areas of the website. lthfi does not filter, edit, publish or review Comments prior to their presence on the website. Comments do not reflect the views and opinions of lthfi,its agents and/or affiliates. Comments reflect the views and opinions of the person who post their views and opinions. To the extent permitted by applicable laws, lthfi shall not be liable for the Comments or for any liability, damages or expenses caused and/or suffered as a result of any use of and/or posting of and/or appearance of the Comments on this website.&lt;/p&gt;
&lt;p&gt;lthfi reserves the right to monitor all Comments and to remove any Comments which can be considered inappropriate, offensive or causes breach of these Terms and Conditions.&lt;/p&gt;
&lt;p&gt;You warrant and represent that:&lt;/p&gt;
&lt;p&gt;You are entitled to post the Comments on our website and have all necessary licenses and consents to do so;
The Comments do not invade any intellectual property right, including without limitation copyright, patent or trademark of any third party;
The Comments do not contain any defamatory, libelous, offensive, indecent or otherwise unlawful material which is an invasion of privacy
The Comments will not be used to solicit or promote business or custom or present commercial activities or unlawful activity.
You hereby grant lthfi a non-exclusive license to use, reproduce, edit and authorize others to use, reproduce and edit any of your Comments in any and all forms, formats or media.&lt;/p&gt;
&lt;p&gt;Hyperlinking to our Content&lt;/p&gt;
&lt;p&gt;The following organizations may link to our Website without prior written approval:&lt;/p&gt;
&lt;p&gt;Government agencies;
Search engines;
News organizations;
Online directory distributors may link to our Website in the same manner as they hyperlink to the Websites of other listed businesses; and
System wide Accredited Businesses except soliciting non-profit organizations, charity shopping malls, and charity fundraising groups which may not hyperlink to our Web site.
These organizations may link to our home page, to publications or to other Website information so long as the link: (a) is not in any way deceptive; (b) does not falsely imply sponsorship, endorsement or approval of the linking party and its products and/or services; and (c) fits within the context of the linking party’s site.&lt;/p&gt;
&lt;p&gt;We may consider and approve other link requests from the following types of organizations:&lt;/p&gt;
&lt;p&gt;commonly-known consumer and/or business information sources;
dot.com community sites;
associations or other groups representing charities;
online directory distributors;
internet portals;
accounting, law and consulting firms; and
educational institutions and trade associations.
We will approve link requests from these organizations if we decide that: (a) the link would not make us look unfavorably to ourselves or to our accredited businesses; (b) the organization does not have any negative records with us; (c) the benefit to us from the visibility of the hyperlink compensates the absence of lthfi; and (d) the link is in the context of general resource information.&lt;/p&gt;
&lt;p&gt;These organizations may link to our home page so long as the link: (a) is not in any way deceptive; (b) does not falsely imply sponsorship, endorsement or approval of the linking party and its products or services; and (c) fits within the context of the linking party’s site.&lt;/p&gt;
&lt;p&gt;If you are one of the organizations listed in paragraph 2 above and are interested in linking to our website, you must inform us by sending an e-mail to lthfi. Please include your name, your organization name, contact information as well as the URL of your site, a list of any URLs from which you intend to link to our Website, and a list of the URLs on our site to which you would like to link. Wait 2-3 weeks for a response.&lt;/p&gt;
&lt;p&gt;Approved organizations may hyperlink to our Website as follows:&lt;/p&gt;
&lt;p&gt;By use of our corporate name; or
By use of the uniform resource locator being linked to; or
By use of any other description of our Website being linked to that makes sense within the context and format of content on the linking party’s site.
No use of lthfi&apos;s logo or other artwork will be allowed for linking absent a trademark license agreement.&lt;/p&gt;
&lt;p&gt;iFrames&lt;/p&gt;
&lt;p&gt;Without prior approval and written permission, you may not create frames around our Webpages that alter in any way the visual presentation or appearance of our Website.&lt;/p&gt;
&lt;p&gt;Content Liability&lt;/p&gt;
&lt;p&gt;We shall not be hold responsible for any content that appears on your Website. You agree to protect and defend us against all claims that is rising on your Website. No link(s) should appear on any Website that may be interpreted as libelous, obscene or criminal, or which infringes, otherwise violates, or advocates the infringement or other violation of, any third party rights.&lt;/p&gt;
&lt;p&gt;Your Privacy&lt;/p&gt;
&lt;p&gt;Please read Privacy Policy&lt;/p&gt;
&lt;p&gt;Reservation of Rights&lt;/p&gt;
&lt;p&gt;We reserve the right to request that you remove all links or any particular link to our Website. You approve to immediately remove all links to our Website upon request. We also reserve the right to amen these terms and conditions and it’s linking policy at any time. By continuously linking to our Website, you agree to be bound to and follow these linking terms and conditions.&lt;/p&gt;
&lt;p&gt;Removal of links from our website&lt;/p&gt;
&lt;p&gt;If you find any link on our Website that is offensive for any reason, you are free to contact and inform us any moment. We will consider requests to remove links but we are not obligated to or so or to respond to you directly.&lt;/p&gt;
&lt;p&gt;We do not ensure that the information on this website is correct, we do not warrant its completeness or accuracy; nor do we promise to ensure that the website remains available or that the material on the website is kept up to date.&lt;/p&gt;
&lt;p&gt;Disclaimer&lt;/p&gt;
&lt;p&gt;To the maximum extent permitted by applicable law, we exclude all representations, warranties and conditions relating to our website and the use of this website. Nothing in this disclaimer will:&lt;/p&gt;
&lt;p&gt;limit or exclude our or your liability for death or personal injury;
limit or exclude our or your liability for fraud or fraudulent misrepresentation;
limit any of our or your liabilities in any way that is not permitted under applicable law; or
exclude any of our or your liabilities that may not be excluded under applicable law.
The limitations and prohibitions of liability set in this Section and elsewhere in this disclaimer: (a) are subject to the preceding paragraph; and (b) govern all liabilities arising under the disclaimer, including liabilities arising in contract, in tort and for breach of statutory duty.&lt;/p&gt;
&lt;p&gt;As long as the website and the information and services on the website are provided free of charge, we will not be liable for any loss or damage of any nature.&lt;/p&gt;</content:encoded><author>fiazhari@gmail.com.com</author></item><item><title><![CDATA[Luthfi Azhari]]></title><description><![CDATA[Developer Highly motivated and versatile developer who is passionate about writing clean, efficient code and maintaining modern standards and security. duende.id fiazhari@gmail.com…]]></description><link>https://www.duende.id/resume/</link><guid isPermaLink="false">https://www.duende.id/resume/</guid><content:encoded>&lt;h3 id=&quot;developer&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#developer&quot; aria-label=&quot;developer permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Developer&lt;/h3&gt;
&lt;p&gt;Highly motivated and versatile developer who is passionate about writing clean, efficient code and maintaining modern standards and security.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.duende.id&quot;&gt;duende.id&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;mailto:fiazhari@gmail.com&quot;&gt;fiazhari@gmail.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;tel:6285649174809&quot;&gt;085-649-174-809&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bandung, ID&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;technical-skills&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#technical-skills&quot; aria-label=&quot;technical skills permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Technical Skills&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Languages&lt;/strong&gt; - JavaScript, PHP, HTML5, CSS3, Dart, Go&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tools/Environment&lt;/strong&gt; - Node.js, Git, Webpack, Composer, CLI, Sass&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Frameworks/Libraries&lt;/strong&gt; - Flutter, React, Vue, Laravel, Wordpress, jQuery, Bootstrap, Bulma&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data&lt;/strong&gt; - MySQL, MongoDB, GraphQL, JSON&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;experience&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#experience&quot; aria-label=&quot;experience permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Experience&lt;/h2&gt;
&lt;h4 id=&quot;freelance-developer&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#freelance-developer&quot; aria-label=&quot;freelance developer permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Freelance Developer&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Freelance&lt;/strong&gt; - &lt;em&gt;2019 - Present | Bandung, ID&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Develop Website or Mobile App&lt;/li&gt;
&lt;li&gt;Design Mockup Website or Mobile App&lt;/li&gt;
&lt;li&gt;Content creator at &lt;a href=&quot;https://youtube.com/devindo&quot;&gt;devindo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;project-manager-acquisition&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#project-manager-acquisition&quot; aria-label=&quot;project manager acquisition permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Project Manager Acquisition&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Finata Group&lt;/strong&gt; - &lt;em&gt;2018 | Remote&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage new team for SASS Development&lt;/li&gt;
&lt;li&gt;Supervise the development process&lt;/li&gt;
&lt;li&gt;Optimize flow work in team&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;ui-developer-co-head-information-technology-project-manager&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#ui-developer-co-head-information-technology-project-manager&quot; aria-label=&quot;ui developer co head information technology project manager permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;UI Developer, Co-Head Information Technology, Project Manager&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;MediaWave Interaktif&lt;/strong&gt; - &lt;em&gt;2016 - 2018 | Bandung, ID&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage team and timeline of work&lt;/li&gt;
&lt;li&gt;Comunication with client (Sinarmas, Duta Abadi Primantara, Partai UMNO Malaysia, CT Corp)&lt;/li&gt;
&lt;li&gt;Develop idea for future technology&lt;/li&gt;
&lt;li&gt;Manage all design process on team&lt;/li&gt;
&lt;li&gt;Designed dashboard for social media monitoring&lt;/li&gt;
&lt;li&gt;Designed sentiment analysis&lt;/li&gt;
&lt;li&gt;Designing development proposal&lt;/li&gt;
&lt;li&gt;Design integration of rest api at &lt;a href=&quot;http://tourismwave.com/soon/&quot;&gt;tourismwave.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Develop website &lt;a href=&quot;http://tourismwave.com/soon/&quot;&gt;tourismwave.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Design UI website &lt;a href=&quot;http://tourismwave.com/soon/&quot;&gt;tourismwave.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;ui-designer&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#ui-designer&quot; aria-label=&quot;ui designer permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;UI Designer&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Ideaplus Tekonologi Kreatif (X-IGENT)&lt;/strong&gt; - &lt;em&gt;2016 | Bandung, ID&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Design ui/ux for mobile app and website&lt;/li&gt;
&lt;li&gt;Editing promotional video&lt;/li&gt;
&lt;li&gt;Reseach design for new feature&lt;/li&gt;
&lt;li&gt;Design promotional banner&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;grapich-designer&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#grapich-designer&quot; aria-label=&quot;grapich designer permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Grapich Designer&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Sisfo, Telkom University.&lt;/strong&gt; - &lt;em&gt;2014 - 2015 | Bandung, ID&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Designed and maintained custom websites&lt;/li&gt;
&lt;li&gt;Designed promotions banner print or digital&lt;/li&gt;
&lt;li&gt;Create mockup/asset of website and mobile app&lt;/li&gt;
&lt;li&gt;Training about design website and mobile to students&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;internship&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#internship&quot; aria-label=&quot;internship permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Internship&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.changefly.com&quot;&gt;Changefly&lt;/a&gt; - &lt;em&gt;Oct 2018 - Present | Remote&lt;/em&gt; : Learn about the Google Flutter SDK and other technologies&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;projects&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#projects&quot; aria-label=&quot;projects permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Projects&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=lrlUKxLn9hU&quot;&gt;Brodo&lt;/a&gt; - Create Video Stopmotion for Promotional&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.pertamina.com&quot;&gt;Pertamina&lt;/a&gt; - Design Procedure and book guideline&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://twitter.com/infodkv&quot;&gt;InfoDKV&lt;/a&gt; - Design logo, banner and some asset for branding&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://library.uny.ac.id/sirkulasi/&quot;&gt;Library UNY&lt;/a&gt; - Design Bookmark book for promotional&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.ojeksyari.com&quot;&gt;Ojesy&lt;/a&gt; - Design branding brand&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.tourismwave.com&quot;&gt;Tourismwave&lt;/a&gt; - Develop Web App for booking package tour, flight and hotel. &lt;em&gt;build with laravel&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.sinarmas.com/en/&quot;&gt;Sinarmas&lt;/a&gt; - Create Dashboard Social Media Monitoring. &lt;em&gt;build with laravel, spring, solr&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://cegahkankerserviks.org&quot;&gt;KICKS by MSD&lt;/a&gt; - Create Website blog for sharing information in community. &lt;em&gt;build with wordpress&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dijohor.com.my&quot;&gt;Digital Johor&lt;/a&gt; - Create social media monitoring and analytics. &lt;em&gt;build with vue, spring, solr&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://snapcart.global&quot;&gt;Snapcart&lt;/a&gt; - Redesign Web Company Profile. &lt;em&gt;build with wordpress&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://data.tms.id&quot;&gt;Transmedia Sosial&lt;/a&gt; - Built Dashboard for social media listening, monitoring, and tiketing. &lt;em&gt;build with vue, spring, solr, laravel&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.duende.cripko&quot;&gt;Cripko&lt;/a&gt; - Mobile app for monitoring cripto currency. &lt;em&gt;build with flutter&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=id.mitrago.mitrago&quot;&gt;Mitra Go&lt;/a&gt; - Mobile app get and book your ticket like traveloka or tiket.com, &lt;em&gt;build with flutter&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.duende.prabowosandi&quot;&gt;Prabowo Presidenku&lt;/a&gt; - Mobile app for showing news about prabowo. &lt;em&gt;build with flutter&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://naturalfarm.id/product/brand/24/wellness&quot;&gt;Wellness Suplement&lt;/a&gt; - Design for web company profile. &lt;em&gt;build with wordpress&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://infohondamalang.id&quot;&gt;Info Honda Malang - Azis&lt;/a&gt; - Web Market place for car. &lt;em&gt;build with gatsby&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.sahabattambang.org&quot;&gt;Sahabat Tambang&lt;/a&gt; - Web information of mining group. &lt;em&gt;build with wordpress&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://infohondamalang.id&quot;&gt;ABH Holiday&lt;/a&gt; - Web for rent car. &lt;em&gt;build with gatsby&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://hondacentermalang.com&quot;&gt;Honda Center Malang - Arif&lt;/a&gt; - Web Sales Honda. &lt;em&gt;build with gatsby&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://hondamobilmalang.com&quot;&gt;Honda Mobil Malang - Vivil&lt;/a&gt; - Web Sales Honda. &lt;em&gt;build with gatsby&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://malanghondamobil.com&quot;&gt;Malang Honda Mobil - Lisa&lt;/a&gt; - Web Sales Honda. &lt;em&gt;build with gatsby&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://hondamalangmobil.com&quot;&gt;Honda Malang Mobil - Mandalasena&lt;/a&gt; - Web Sales Honda. &lt;em&gt;build with gatsby&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.jobs3.net&quot;&gt;Jobs3.net&lt;/a&gt; - Mobile App for Recruitment. &lt;em&gt;build with flutter&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://futurethink.net.au&quot;&gt;Container Wise&lt;/a&gt; - Mobile App for scan bottle and get reward. &lt;em&gt;build with flutter&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://futurethink.net.au&quot;&gt;Life Plus&lt;/a&gt; - Mobile App build to make aggrement with local repair. &lt;em&gt;build with flutter&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.sc.com/sg/&quot;&gt;ORO Gold&lt;/a&gt; - Project oracle singapore build for Standart Bank Chartered, Mobile App for buy or gift gold. &lt;em&gt;build with flutter&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;education&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#education&quot; aria-label=&quot;education permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Education&lt;/h2&gt;
&lt;h4 id=&quot;master-of-computer-science&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#master-of-computer-science&quot; aria-label=&quot;master of computer science permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Master of Computer Science&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Telkom University&lt;/strong&gt; - &lt;em&gt;2019 - Present | Bandung, ID&lt;/em&gt;&lt;/p&gt;
&lt;h4 id=&quot;bachelor-of-information-system&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#bachelor-of-information-system&quot; aria-label=&quot;bachelor of information system permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Bachelor of Information System&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Binus University&lt;/strong&gt; - &lt;em&gt;2015 - 2018 | Jakarta, ID&lt;/em&gt;&lt;/p&gt;
&lt;h4 id=&quot;associate-of-informatics-management&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#associate-of-informatics-management&quot; aria-label=&quot;associate of informatics management permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Associate of Informatics Management&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Telkom University&lt;/strong&gt; - &lt;em&gt;2012 - 2015 | Bandung, ID&lt;/em&gt;&lt;/p&gt;
&lt;h1 id=&quot;accomplishments&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#accomplishments&quot; aria-label=&quot;accomplishments permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Accomplishments&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Runner up in 2014 #6Secfilms competition by tribeca. &lt;a href=&quot;https://www.tribecafilm.com/stories/6secfilms-runners-up-finalists-short-list-2014-vine&quot;&gt;Source&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;in under 5KB with flutter. &lt;a href=&quot;https://api.accredible.com/v1/frontend/credential_website_embed_image/certificate/12977610?key=f3c36710ac82863808d87b58c310c3a48a54117c131d3fb8ce4c8f84342d5649&quot;&gt;source&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><author>fiazhari@gmail.com.com</author></item><item><title><![CDATA[Privacy Policy]]></title><description><![CDATA[Privacy Policy for lthfi At lthfi, accessible from lthfi.netlify.app, one of our main priorities is the privacy of our visitors. This Privacy Policy document contains types of…]]></description><link>https://www.duende.id/pp/</link><guid isPermaLink="false">https://www.duende.id/pp/</guid><content:encoded>&lt;p&gt;Privacy Policy for lthfi&lt;/p&gt;
&lt;p&gt;At lthfi, accessible from lthfi.netlify.app, one of our main priorities is the privacy of our visitors. This Privacy Policy document contains types of information that is collected and recorded by lthfi and how we use it.&lt;/p&gt;
&lt;p&gt;If you have additional questions or require more information about our Privacy Policy, do not hesitate to contact us.&lt;/p&gt;
&lt;p&gt;This Privacy Policy applies only to our online activities and is valid for visitors to our website with regards to the information that they shared and/or collect in lthfi. This policy is not applicable to any information collected offline or via channels other than this website.&lt;/p&gt;
&lt;p&gt;Consent&lt;/p&gt;
&lt;p&gt;By using our website, you hereby consent to our Privacy Policy and agree to its terms.&lt;/p&gt;
&lt;p&gt;Information we collect&lt;/p&gt;
&lt;p&gt;The personal information that you are asked to provide, and the reasons why you are asked to provide it, will be made clear to you at the point we ask you to provide your personal information.&lt;/p&gt;
&lt;p&gt;If you contact us directly, we may receive additional information about you such as your name, email address, phone number, the contents of the message and/or attachments you may send us, and any other information you may choose to provide.&lt;/p&gt;
&lt;p&gt;When you register for an Account, we may ask for your contact information, including items such as name, company name, address, email address, and telephone number.&lt;/p&gt;
&lt;p&gt;How we use your information&lt;/p&gt;
&lt;p&gt;We use the information we collect in various ways, including to:&lt;/p&gt;
&lt;p&gt;Provide, operate, and maintain our webste
Improve, personalize, and expand our webste
Understand and analyze how you use our webste
Develop new products, services, features, and functionality
Communicate with you, either directly or through one of our partners, including for customer service, to provide you with updates and other information relating to the webste, and for marketing and promotional purposes
Send you emails
Find and prevent fraud
Log Files&lt;/p&gt;
&lt;p&gt;lthfi follows a standard procedure of using log files. These files log visitors when they visit websites. All hosting companies do this and a part of hosting services&apos; analytics. The information collected by log files include internet protocol (IP) addresses, browser type, Internet Service Provider (ISP), date and time stamp, referring/exit pages, and possibly the number of clicks. These are not linked to any information that is personally identifiable. The purpose of the information is for analyzing trends, administering the site, tracking users&apos; movement on the website, and gathering demographic information. Our Privacy Policy was created with the help of the Privacy Policy Generator and the Online Privacy Policy Generator.&lt;/p&gt;
&lt;p&gt;Google DoubleClick DART Cookie&lt;/p&gt;
&lt;p&gt;Google is one of a third-party vendor on our site. It also uses cookies, known as DART cookies, to serve ads to our site visitors based upon their visit to &lt;a href=&quot;http://www.website.com&quot;&gt;www.website.com&lt;/a&gt; and other sites on the internet. However, visitors may choose to decline the use of DART cookies by visiting the Google ad and content network Privacy Policy at the following URL – &lt;a href=&quot;https://policies.google.com/technologies/ads&quot;&gt;https://policies.google.com/technologies/ads&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Our Advertising Partners&lt;/p&gt;
&lt;p&gt;Some of advertisers on our site may use cookies and web beacons. Our advertising partners are listed below. Each of our advertising partners has their own Privacy Policy for their policies on user data. For easier access, we hyperlinked to their Privacy Policies below.&lt;/p&gt;
&lt;p&gt;Google&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://policies.google.com/technologies/ads&quot;&gt;https://policies.google.com/technologies/ads&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Advertising Partners Privacy Policies&lt;/p&gt;
&lt;p&gt;You may consult this list to find the Privacy Policy for each of the advertising partners of lthfi.&lt;/p&gt;
&lt;p&gt;Third-party ad servers or ad networks uses technologies like cookies, JavaScript, or Web Beacons that are used in their respective advertisements and links that appear on lthfi, which are sent directly to users&apos; browser. They automatically receive your IP address when this occurs. These technologies are used to measure the effectiveness of their advertising campaigns and/or to personalize the advertising content that you see on websites that you visit.&lt;/p&gt;
&lt;p&gt;Note that lthfi has no access to or control over these cookies that are used by third-party advertisers.&lt;/p&gt;
&lt;p&gt;Third Party Privacy Policies&lt;/p&gt;
&lt;p&gt;lthfi&apos;s Privacy Policy does not apply to other advertisers or websites. Thus, we are advising you to consult the respective Privacy Policies of these third-party ad servers for more detailed information. It may include their practices and instructions about how to opt-out of certain options.&lt;/p&gt;
&lt;p&gt;You can choose to disable cookies through your individual browser options. To know more detailed information about cookie management with specific web browsers, it can be found at the browsers&apos; respective websites.&lt;/p&gt;
&lt;p&gt;CCPA Privacy Rights (Do Not Sell My Personal Information)&lt;/p&gt;
&lt;p&gt;Under the CCPA, among other rights, California consumers have the right to:&lt;/p&gt;
&lt;p&gt;Request that a business that collects a consumer&apos;s personal data disclose the categories and specific pieces of personal data that a business has collected about consumers.&lt;/p&gt;
&lt;p&gt;Request that a business delete any personal data about the consumer that a business has collected.&lt;/p&gt;
&lt;p&gt;Request that a business that sells a consumer&apos;s personal data, not sell the consumer&apos;s personal data.&lt;/p&gt;
&lt;p&gt;If you make a request, we have one month to respond to you. If you would like to exercise any of these rights, please contact us.&lt;/p&gt;
&lt;p&gt;GDPR Data Protection Rights&lt;/p&gt;
&lt;p&gt;We would like to make sure you are fully aware of all of your data protection rights. Every user is entitled to the following:&lt;/p&gt;
&lt;p&gt;The right to access – You have the right to request copies of your personal data. We may charge you a small fee for this service.&lt;/p&gt;
&lt;p&gt;The right to rectification – You have the right to request that we correct any information you believe is inaccurate. You also have the right to request that we complete the information you believe is incomplete.&lt;/p&gt;
&lt;p&gt;The right to erasure – You have the right to request that we erase your personal data, under certain conditions.&lt;/p&gt;
&lt;p&gt;The right to restrict processing – You have the right to request that we restrict the processing of your personal data, under certain conditions.&lt;/p&gt;
&lt;p&gt;The right to object to processing – You have the right to object to our processing of your personal data, under certain conditions.&lt;/p&gt;
&lt;p&gt;The right to data portability – You have the right to request that we transfer the data that we have collected to another organization, or directly to you, under certain conditions.&lt;/p&gt;
&lt;p&gt;If you make a request, we have one month to respond to you. If you would like to exercise any of these rights, please contact us.&lt;/p&gt;
&lt;p&gt;Children&apos;s Information&lt;/p&gt;
&lt;p&gt;Another part of our priority is adding protection for children while using the internet. We encourage parents and guardians to observe, participate in, and/or monitor and guide their online activity.&lt;/p&gt;
&lt;p&gt;lthfi does not knowingly collect any Personal Identifiable Information from children under the age of 13. If you think that your child provided this kind of information on our website, we strongly encourage you to contact us immediately and we will do our best efforts to promptly remove such information from our records.&lt;/p&gt;</content:encoded><author>fiazhari@gmail.com.com</author></item><item><title><![CDATA[Modal menjadi web developer]]></title><description><![CDATA[Dilihat dari statistik youtube devindo, ternyata pengunjung paling banyak adalah dengan kata kunci web developer. Yap kali ini saya akan membahas bagai mana memulai atau apa sih…]]></description><link>https://www.duende.id/modal-menjadi-web-developer/</link><guid isPermaLink="false">https://www.duende.id/modal-menjadi-web-developer/</guid><category><![CDATA[web developer]]></category><category><![CDATA[basic]]></category><pubDate>Fri, 05 Jun 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Dilihat dari statistik youtube devindo, ternyata pengunjung paling banyak adalah dengan kata kunci web developer. Yap kali ini saya akan membahas bagai mana memulai atau apa sih modal mejadi web developer.&lt;/p&gt;
&lt;p&gt;Bagi kalian yang udah expert mungkin info ini tidak terlalu berguna, untuk yang baru mulai yuk silahkan simak.&lt;/p&gt;
&lt;p&gt;Untuk menjadi web developer pertama adalah alat. Mungkin dari kalian belum ada akses untuk mempunyai laptop atau komputer. Kalian bisa memulai lewat lab sekolah atau kampus kalian, fasilitas ini biasanya gratis untuk digunakan, kalo memang terbatas silahkan komunikasikan saja ke pihak terkait mengenai tujuan kamu. Kalo memang tidak bisa kalian bisa memanfaatkan handphone kalian, yap beberapa saat yang lalu ada subscriber yang menanyakan saya mengenai koding lewat handphone, dan saya pun kaget ternyata memanfaatkan handphone untuk koding bisa juga.&lt;/p&gt;
&lt;p&gt;Setelah mempunyai modal untuk alat, hal yang pertama kalian pelajari adalah html, iya ini dasar banget dan kalian bisa menuliskan kode html ini dengan text editor atau sekedar dengan node. Untuk referensi belajar dasar html di channel ini ada listnya silahkan berkunjung.&lt;/p&gt;
&lt;p&gt;Selanjutnya setelah memahami html adalah belajar css, kalo kalian tidak mempelajari css tampilan website yang ingin kalian bangun pasti kurang menarik, iya karena tujuannya css adalah mempercantik tampilan, dalam hal ini kalian benar-benar harus belajar basic, jangan langsung jumpin ke framework kayak bootstrap atau pun yang lain. karena kalo kurang kuat kalian bakalan bingung kalo ada task kecil sesederhana untuk merubah warna.&lt;/p&gt;
&lt;p&gt;nah 2 ini udah basic banget kalo kalian undah lancar bisa naik ke tahap selanjutnya, yaitu belajar javascript. sederhananya kalo kalian udah bisa html dan tampilannya udah di percantik pake css, kadang kalian mungkin pengen data yang ada di html kalian bisa di ubah ubah dengan mudah, salah satu caranya yaitu dengan javascript, javascript sangat luas saya rekomendasikan kalian belajar javascript dari dasar di freecodecamp.org&lt;/p&gt;
&lt;p&gt;nah apakah 3 itu saja sudah cukup. Iya sudah cukup untuk dasarnya. sesudah memahami 3 itu kalian bisa belajar lebih lanjut mengenai framework css ataupun javascript. Jadi bisa dikatakan selamat! ada sudah jadi web developer pemula.&lt;/p&gt;
&lt;p&gt;kalo di rasa konten seperti ini layak di pertahankan atau di buatkan silahkan komentar ya.&lt;/p&gt;
&lt;p&gt;Jangan lupa subscribe&lt;/p&gt;
&lt;p&gt;Terimakasih&lt;/p&gt;</content:encoded><author>fiazhari@gmail.com.com</author></item><item><title><![CDATA[Deno Service]]></title><description><![CDATA[Deno Configuration Hello everyone, iam fiaz luthfi and now you are on devindo youtube channel. in this video i will continue tutorial about deno, if you forget previous video, the…]]></description><link>https://www.duende.id/deno-service/</link><guid isPermaLink="false">https://www.duende.id/deno-service/</guid><category><![CDATA[deno]]></category><category><![CDATA[basic]]></category><pubDate>Wed, 03 Jun 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=FzjQHu_Cp9E&quot;&gt;&lt;img src=&quot;https://img.youtube.com/vi/FzjQHu_Cp9E/0.jpg&quot; alt=&quot;Deno Configuration&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hello everyone, iam fiaz luthfi and now you are on devindo youtube channel. in this video i will continue tutorial about deno, if you forget previous video, the link is above here.&lt;/p&gt;
&lt;p&gt;and again before we start, now deno has become 1.1.0, you can upgrade it by do &lt;strong&gt;deno upgrade&lt;/strong&gt; in your terminal&lt;/p&gt;
&lt;p&gt;In this video i will countinue to create service of handler.&lt;/p&gt;
&lt;p&gt;first one, i want to make id as unix so to make it easy, i use library uuid create file createId.ts in service&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; v4 as uuid &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; from &lt;span class=&quot;token string&quot;&gt;&quot;https://deno.land/std/uuid/mod.ts&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; default &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; uuid.generate&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;next we will create service for db, for now db only write to json&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; DB_PATH &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; from &lt;span class=&quot;token string&quot;&gt;&quot;../config.ts&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; Bahasa &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; from &lt;span class=&quot;token string&quot;&gt;&quot;../models/bahasa.ts&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; const fetchData &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; async &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;: Promise&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;Bahasa&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  const data &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; await Deno.readFile&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;DB_PATH&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  const decoder &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; new TextDecoder&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  const decodedData &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; decoder.decode&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; JSON.parse&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;decodedData&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; const persistData &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; async &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;: Promise&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;void&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  const encoder &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; new TextEncoder&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  await Deno.writeFile&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;DB_PATH, encoder.encode&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;JSON.stringify&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;create bahasa.ts in service&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; fetchData, persistData &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; from &lt;span class=&quot;token string&quot;&gt;&quot;./db.ts&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; Bahasa &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; from &lt;span class=&quot;token string&quot;&gt;&quot;../models/bahasa.ts&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; createId from &lt;span class=&quot;token string&quot;&gt;&quot;../services/createId.ts&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token builtin class-name&quot;&gt;type&lt;/span&gt; BahasaData &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Pick&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;Bahasa, &lt;span class=&quot;token string&quot;&gt;&quot;title&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;author&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; const getBahasas &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; async &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;: Promise&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;Bahasa&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  const bahasas &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; await fetchData&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  // &lt;span class=&quot;token function&quot;&gt;sort&lt;/span&gt; by name
  &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; bahasas.sort&lt;span class=&quot;token variable&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;((&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; a.title.localeCompare&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b.title&lt;span class=&quot;token punctuation&quot;&gt;))&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; const getBahasa &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; async &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;bahasaId: string&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;: Promise&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;Bahasa &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; undefined&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  const bahasas &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; await fetchData&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; bahasas.find&lt;span class=&quot;token punctuation&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; bahasaId&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; const createBahasa &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; async &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;bahasaData: BahasaData&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;: Promise&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;string&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  const bahasas &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; await fetchData&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  const newBahasa: Bahasa &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    id: createId&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
    title: String&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;bahasaData.name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
    author: String&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;bahasaData.role&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
    added: new Date&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  await persistData&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.bahasas, newBahasa&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; newBahasa.id&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; const updateBahasa &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; async &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
  bahasaId: string,
  bahasaData: BahasaData
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;: Promise&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;void&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  const bahasa &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; await getBahasa&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;bahasaId&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;bahasa&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    throw new Error&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Bahasa not found&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  const updatedBahasa &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.bahasa,
    name: bahasaData.title &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; undefined ? String&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;bahasaData.title&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin class-name&quot;&gt;:&lt;/span&gt; bahasa.title,
    author: bahasaData.author &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; undefined ? String&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;bahasaData.author&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token builtin class-name&quot;&gt;:&lt;/span&gt; bahasa.author,
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  const bahasas &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; await fetchData&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  const filteredBahasas &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; bahasas.filter&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;bahasa &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; bahasa.id &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; bahasaId&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  persistData&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.filteredBahasas, updatedBahasa&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; const deleteBahasa &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; async &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;bahasaId: string&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;: Promise&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;void&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  const bahasas &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; await getBahasas&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  const filteredBahasas &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; users.filter&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;bahasa &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; bahasa.id &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; bahasaId&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  persistData&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;filteredBahasas&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;and again i will define for error handling when failed to get route&lt;/p&gt;
&lt;p&gt;i create new file named as error.ts&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; default async &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; response &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;, next&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  try &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    await next&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; catch &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;err&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    response.status &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    response.body &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; msg: err.message &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;before we test this data i want to create example data in db/bahasas.json&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;id&quot;&lt;/span&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;1&quot;&lt;/span&gt;,
    &lt;span class=&quot;token string&quot;&gt;&quot;title&quot;&lt;/span&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;PHP&quot;&lt;/span&gt;,
    &lt;span class=&quot;token string&quot;&gt;&quot;author&quot;&lt;/span&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Jone&quot;&lt;/span&gt;,
    &lt;span class=&quot;token string&quot;&gt;&quot;added&quot;&lt;/span&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;2017-10-15&quot;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,
  &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;id&quot;&lt;/span&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;2&quot;&lt;/span&gt;,
    &lt;span class=&quot;token string&quot;&gt;&quot;title&quot;&lt;/span&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;DART&quot;&lt;/span&gt;,
    &lt;span class=&quot;token string&quot;&gt;&quot;author&quot;&lt;/span&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Google&quot;&lt;/span&gt;,
    &lt;span class=&quot;token string&quot;&gt;&quot;added&quot;&lt;/span&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;2017-10-15&quot;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;and we can run it by do drun in terminal, and yes this is final part of basic deno, want to learn how to save to mysql or someting like mongodb, please give me comment&lt;/p&gt;
&lt;p&gt;that it about model and route, next we will learn about handler to this route.&lt;/p&gt;
&lt;p&gt;i hope you enjoy with this video, Don&apos;t forget to subscribe.&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;</content:encoded><author>fiazhari@gmail.com.com</author></item><item><title><![CDATA[Deno Model and Route]]></title><description><![CDATA[Deno Configuration Hello everyone, iam fiaz luthfi and now you are on devindo youtube channel. in this video i will continue tutorial about deno, if you forget previous video, the…]]></description><link>https://www.duende.id/deno-model-and-route/</link><guid isPermaLink="false">https://www.duende.id/deno-model-and-route/</guid><category><![CDATA[deno]]></category><category><![CDATA[basic]]></category><category><![CDATA[model]]></category><category><![CDATA[route]]></category><pubDate>Wed, 03 Jun 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=FzjQHu_Cp9E&quot;&gt;&lt;img src=&quot;https://img.youtube.com/vi/FzjQHu_Cp9E/0.jpg&quot; alt=&quot;Deno Configuration&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hello everyone, iam fiaz luthfi and now you are on devindo youtube channel. in this video i will continue tutorial about deno, if you forget previous video, the link is above here.&lt;/p&gt;
&lt;p&gt;and again before we start, now deno has become 1.0.4, you can upgrade it by do &lt;strong&gt;deno upgrade&lt;/strong&gt; in your terminal&lt;/p&gt;
&lt;p&gt;In this video i will talk about how create model data and how to create routeing.&lt;/p&gt;
&lt;p&gt;let&apos;s jumpt to the first one. Before i have example data bahasa, there is&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;id&lt;/span&gt;
title
author&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;i will create this data to model, this example can be generailze, so if you have big data, you can modeling as your data, we know tipe data not much string, boolean, date, integer, double just that. so if you don&apos;t know about this, please give me comment&lt;/p&gt;
&lt;p&gt;i create new file named as bahasa.ts&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; interface User &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  id: String&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  title: string&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  author: string&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  // because this will save to database so better to &lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt; field date.
  added: Date&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;next go to routing.ts, we will create routing CRUD&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; Router &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; from &lt;span class=&quot;token string&quot;&gt;&quot;https://deno.land/x/oak/mod.ts&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

const router &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; new Router&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

router
  .get&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;/bahasa&quot;&lt;/span&gt;, getBahasa&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  .get&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;/bahasa/:id&quot;&lt;/span&gt;, getBahasaDetails&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  .post&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;/bahasa&quot;&lt;/span&gt;, createBahasa&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  .put&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;/bahasa/:id&quot;&lt;/span&gt;, updateBahasa&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  .delete&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;/bahasa/:id&quot;&lt;/span&gt;, deleteBahasa&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; default router&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;its became error cause we not create function to this refrence, we learn this next video,&lt;/p&gt;
&lt;p&gt;last because we have define route we can change initial this to index.ts. remove router in this place.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; router from &lt;span class=&quot;token string&quot;&gt;&quot;./routing.ts&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

// remove
const router &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; new Router&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;that it about model and route, next we will learn about handler to this route.&lt;/p&gt;
&lt;p&gt;i hope you enjoy with this video, and please give me comment. Don&apos;t forget to subscribe.&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;</content:encoded><author>fiazhari@gmail.com.com</author></item><item><title><![CDATA[Deno Handlers]]></title><description><![CDATA[Deno Configuration Hello everyone, iam fiaz luthfi and now you are on devindo youtube channel. in this video i will continue tutorial about deno, if you forget previous video, the…]]></description><link>https://www.duende.id/deno-handlers/</link><guid isPermaLink="false">https://www.duende.id/deno-handlers/</guid><category><![CDATA[deno]]></category><category><![CDATA[basic]]></category><category><![CDATA[handlers]]></category><pubDate>Wed, 03 Jun 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=FzjQHu_Cp9E&quot;&gt;&lt;img src=&quot;https://img.youtube.com/vi/FzjQHu_Cp9E/0.jpg&quot; alt=&quot;Deno Configuration&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hello everyone, iam fiaz luthfi and now you are on devindo youtube channel. in this video i will continue tutorial about deno, if you forget previous video, the link is above here.&lt;/p&gt;
&lt;p&gt;In this video i will talk about route handlers.&lt;/p&gt;
&lt;p&gt;before we have define in route.ts now i will define route file of file handle&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; getBahasa from &lt;span class=&quot;token string&quot;&gt;&quot;./handlers/getBahasa.ts&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; getBahasaDetails from &lt;span class=&quot;token string&quot;&gt;&quot;./handlers/getBahasaDetails.ts&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; createBahasa from &lt;span class=&quot;token string&quot;&gt;&quot;./handlers/createBahasa.ts&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; updateBahasa from &lt;span class=&quot;token string&quot;&gt;&quot;./handlers/updateBahasa.ts&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; deleteBahasa from &lt;span class=&quot;token string&quot;&gt;&quot;./handlers/deleteBahasa.ts&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;firs we create fo getbahasa, i create new file in handlers getBahasa.ts,
first import i define here is getBahasa but its became error because we never create this file, but no problem we will do latter&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; getbahasa &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; from &lt;span class=&quot;token string&quot;&gt;&quot;../services/bahasa.ts&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; default async &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; response &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  response.body &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; await getbahasa&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;this function to return all data bahasa, this like express we can define respone from body.
next we create for getBahasaDetails.ts&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; getbahasa &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; from &lt;span class=&quot;token string&quot;&gt;&quot;../services/bahasa.ts&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; default async &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; params, response &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  const bahasaId &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; params.id&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;bahasaId&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    response.status &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;400&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    response.body &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; msg: &lt;span class=&quot;token string&quot;&gt;&quot;Invalid bahasa id&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  const foundBahasa &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; await getbahasa&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;bahasaId&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;foundBahasa&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    response.status &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;404&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    response.body &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; msg: &lt;span class=&quot;token variable&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;`&lt;/span&gt;User with ID $&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;bahasaId&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; not found&lt;span class=&quot;token variable&quot;&gt;`&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  response.body &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; foundBahasa&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;next for createBahasa.ts&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; getbahasa &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; from &lt;span class=&quot;token string&quot;&gt;&quot;../services/bahasa.ts&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; default async &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; request, response &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;request.hasBody&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    response.status &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;400&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    response.body &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; msg: &lt;span class=&quot;token string&quot;&gt;&quot;Invalid bahasa data&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  const &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    value: &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; title, author &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; await request.body&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;title&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    response.status &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;422&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    response.body &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; msg: &lt;span class=&quot;token string&quot;&gt;&quot;Incorrect bahasa data. title are required&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  const bahasaId &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; await createUser&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; title, author &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  response.body &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; msg: &lt;span class=&quot;token string&quot;&gt;&quot;UserBahasa created&quot;&lt;/span&gt;, bahasaId &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;next deletebahasa.ts&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; getbahasa &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; from &lt;span class=&quot;token string&quot;&gt;&quot;../services/bahasa.ts&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; default async &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; params, response &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  const bahasaId &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; params.id&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;bahasaId&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    response.status &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;400&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    response.body &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; msg: &lt;span class=&quot;token string&quot;&gt;&quot;Invalid bahasa id&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  const foundBahasa &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; await getUser&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;bahasaId&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;foundBahasa&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    response.status &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;404&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    response.body &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; msg: &lt;span class=&quot;token variable&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;`&lt;/span&gt;Bahasa with ID $&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;bahasaId&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; not found&lt;span class=&quot;token variable&quot;&gt;`&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  await deleteBahasa&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;bahasaId&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  response.body &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; msg: &lt;span class=&quot;token string&quot;&gt;&quot;Bahasa deleted&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;last i will create handle, if every route hit by user not found so i create noFound.ts&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; default &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; response &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  response.status &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;404&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  response.body &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; msg: &lt;span class=&quot;token string&quot;&gt;&quot;Not Found&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;and define this to index.ts&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; notFound from &lt;span class=&quot;token string&quot;&gt;&quot;./handlers/notFound.ts&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
app.use&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;notFound&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;still work must we do, that it about handler, next we will learn about service as mention before&lt;/p&gt;
&lt;p&gt;i hope you enjoy with this video, and please give me comment. Don&apos;t forget to subscribe.&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;</content:encoded><author>fiazhari@gmail.com.com</author></item><item><title><![CDATA[Deno Configuration]]></title><description><![CDATA[Deno Configuration Hello everyone, iam fiaz luthfi and now you are on devindo youtube channel. in this video i will continue tutorial about deno, if you forget previous video, the…]]></description><link>https://www.duende.id/deno-configuration/</link><guid isPermaLink="false">https://www.duende.id/deno-configuration/</guid><category><![CDATA[deno]]></category><category><![CDATA[basic]]></category><pubDate>Wed, 27 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=FzjQHu_Cp9E&quot;&gt;&lt;img src=&quot;https://img.youtube.com/vi/FzjQHu_Cp9E/0.jpg&quot; alt=&quot;Deno Configuration&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hello everyone, iam fiaz luthfi and now you are on devindo youtube channel. in this video i will continue tutorial about deno, if you forget previous video, the link is above here.&lt;/p&gt;
&lt;p&gt;before it now deno has become 1.0.2, you can upgrade i by do &lt;strong&gt;deno upgrade&lt;/strong&gt; in your terminal&lt;/p&gt;
&lt;p&gt;and deno has official extension in visual studi code, you can,uninstall extension before if you instaled and install the official one.&lt;/p&gt;
&lt;p&gt;first one in this video i will tell you how to create enviroment configuration, so this video will be short.&lt;/p&gt;
&lt;p&gt;to easily manage project, i create stucture like this.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;handlers
// handlers contains route handlers
middlewares
// middlewares provide functions that run on every request
models
// models contain model definitions
services
// services contains&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;. services
config.ts
// config.ts contains global application configuration, &lt;span class=&quot;token function&quot;&gt;yes&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; this video we talk about this.
index.ts
// before is server.ts, this is a entry point of the application
routing.ts
// routing.ts contains API routes&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;before, we have create resource.ts it will be rename in next video, and this grouping to models, now just move this recource model to look clean,&lt;/p&gt;
&lt;p&gt;this become read error, just fix it by define new route in index.ts&lt;/p&gt;
&lt;p&gt;we will go to config.ts, before we have define, port and default host is localhost.&lt;/p&gt;
&lt;p&gt;in node you know like env, yes same in deno, i will make env in config.ts&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;const &lt;span class=&quot;token function&quot;&gt;env&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Deno.env.toObject&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; const APP_HOST &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; env.APP_HOST &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;127.0.0.1&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; const APP_PORT &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; env.APP_PORT &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
// next i define &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; db path, &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; basic i just want &lt;span class=&quot;token function&quot;&gt;write&lt;/span&gt; db to &lt;span class=&quot;token builtin class-name&quot;&gt;local&lt;/span&gt; json
&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; const DB_PATH &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; env.DB_PATH &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;./db/bahasa.json&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;go back to index.ts&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;APP_HOST, APP_PORT&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; from &lt;span class=&quot;token string&quot;&gt;&quot;./config.ts&quot;&lt;/span&gt;

// you can change app listen to
app.listen&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;`&lt;span class=&quot;token variable&quot;&gt;${APP_HOST}&lt;/span&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;${APP_PORT}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;lets test this project. before i create example with drun, you can upgrade drun&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;deno &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; --allow-read --allow-run &lt;span class=&quot;token parameter variable&quot;&gt;--unstable&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-f&lt;/span&gt; https://deno.land/x/drun@v1.1.0/drun.ts&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;if you have install drun before use -f to rewrite&lt;/p&gt;
&lt;p&gt;to easily run this project, i create drun.json like example, just copy, and add --allow-env couse we use env&lt;/p&gt;
&lt;p&gt;just run by type drun, and lets see how its work.&lt;/p&gt;
&lt;p&gt;that it about enviroment configuration, next we will learn about routing and model&lt;/p&gt;
&lt;p&gt;i hope you enjoy with this video, and please give me comment. Don&apos;t forget to subscribe.&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;</content:encoded><author>fiazhari@gmail.com.com</author></item><item><title><![CDATA[Flutter Container]]></title><description><![CDATA[Deno Configuration Hello everyone, iam fiaz luthfi and now you are on devindo youtube channel. You know flutter has container, but many of us, don't know what can we do more about…]]></description><link>https://www.duende.id/flutter-container/</link><guid isPermaLink="false">https://www.duende.id/flutter-container/</guid><category><![CDATA[container]]></category><category><![CDATA[basic]]></category><pubDate>Wed, 27 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=KxgPxG5tfxw&quot;&gt;&lt;img src=&quot;https://img.youtube.com/vi/KxgPxG5tfxw/0.jpg&quot; alt=&quot;Deno Configuration&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hello everyone, iam fiaz luthfi and now you are on devindo youtube channel. You know flutter has container, but many of us, don&apos;t know what can we do more about this countainer. So we talk about this in deep&lt;/p&gt;
&lt;p&gt;This is basic flutter project, you can be done to create this by do ‘flutter create name_project in your command line.&lt;/p&gt;
&lt;p&gt;And this is basic of container, and i have set child text is devindo&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;Container&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    child: Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Devindo&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;First one we talk about color in container, inside container you can set color basic&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;color: Colors.blue
// also you can change color opacity by &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
color: Colors:blue&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; // the code you can see when you &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt; hover
// &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; you want to use theme color you can &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
color: Theme.of&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;.accentColor
// but &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; you have your code color you can covert it to hex and &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt; like this to implement
color: Color&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;0xff303960&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; // dark blue&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;next we talk about padding and margin, if you don&apos;t know, margin is empty space to surround child.
padding is empty space to inscribe child. to clearly, i try to make it&lt;/p&gt;
&lt;p&gt;i create another one container and i set collor as green
first container i set padding for all is 100.0, before continue, we will talk more about this EdgeInsets,&lt;/p&gt;
&lt;p&gt;in this widget you have many option to set it, first .all is space all around this widget. but if you only set top only, or bottom, or left or right, you can do .only in this option has 4 option to set space. next is .symetric is option, create space horizontal or vertical, last is .fromWindowPadding, this is to create padding and set pixel ratio as widget, exampe i have padding 100 and pixel ratio is 1.1, so will come like this.&lt;/p&gt;
&lt;p&gt;actualy edgeinserts have option lerp, but it is not be use in basic, this option can be use if we create something like animation. Want to explore about animation? please give a comment&lt;/p&gt;
&lt;p&gt;next we talk about margin, berofe padding will make space inside, margin is the opposite, when we set padding, this option will make space inside this box, so if you want set space ouside, just implement margin.&lt;/p&gt;
&lt;p&gt;alignment, this option will make child inside container move as you want, example choose postition bottomRight or another you can see this list. but this we not see the effect you can comment for padding to see how alignment is work&lt;/p&gt;
&lt;p&gt;height and width this option will make size of container, you can set with double value, example hight 30, and width 100, or make it relative wih MediaQuery.of(). and set as you want.&lt;/p&gt;
&lt;p&gt;clipBehavour this option will make your widget looks good example if you draw triangle, clipbeavhour will take effect of peformance, for detail you can read this article by &lt;a href=&quot;https://medium.com/flutter-community/clipping-in-flutter-e9eaa6b1721a&quot;&gt;raouf rahicle&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;constraints, this option it to make default size of your child widget, we not talk detail about this, cause this option has many option. example you can set BoxConstain with minimum hight is 100.0. but easily this option will work if you not set exacly number for hight or widhth before, exampe i will comment for hight and set max hight is 300.0&lt;/p&gt;
&lt;p&gt;next is decoration also for this option has many option, for exampe i want to set his container have a line border with red color, so you can set boxdecoration and border.all( colors: Colors.black, witdh:10), this will became error because we have set color ouside box, so this color must inside here. also for this option you can set for border radius, or set image as backround, gradient, background blendmode to blend color of this decoration, also you can set of shape.&lt;/p&gt;
&lt;p&gt;last we talk about transfrom, this option is to apply matrix before paint container. example i want rotate this container in z direction so you can do Matrix4.rotationZ(0.1) this valu has minimum is zero and maximum is one&lt;/p&gt;
&lt;p&gt;that it about container in flutter i hope this video help you understand more about this widget, and please give me comment. Don&apos;t forget to subscribe.&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;</content:encoded><author>fiazhari@gmail.com.com</author></item><item><title><![CDATA[Create Dropdown in flutter]]></title><description><![CDATA[Dropdown Flutter Hello everyone, iam fiaz luthfi and now you are on devindo youtube channel. in this video i will tell you how to create dropdown with flutter, for first one we…]]></description><link>https://www.duende.id/create-dropdown-in-flutter/</link><guid isPermaLink="false">https://www.duende.id/create-dropdown-in-flutter/</guid><category><![CDATA[flutter]]></category><category><![CDATA[basic]]></category><pubDate>Tue, 26 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=qoK21pEQoEw&quot;&gt;&lt;img src=&quot;https://img.youtube.com/vi/qoK21pEQoEw/0.jpg&quot; alt=&quot;Dropdown Flutter&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hello everyone, iam fiaz luthfi and now you are on devindo youtube channel. in this video i will tell you how to create dropdown with flutter, for first one we will create dropdown basic, and after that we create dropdown from list. when this is done you can create easily dropdown from local json or from rest api.&lt;/p&gt;
&lt;p&gt;okey let’s jump to first one.&lt;/p&gt;
&lt;p&gt;this is basic flutter project, you can be done to create this by do ‘flutter create name_project in your command line,&lt;/p&gt;
&lt;p&gt;to create dropdown, you can do inside body of stateless or statefull&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;// this is initial param
var valueGender&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
// and &lt;span class=&quot;token function&quot;&gt;write&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; dropdown &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; the body
DropdownButton&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    hint: Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Select Gender&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
    value: valueGender,
    items: &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;String&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Male&apos;&lt;/span&gt;, &lt;span class=&quot;token string&quot;&gt;&apos;Female&apos;&lt;/span&gt;, &lt;span class=&quot;token string&quot;&gt;&apos;Undifine&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;.map&lt;span class=&quot;token punctuation&quot;&gt;((&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; DropdownMenuItem&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            child: Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,t
            value: value,
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;.toList&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
    onChanged: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;you will look like this.
if you want to pass data when select dropdown, you can define, setter and getter for example&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;// before we &lt;span class=&quot;token builtin class-name&quot;&gt;set&lt;/span&gt; text to direcly know what inside value gender
Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;$valueGender&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

// and setter
onChanged: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    setState&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        valueGender &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; value&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;let see how its work,&lt;/p&gt;
&lt;p&gt;before we continue to next section, we can handle error when refresh or getting null by set default value
example&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;_valueGender &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;Male&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;and the second, if you have many list in this dropdown, this code will look ugly, you can sparate this list direcly in your stateless or statefull, example i have list name of my friend&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;List&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;String&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; names &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&apos;Rangga&apos;&lt;/span&gt;,
    &lt;span class=&quot;token string&quot;&gt;&apos;Renaldy&apos;&lt;/span&gt;,
    &lt;span class=&quot;token string&quot;&gt;&apos;Erwin&apos;&lt;/span&gt;,
    &lt;span class=&quot;token string&quot;&gt;&apos;Rendy&apos;&lt;/span&gt;,
    &lt;span class=&quot;token string&quot;&gt;&apos;Ruli&apos;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
// you can direcly call this list to your dropdown
items: names.map&lt;span class=&quot;token punctuation&quot;&gt;((&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; DropdownMenuItem&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        child: Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
        value: value,
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;so how to create dropdown when value from rest api?, first you must set depedency http in your pubspec.yaml,&lt;/p&gt;
&lt;p&gt;in this wi will parse data country from this REST API &lt;a href=&quot;https://restcountries.eu/rest/v2/all&quot;&gt;https://restcountries.eu/rest/v2/all&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;http: ^0.12.1

// &lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; http on your page of project, you have learn advance of flutter you can sparate between logic and view, but &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; this tutorial i will show booth &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; one widget

&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;package:http/http.dart&apos;&lt;/span&gt; as http&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

String _baseUrl &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;https://restcountries.eu/rest/v2/all&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
String _valCountry&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
List&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;dynamic&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; _dataCountry &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; List&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
void getProvince&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; async &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    final respose &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; await http.get&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;_baseUrl&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    var listData &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; jsonDecode&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;respose.body&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    setState&lt;span class=&quot;token punctuation&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      _dataCountry &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; listData&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    print&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;data : &lt;span class=&quot;token variable&quot;&gt;$listData&lt;/span&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

@override
void &lt;span class=&quot;token function-name function&quot;&gt;initState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    super.initState&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    getProvince&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

DropdownButton&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    hint: Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Select Province&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
    value: _valCountry,
    items: _dataCountry.map&lt;span class=&quot;token punctuation&quot;&gt;((&lt;/span&gt;item&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; DropdownMenuItem&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        child: Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;name&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
            value: item&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;name&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;,
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;.toList&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
    onChanged: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        setState&lt;span class=&quot;token punctuation&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            _valCountry &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; value&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;when you have a lot of data this method will take time, and you can _dataCountry has value or not to avoid error&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;if&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;_dataCountry.length &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;last in this tutorial is how to create dropdown image?, first define your image location in this example i put image in folder assets, so just define in pubspec.yaml&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;assets:
    - assets/

// so i have 3 image and i will create dropdown about this

String _filter = &apos;All&apos;

DropdownButton&amp;lt;String&gt;(
    underline: SizedBox(),
    hint: Image.asset(
              &apos;assets/All.png&apos;,
              scale: 3,
    ),
    value: _filter,
    items: &amp;lt;String&gt;[&apos;All&apos;, &apos;One&apos;, &apos;Two&apos;].map((String value) {
        return DropdownMenuItem&amp;lt;String&gt;(
            value: value,
            child: Row(
                children: &amp;lt;Widget&gt;[
                    Image.asset(
                      &apos;assets/$value.png&apos;,
                      scale: 3,
                    ),
                  ],
                ),
              );
        }).toList(),
    onChanged: (val) {
        setState({
            _filter = val
        })
    },
),&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;and this is all about dropdwon in flutter, i hope you enjoy with this tutorial, and please give me comment about this video. Don&apos;t forget to subscribe.
Thanks&lt;/p&gt;</content:encoded><author>fiazhari@gmail.com.com</author></item><item><title><![CDATA[Dasar Golang]]></title><description><![CDATA[Bahasa go menjadi sangat populer di kalangan backend, selain mudahnya mempelejari go juga menjamin performa yang signifikan dibaging bahasa lainnya. nah untuk pertmakali kita harus…]]></description><link>https://www.duende.id/dasar-golang/</link><guid isPermaLink="false">https://www.duende.id/dasar-golang/</guid><category><![CDATA[golang]]></category><category><![CDATA[basic]]></category><pubDate>Sun, 08 Mar 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Bahasa go menjadi sangat populer di kalangan backend, selain mudahnya mempelejari go juga menjamin performa yang signifikan dibaging bahasa lainnya.&lt;/p&gt;
&lt;p&gt;nah untuk pertmakali kita harus menginstall go dan bisa di lihat pada dokumen resminya yaitu golang.org&lt;/p&gt;
&lt;p&gt;untuk membuat project pertama kali kita harus mendefinisikan package yang akan kita gunakan yaitu&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;package main

&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;untuk menjalan kannya kalian bia menggunakan perintah &lt;strong&gt;go run namafile.go&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;untuk pertama kita belajar tipe data yaitu variable, hampir sama dengan bahasa pemrograman lain variable dapat di definisikan sebagai var&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;
var pelajaran &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;DART&quot;&lt;/span&gt;
func &lt;span class=&quot;token function-name function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	fmt.Println&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Hallo devindo...&quot;&lt;/span&gt;+ pelajaran + &lt;span class=&quot;token string&quot;&gt;&quot; &quot;&lt;/span&gt; + pelajaran2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;yap untuk menjalankannya kita butuh fungsi main di setiap runnernya. nah enaknya lagi kita bisa mendefinisikan variable ini di dalam satu line contoh&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;var namadepan, namabelakang &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;fiaz&quot;&lt;/span&gt;,&lt;span class=&quot;token string&quot;&gt;&quot;luthfi&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;nah di go juga kita bisa menganti var dengan &lt;strong&gt;:=&lt;/strong&gt; tapi ini hanya bisa kita gunakan di dalam fungsi contoh&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;func &lt;span class=&quot;token function-name function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    kampus :&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Binus&quot;&lt;/span&gt;
	fmt.Println&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Hallo devindo...&quot;&lt;/span&gt;+ kampus&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;selain variable string seperti di atas ada juga numerik yaitu int atau integer, ada juga float yang bisanya di deteksi langsung ketika penulisannya menggunakan koma koma&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;func &lt;span class=&quot;token function-name function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    kampus :&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Binus&quot;&lt;/span&gt;
    tanggal :&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;
    berat :&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;55.5&lt;/span&gt;
	fmt.Println&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Hallo devindo...&quot;&lt;/span&gt;+ kampus&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	fmt.Println&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Tanggal &quot;&lt;/span&gt;, tanggal&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Kalo ngeformat integer ke string dan sebaliknya gimana?&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;strconv&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

func &lt;span class=&quot;token function-name function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    tanggal :&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;
    total :&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;10&quot;&lt;/span&gt;
	fmt.Println&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Tanggal &quot;&lt;/span&gt; + strconv.itoa&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tanggal&lt;span class=&quot;token punctuation&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	fmt.Println&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Tanggal &quot;&lt;/span&gt;,  strconv.itoa&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;total&lt;span class=&quot;token punctuation&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Kita mainan lebih dalam di fungsi ini, untuk pertama mengenai return&lt;/p&gt;
&lt;p&gt;contoh&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;func printNumber&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; int&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

func &lt;span class=&quot;token function-name function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    fmt.Println&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Fungsi ini balikannya&quot;&lt;/span&gt;, printNumber&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;))&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;selanjutnya biar mudah dan rapi kita bikin folder &lt;strong&gt;routes&lt;/strong&gt; di folder &lt;strong&gt;lib&lt;/strong&gt; dan bikin file namanya &lt;strong&gt;routing_a.dart&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;isinkan standar stateless seperti ini&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

class RouteA extends StatelessWidget &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  @override
  Widget build&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;BuildContext context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; Scaffold&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      body: Center&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        child: Column&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          mainAxisAlignment: MainAxisAlignment.center,
          children: &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;Widget&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
            Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Welcome to Route A&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
          &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;,
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Setelah itu kita balik lagi ke &lt;strong&gt;main.dart&lt;/strong&gt; dan bikin button untuk kita navigasiin ke &lt;strong&gt;Route A&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;FlatButton&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    onPressed: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,
    child: Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Bawa Ke Halaman A&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Nah kita sekarang implementasi untuk routingnya, di taruh di onpress, di situ kita bisa menggunakan &lt;strong&gt;push&lt;/strong&gt; maupun &lt;strong&gt;pushNamed&lt;/strong&gt; bedanya kalo push kita harus mendefinisikan routenya, kalo pushNamed tinggal kita panggil nama yang udah di definisiin. oke langsung kita coba aja definisiin &lt;strong&gt;routingA&lt;/strong&gt; ini ke &lt;strong&gt;main.dart&lt;/strong&gt; pada &lt;strong&gt;MaterialApp&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;    &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; MaterialApp&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title: &lt;span class=&quot;token string&quot;&gt;&apos;Flutter Routing&apos;&lt;/span&gt;,
      routes: &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&apos;routeA&apos;&lt;/span&gt;:&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; RouteA&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,
      theme: ThemeData&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        primarySwatch: Colors.blue,
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
      home: MyHomePage&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;title: &lt;span class=&quot;token string&quot;&gt;&apos;Routing dan Navigasi&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Implementasinya&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;RaisedButton&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    onPressed: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Navigator.of&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;.pushNamed&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;routeA&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,
    child: Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Bawa Ke Halaman A&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Nah kalo push aja gimana caranya hampir sama, kita contohin seperti di atas, kita bikin dulu file baru dengan nama &lt;strong&gt;routing_b.dart&lt;/strong&gt; dengan isi standar juga dan definisikan button di halaman &lt;strong&gt;main.dart&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;RaisedButton&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    onPressed: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Navigator.push&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            context,
            MaterialPageRoute&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                builder: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; RouteB&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,
    child: Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Bawa Ke Halaman B&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Nah selanjutnya kita masuk pada pembahasan &lt;strong&gt;pop&lt;/strong&gt; dan &lt;strong&gt;popUntil&lt;/strong&gt;, sederhananya pop adalah balik ke halaman sebelumnya&lt;/p&gt;
&lt;p&gt;Ini sangat sederhana, kita masuk ke file &lt;strong&gt;routing_a.dart&lt;/strong&gt; dan bikin standar flat button dan definisikan navigator pop seperti ini&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;RaisedButton&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    child: Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Back to home&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
    onPressed: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Navigator.pop&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;nah selanjutnya &lt;strong&gt;popUntil&lt;/strong&gt; kapan digunakan, ketika kita ingin balik ke halaman semula atau halaman yang awal banget contoh kita dari route &lt;strong&gt;a&lt;/strong&gt; ke &lt;strong&gt;b&lt;/strong&gt;, kalo pake &lt;strong&gt;pop&lt;/strong&gt; dari &lt;strong&gt;b&lt;/strong&gt; pasti balik ke &lt;strong&gt;a&lt;/strong&gt; tp kalo pake &lt;strong&gt;popUntil&lt;/strong&gt; kita bisa balik ke halaman awal nah kita contohin aja, tp sebelum itu sekalian kita bikin button di &lt;strong&gt;route a&lt;/strong&gt; biar ga bolak balik&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;RaisedButton&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    child: Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;route B from A&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
    onPressed: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Navigator.push&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            context,
            MaterialPageRoute&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;builder: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; RouteB&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;))&lt;/span&gt;,
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;cara pakainya kita bikin button di halaman &lt;strong&gt;b&lt;/strong&gt; kayak gini&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;RaisedButton&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    child: Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Go back all the way to home&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
    onPressed: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Navigator.popUntil&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context, ModalRoute.withName&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Navigator.defaultRouteName&lt;span class=&quot;token punctuation&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;taraaa udah beres sangat mudah bukan, sourcodenya bisa dilihat di github saya yah, nah sebagai penutup kita definisin juga ketika ga nemuin routingnya caranya&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; MaterialApp&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title: &lt;span class=&quot;token string&quot;&gt;&apos;Flutter Demo&apos;&lt;/span&gt;,
      onUnknownRoute: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;RouteSettings setting&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; new MaterialPageRoute&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    builder: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; NotFoundPage&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,
&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Kalo masih kurang jelas silahkan tonton video youtube saya ya &lt;a href=&quot;https://youtube.com/devindo&quot;&gt;devindo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Semoga bermanfaat&lt;/p&gt;</content:encoded><author>fiazhari@gmail.com.com</author></item><item><title><![CDATA[Flutter Navigation dan Routing]]></title><description><![CDATA[Kali ini kita akan belajar basic flutter mengenai navigasi dan routing. Yap ini sebenernya basic banget tapi ini paling sering kita pakai untuk pergi ke halaman atau balik lagi di…]]></description><link>https://www.duende.id/flutter-navigation-and-routing/</link><guid isPermaLink="false">https://www.duende.id/flutter-navigation-and-routing/</guid><category><![CDATA[flutter]]></category><category><![CDATA[navigation]]></category><category><![CDATA[routing]]></category><pubDate>Sat, 22 Feb 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Kali ini kita akan belajar basic flutter mengenai navigasi dan routing. Yap ini sebenernya basic banget tapi ini paling sering kita pakai untuk pergi ke halaman atau balik lagi di layar yang kita pengenin, nah kali ini kita akan fokus bahas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;push&lt;/li&gt;
&lt;li&gt;pushNamed&lt;/li&gt;
&lt;li&gt;pop&lt;/li&gt;
&lt;li&gt;popUntil&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Kenapa 4 saja? kare ini ini paling basic banget yang bisa kita gunain untuk seluruh project di flutter. Langsung aja pertama kita bikin project flutter&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;  create flutter routing&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;selanjutnya di file &lt;strong&gt;main.dart&lt;/strong&gt; hapus komentar dan element yang ga kita pake, jadinya kayak gini&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

void main&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; runApp&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;MyApp&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

class MyApp extends StatelessWidget &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  @override
  Widget build&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;BuildContext context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; MaterialApp&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title: &lt;span class=&quot;token string&quot;&gt;&apos;Flutter Routing&apos;&lt;/span&gt;,
      theme: ThemeData&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        primarySwatch: Colors.blue,
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
      home: MyHomePage&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

class MyHomePage extends StatefulWidget &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

  @override
  _MyHomePageState createState&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; _MyHomePageState&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

class _MyHomePageState extends State&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;MyHomePage&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  @override
  Widget build&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;BuildContext context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; Scaffold&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      appBar: AppBar&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        title: Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Routing dan Navigasi&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
      body: Center&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        child: Column&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          mainAxisAlignment: MainAxisAlignment.center,
          children: &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;Widget&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
            Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              &lt;span class=&quot;token string&quot;&gt;&apos;Siap untuk implementasi routing dan navigasi?&apos;&lt;/span&gt;,
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
          &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;,
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;selanjutnya biar mudah dan rapi kita bikin folder &lt;strong&gt;routes&lt;/strong&gt; di folder &lt;strong&gt;lib&lt;/strong&gt; dan bikin file namanya &lt;strong&gt;routing_a.dart&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;isinkan standar stateless seperti ini&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

class RouteA extends StatelessWidget &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  @override
  Widget build&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;BuildContext context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; Scaffold&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      body: Center&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        child: Column&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          mainAxisAlignment: MainAxisAlignment.center,
          children: &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;Widget&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
            Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Welcome to Route A&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
          &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;,
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Setelah itu kita balik lagi ke &lt;strong&gt;main.dart&lt;/strong&gt; dan bikin button untuk kita navigasiin ke &lt;strong&gt;Route A&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;FlatButton&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    onPressed: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,
    child: Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Bawa Ke Halaman A&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Nah kita sekarang implementasi untuk routingnya, di taruh di onpress, di situ kita bisa menggunakan &lt;strong&gt;push&lt;/strong&gt; maupun &lt;strong&gt;pushNamed&lt;/strong&gt; bedanya kalo push kita harus mendefinisikan routenya, kalo pushNamed tinggal kita panggil nama yang udah di definisiin. oke langsung kita coba aja definisiin &lt;strong&gt;routingA&lt;/strong&gt; ini ke &lt;strong&gt;main.dart&lt;/strong&gt; pada &lt;strong&gt;MaterialApp&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;    &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; MaterialApp&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title: &lt;span class=&quot;token string&quot;&gt;&apos;Flutter Routing&apos;&lt;/span&gt;,
      routes: &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&apos;routeA&apos;&lt;/span&gt;:&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; RouteA&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,
      theme: ThemeData&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        primarySwatch: Colors.blue,
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
      home: MyHomePage&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;title: &lt;span class=&quot;token string&quot;&gt;&apos;Routing dan Navigasi&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Implementasinya&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;RaisedButton&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    onPressed: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Navigator.of&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;.pushNamed&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;routeA&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,
    child: Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Bawa Ke Halaman A&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Nah kalo push aja gimana caranya hampir sama, kita contohin seperti di atas, kita bikin dulu file baru dengan nama &lt;strong&gt;routing_b.dart&lt;/strong&gt; dengan isi standar juga dan definisikan button di halaman &lt;strong&gt;main.dart&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;RaisedButton&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    onPressed: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Navigator.push&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            context,
            MaterialPageRoute&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                builder: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; RouteB&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,
    child: Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Bawa Ke Halaman B&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Nah selanjutnya kita masuk pada pembahasan &lt;strong&gt;pop&lt;/strong&gt; dan &lt;strong&gt;popUntil&lt;/strong&gt;, sederhananya pop adalah balik ke halaman sebelumnya&lt;/p&gt;
&lt;p&gt;Ini sangat sederhana, kita masuk ke file &lt;strong&gt;routing_a.dart&lt;/strong&gt; dan bikin standar flat button dan definisikan navigator pop seperti ini&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;RaisedButton&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    child: Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Back to home&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
    onPressed: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Navigator.pop&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;nah selanjutnya &lt;strong&gt;popUntil&lt;/strong&gt; kapan digunakan, ketika kita ingin balik ke halaman semula atau halaman yang awal banget contoh kita dari route &lt;strong&gt;a&lt;/strong&gt; ke &lt;strong&gt;b&lt;/strong&gt;, kalo pake &lt;strong&gt;pop&lt;/strong&gt; dari &lt;strong&gt;b&lt;/strong&gt; pasti balik ke &lt;strong&gt;a&lt;/strong&gt; tp kalo pake &lt;strong&gt;popUntil&lt;/strong&gt; kita bisa balik ke halaman awal nah kita contohin aja, tp sebelum itu sekalian kita bikin button di &lt;strong&gt;route a&lt;/strong&gt; biar ga bolak balik&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;RaisedButton&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    child: Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;route B from A&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
    onPressed: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Navigator.push&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            context,
            MaterialPageRoute&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;builder: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; RouteB&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;))&lt;/span&gt;,
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;cara pakainya kita bikin button di halaman &lt;strong&gt;b&lt;/strong&gt; kayak gini&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;RaisedButton&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    child: Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Go back all the way to home&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
    onPressed: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Navigator.popUntil&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context, ModalRoute.withName&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Navigator.defaultRouteName&lt;span class=&quot;token punctuation&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;taraaa udah beres sangat mudah bukan, sourcodenya bisa dilihat di github saya yah, nah sebagai penutup kita definisin juga ketika ga nemuin routingnya caranya&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; MaterialApp&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title: &lt;span class=&quot;token string&quot;&gt;&apos;Flutter Demo&apos;&lt;/span&gt;,
      onUnknownRoute: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;RouteSettings setting&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; new MaterialPageRoute&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    builder: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; NotFoundPage&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,
&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Kalo masih kurang jelas silahkan tonton video youtube saya ya &lt;a href=&quot;https://youtube.com/devindo&quot;&gt;devindo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Semoga bermanfaat&lt;/p&gt;</content:encoded><author>fiazhari@gmail.com.com</author></item><item><title><![CDATA[Flutter Localization dengan Flappy Translator]]></title><description><![CDATA[Ketika kita bikin aplikasi pasti utamanya adalah di pakai untuk kalangan sendiri, tp kan pengen juga aplikasi ini di pahami orang luar, terutama yang mau kita targetin seperti…]]></description><link>https://www.duende.id/flutter-localization-flappy-translator/</link><guid isPermaLink="false">https://www.duende.id/flutter-localization-flappy-translator/</guid><category><![CDATA[flutter]]></category><category><![CDATA[translate]]></category><pubDate>Sun, 16 Feb 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ketika kita bikin aplikasi pasti utamanya adalah di pakai untuk kalangan sendiri, tp kan pengen juga aplikasi ini di pahami orang luar, terutama yang mau kita targetin seperti orang yang hariannya pake bahasa inggris atau china atau bahkan bahasa spanyol&lt;/p&gt;
&lt;p&gt;Nah untuk mengatasi itu kita bisa pakai localization di flutter. Tapi ada ribetnya ketika kita harus menterjemahkannya satu persatu. Nah ini kita bisa mengatasinya dengan plugin flappy translator.&lt;/p&gt;
&lt;p&gt;Yuk lah langsung kita bahasa aja untuk pertama. Kita bisa menyediakan dulu file yang akan kita translate, kita bisa mengunakan google sheet untuk mempermudahnya untuk di convert menjadi csv&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;keys&lt;/th&gt;
&lt;th&gt;fr&lt;/th&gt;
&lt;th&gt;en&lt;/th&gt;
&lt;th&gt;es&lt;/th&gt;
&lt;th&gt;de_CH&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;appTitle&lt;/td&gt;
&lt;td&gt;Ma super application&lt;/td&gt;
&lt;td&gt;My awesome application&lt;/td&gt;
&lt;td&gt;Mi gran application&lt;/td&gt;
&lt;td&gt;Meine tolle App&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;subtitle&lt;/td&gt;
&lt;td&gt;Un sous titre&lt;/td&gt;
&lt;td&gt;A subtitle&lt;/td&gt;
&lt;td&gt;Un subtitulò&lt;/td&gt;
&lt;td&gt;Ein Untertitel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;description&lt;/td&gt;
&lt;td&gt;Un texte avec une variable : %1$s&lt;/td&gt;
&lt;td&gt;Text with a variable: %1$s&lt;/td&gt;
&lt;td&gt;Un texto con una variable : %1$s&lt;/td&gt;
&lt;td&gt;Text mit einer Variable: %1$s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;littleTest&lt;/td&gt;
&lt;td&gt;&quot;Voici, pour l&apos;exemple, &quot;&quot;un test&quot;&quot; avec la variable %age$d&quot;&lt;/td&gt;
&lt;td&gt;&quot;Here is, for the example, &quot;&quot;a test&quot;&quot; with the variable %age$d&quot;&lt;/td&gt;
&lt;td&gt;&quot;Aqui esta, por ejemplo, &quot;&quot;una prueba&quot;&quot; con la variable %age$d&quot;&lt;/td&gt;
&lt;td&gt;&quot;Hier ist, zum Beispiel, &quot;&quot;ein Test&quot;&quot; mit der Variable %age$d&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;nah contoh di atas bisa kita permudah dengan bantuan google translate di google sheet dengan cara&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;  &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;GOOGLETRANSLATE&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;Posisi Kolom&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;en&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;fr&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;kalo udah tinggal di download sebagai csv.&lt;/p&gt;
&lt;p&gt;Selanjutnya kita setup untuk depedency di flutternya.&lt;/p&gt;
&lt;p&gt;Jadi di sini saya anggap semua udah bisa install flutter jadi tinggal tambahin depedency&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;    dependencies:
        flutter_localizations:
        sdk: flutter
        flappy_translator: &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;untuk versi flappy bisa di cek &lt;a href=&quot;https://pub.dev/packages/flappy_translator#-readme-tab-&quot;&gt;disini&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;kalo udah di setup depedency nya lakukan&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;    flutter pub get
    flutter pub run flappy_translator &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;nama_file.csv&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;otomatis nanti akan di generate menjadi i18.dart&lt;/p&gt;
&lt;p&gt;Selanjutnya tinggal kita implement pada main.dart kita&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;  class MyApp extends StatelessWidget &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    @override
        Widget build&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;BuildContext context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; MaterialApp&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            localizationsDelegates: &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
                const I18nDelegate&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
                GlobalMaterialLocalizations.delegate,
                GlobalWidgetsLocalizations.delegate,
            &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;,
            supportedLocales: I18nDelegate.supportedLocals,
            home: Home&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Udah beres tinggal cara pemakainnya, gampang sih, pada text tinggal kita panggil sesuai keynya contoh&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;   Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;I18n.of&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;.appTitle&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;taraaa udah beres sangat mudah bukan&lt;/p&gt;
&lt;p&gt;Kalo masih kurang jelas silahkan tonton video youtube saya ya &lt;a href=&quot;https://youtube.com/devindo&quot;&gt;devindo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Semoga bermanfaat&lt;/p&gt;</content:encoded><author>fiazhari@gmail.com.com</author></item><item><title><![CDATA[Basic Python]]></title><description><![CDATA[Sesekali dapat project machine learning dengan python, karena nilainya sangat tinggi, iyain aja padahal sebelumnya belum pernah belajar sekalipun, nah sekalian belajar di…]]></description><link>https://www.duende.id/basic-python/</link><guid isPermaLink="false">https://www.duende.id/basic-python/</guid><category><![CDATA[basic]]></category><pubDate>Mon, 09 Dec 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sesekali dapat project machine learning dengan python, karena nilainya sangat tinggi, iyain aja padahal sebelumnya belum pernah belajar sekalipun, nah sekalian belajar di dokumentasiin aja&lt;/p&gt;
&lt;p&gt;Variable dan type, enaknya di python tidak harus di definisiin satu satu jadi kompailernya udah bisa ngenalin sendiri setiap typenya&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;  nama &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;fiaz&quot;&lt;/span&gt;
  tingkat &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;
  berat &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;55,2&lt;/span&gt;
  print&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;nama&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  print&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tingkat&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  print&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;berat&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Selanjutnya list, ini hampir sama kayak pemrograman lain tinggal di kasih kurung bracket udah di identifikasi sebai list&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;    nomor &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
    string &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;erik&apos;&lt;/span&gt;,&lt;span class=&quot;token string&quot;&gt;&apos;wisnu&apos;&lt;/span&gt;,&lt;span class=&quot;token string&quot;&gt;&apos;nadiem&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
    nomor.append&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;nah di atas adalah contoh untuk validasi ketika si value kurang dari 2 maka muncul notif validasi &apos;Lebih panjang lagi dong&apos;&lt;/p&gt;
&lt;p&gt;ini berlaku juga untuk validasi lainnya, kayak validasi untuk nomor atau email bisa juga tinggal pakai&lt;/p&gt;
&lt;p&gt;Validasi Email&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;  validator: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;val&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    Pattern pattern &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
                      r&lt;span class=&quot;token string&quot;&gt;&apos;^(([^&amp;lt;&gt;()[\]\\.,;:\s@\&quot;]+(\.[^&amp;lt;&gt;()[\]\\.,;:\s@\&quot;]+)*)|(\&quot;.+\&quot;))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    RegExp regex &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; new RegExp&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pattern&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;regex.hasMatch&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;val&lt;span class=&quot;token punctuation&quot;&gt;))&lt;/span&gt;
        ? &lt;span class=&quot;token string&quot;&gt;&apos;Masukin email yg bener&apos;&lt;/span&gt;
        &lt;span class=&quot;token builtin class-name&quot;&gt;:&lt;/span&gt; null&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Validasi Nomor&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;  validator: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    Pattern patttern &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; r&lt;span class=&quot;token string&quot;&gt;&apos;(^(?:[+0]6)?[0-9]{10,12}$)&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    RegExp regExp &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; new RegExp&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;patttern&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;regExp.hasMatch&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;))&lt;/span&gt;
        ? &lt;span class=&quot;token string&quot;&gt;&apos;Nomor aja jangan yg lain&apos;&lt;/span&gt;
        &lt;span class=&quot;token builtin class-name&quot;&gt;:&lt;/span&gt; null&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Nah kalo kita mau lanjut ke next step, validasi untuk buttonnya contohnya&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;   FlatButton&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        child: Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Lanjut&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
            onPressed: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;_formKey.currentState.validate&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                // Lakukan sesuatu
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Kalo masih kurang jelas silahkan tonton video youtube saya ya &lt;a href=&quot;https://youtube.com/devindo&quot;&gt;devindo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Semoga bermanfaat&lt;/p&gt;</content:encoded><author>fiazhari@gmail.com.com</author></item><item><title><![CDATA[Validasi Form Flutter]]></title><description><![CDATA[Validasi form sebelum lanjut ke tahap berikutnya sangat penting buat aplikasi kita, apalagi kalo ada requirement harus di isi, nah ini wajib banget kita implement di setiap form…]]></description><link>https://www.duende.id/validasi-form-flutter/</link><guid isPermaLink="false">https://www.duende.id/validasi-form-flutter/</guid><category><![CDATA[flutter]]></category><category><![CDATA[form]]></category><category><![CDATA[validasi]]></category><pubDate>Mon, 09 Dec 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Validasi form sebelum lanjut ke tahap berikutnya sangat penting buat aplikasi kita, apalagi kalo ada requirement harus di isi, nah ini wajib banget kita implement di setiap form, untuk itu kita harus menginisiasi Global key untuk form state di dalam statefull widget kita&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;  GlobalKey&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;FormState&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; _formKey &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; GlobalKey&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;FormState&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;nah kalo udah di inisiasi tinggal kita warp si textform kita dengan form dan key nya set dengan global key yg di atur di atas contoh&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;    Form&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        key: _formKey,
        child: Column&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            mainAxisAlignment: MainAxisAlignment.center,
            children: &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;Widget&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
              TextFormField&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                validator: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                  &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value.length &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;Lebih panjang lagi dong&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;,
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;nah di atas adalah contoh untuk validasi ketika si value kurang dari 2 maka muncul notif validasi &apos;Lebih panjang lagi dong&apos;&lt;/p&gt;
&lt;p&gt;ini berlaku juga untuk validasi lainnya, kayak validasi untuk nomor atau email bisa juga tinggal pakai&lt;/p&gt;
&lt;p&gt;Validasi Email&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;  validator: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;val&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    Pattern pattern &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
                      r&lt;span class=&quot;token string&quot;&gt;&apos;^(([^&amp;lt;&gt;()[\]\\.,;:\s@\&quot;]+(\.[^&amp;lt;&gt;()[\]\\.,;:\s@\&quot;]+)*)|(\&quot;.+\&quot;))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    RegExp regex &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; new RegExp&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pattern&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;regex.hasMatch&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;val&lt;span class=&quot;token punctuation&quot;&gt;))&lt;/span&gt;
        ? &lt;span class=&quot;token string&quot;&gt;&apos;Masukin email yg bener&apos;&lt;/span&gt;
        &lt;span class=&quot;token builtin class-name&quot;&gt;:&lt;/span&gt; null&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Validasi Nomor&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;  validator: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    Pattern patttern &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; r&lt;span class=&quot;token string&quot;&gt;&apos;(^(?:[+0]6)?[0-9]{10,12}$)&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    RegExp regExp &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; new RegExp&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;patttern&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;regExp.hasMatch&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;))&lt;/span&gt;
        ? &lt;span class=&quot;token string&quot;&gt;&apos;Nomor aja jangan yg lain&apos;&lt;/span&gt;
        &lt;span class=&quot;token builtin class-name&quot;&gt;:&lt;/span&gt; null&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;,&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Nah kalo kita mau lanjut ke next step, validasi untuk buttonnya contohnya&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;   FlatButton&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        child: Text&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Lanjut&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;,
            onPressed: &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;_formKey.currentState.validate&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                // Lakukan sesuatu
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Kalo masih kurang jelas silahkan tonton video youtube saya ya &lt;a href=&quot;https://youtube.com/devindo&quot;&gt;devindo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Semoga bermanfaat&lt;/p&gt;</content:encoded><author>fiazhari@gmail.com.com</author></item><item><title><![CDATA[Deteksi Keyboard Flutter]]></title><description><![CDATA[Suatu saat aplikasi grab saya ter-logout otomatis, entah kenapa mungkin memang ada pembaruan di sistemnya, dan pas mau login lagi loh kok ini unik ya, keyboard muncul button bawah…]]></description><link>https://www.duende.id/deteksi-keyboard-flutter/</link><guid isPermaLink="false">https://www.duende.id/deteksi-keyboard-flutter/</guid><category><![CDATA[keyboard]]></category><category><![CDATA[visibility]]></category><pubDate>Mon, 02 Dec 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Suatu saat aplikasi grab saya ter-logout otomatis, entah kenapa mungkin memang ada pembaruan di sistemnya, dan pas mau login lagi loh kok ini unik ya, keyboard muncul button bawah hilang dan ada button baru, bisa ga sih di implementasi di flutter?&lt;/p&gt;
&lt;p&gt;jadi idenya cuma deteksi keyboard ini mah harusnya gampang. nah untuk deteksi keyboard gimana caranya?&lt;/p&gt;
&lt;p&gt;ya betul kita manfaatin media query, media query bisa ngedeteksi lebar atau luas layar kita. biasanya kalo kita mainan responsivenya cuma deteksi size witdth atau height. nah kita deteksi kalo ada inset di bottomnya&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;  MediaQuery.of&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;.viewInsets.bottom&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;nah dari sini kita dapaet nih apakah di bottom layar ada tambahan, dimana kalo enggak kan defaultnya di 0.&lt;/p&gt;
&lt;p&gt;Udah deh beres idenya, ini udah bisa kita implement untuk deteksi open atau close.&lt;/p&gt;
&lt;p&gt;kita contohin untuk kasus yang grab tadi caranya, kita bikin fungsi boolean untuk deteksi apakah di default 0 atau enggak&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;  bool &lt;span class=&quot;token function-name function&quot;&gt;_keyboardIsVisible&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;MediaQuery.of&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;.viewInsets.bottom &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Implementasi di codenya gimana? ya tinggal manfaatin if if gitu, lebih lengkapnya bisa tonton video saya di youtube &lt;a href=&quot;https://youtube.com/devindo&quot;&gt;devindo&lt;/a&gt; ya, dan sourcodenya ada di bawah video&lt;/p&gt;
&lt;p&gt;Semoga bermanfaat&lt;/p&gt;</content:encoded><author>fiazhari@gmail.com.com</author></item><item><title><![CDATA[Panduan Singkat Git]]></title><description><![CDATA[Sering kali saya tidak ingat untuk perintah perintah sederhana di git, ini sebenernya karena tidak tiap saat pake perintah aja, kayak bikin branch delete atau perintah yang jarang…]]></description><link>https://www.duende.id/panduan-singkat-git/</link><guid isPermaLink="false">https://www.duende.id/panduan-singkat-git/</guid><category><![CDATA[git]]></category><category><![CDATA[gitlab]]></category><category><![CDATA[github]]></category><pubDate>Mon, 02 Dec 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sering kali saya tidak ingat untuk perintah perintah sederhana di git, ini sebenernya karena tidak tiap saat pake perintah aja, kayak bikin branch delete atau perintah yang jarang kita pake pasti banyak sedikitnya lupa, nah biar enak saya dokumentasiin aja di sini biar kalo lupa tinggal buka duende&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Mengecek list branch&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;  &lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; branch &lt;span class=&quot;token parameter variable&quot;&gt;-a&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;Pindah-pindah branch&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;  &lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; checkout nama_branch&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;Membuat branch baru di lokal&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;  &lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; checkout &lt;span class=&quot;token parameter variable&quot;&gt;-b&lt;/span&gt; nama_branch_baru&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;Push branch baru&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;  &lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; push origin nama_branch_baru&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol start=&quot;5&quot;&gt;
&lt;li&gt;Delete branch&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;  &lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; push origin :nama_branch_baru&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol start=&quot;5&quot;&gt;
&lt;li&gt;Update branch kalau dari official/master repo ada update&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;  &lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; fetc nama_branch_official&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;nah itu dulu aja paling, karena ini bersifat dokumentasi ya ini bermanfaat buat saya, dan semoga buat anda juga&lt;/p&gt;
&lt;p&gt;Jangan lupa subscribe youtube saya yah &lt;a href=&quot;https://youtube.com/devindo&quot;&gt;devindo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Semoga bermanfaat&lt;/p&gt;</content:encoded><author>fiazhari@gmail.com.com</author></item><item><title><![CDATA[Crawling Instagram Gempi]]></title><description><![CDATA[Cwaling data merupakan suatu hal yang mungkin kita butuhkan untuk menganalisa sesuatu, data ini kita bisa dapet dari website atau social media, tapi ga semua social media bisa open…]]></description><link>https://www.duende.id/crawling-instagram-gempi/</link><guid isPermaLink="false">https://www.duende.id/crawling-instagram-gempi/</guid><category><![CDATA[gempi]]></category><category><![CDATA[instagram]]></category><pubDate>Tue, 16 Apr 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Cwaling data merupakan suatu hal yang mungkin kita butuhkan untuk menganalisa sesuatu, data ini kita bisa dapet dari website atau social media, tapi ga semua social media bisa open datanya contoh kayak facebook banyak sekali akses yang di tutup sehingga susah untuk crawling datanya.&lt;/p&gt;
&lt;p&gt;Nah masih seperusahaan sama facebook instagram sebagian datanya masih bisa di buka sehingga mudah untuk mendapatkan datanya, salah satu kita bisa ambil berdasarkan hastag. &lt;code class=&quot;language-text&quot;&gt;https://www.instagram.com/explore/tags/gempi/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;nah untuk mendapatkan jsonnya kita tinggal tambahin &lt;code class=&quot;language-text&quot;&gt;?__a=1&lt;/code&gt; langsung deh kita dapet file jsonnya, nah dari sini kita mulai untuk bikin scrappernya dan kali ini pake nodejs langsung saja ikuti&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;mkdir&lt;/span&gt; instagram-crawling
&lt;span class=&quot;token builtin class-name&quot;&gt;cd&lt;/span&gt; instagram-crawling
&lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; init &lt;span class=&quot;token parameter variable&quot;&gt;-y&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; i axios
&lt;span class=&quot;token function&quot;&gt;touch&lt;/span&gt; index.js&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Kalo udah buka folder/index.js dengan program editor kalian. nah selanjutnya kita coba ambil json ini dengan axios&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;const axios &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; require&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;axios&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-name function&quot;&gt;getIG&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  axios.get&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;https://www.instagram.com/explore/tags/gempi/?__a=1&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;.then&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;res &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
    console.log&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;res.data&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

getIG&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;nah udah dapetkan jsonnya kalo mau ngambil mentah itu bisa langsung ambil kita export ke file json kita pake fs&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;const axios &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; require&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;axios&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
const fs &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; require&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;fs&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-name function&quot;&gt;getIG&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  axios.get&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;https://www.instagram.com/explore/tags/gempi/?__a=1&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;.then&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;res &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    fs.writeFile&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;instagram.json&quot;&lt;/span&gt;, JSON.stringify&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;res.data, null, &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;, res &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
      console.log&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Success Writen&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

getIG&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;nah nanti otomatis akan nulisin file json yang kita kasih judul instagram kayak di atas itu, kalo di lihat json.stringify ada null dan 4 itu untuk merapikan file jsonnya.&lt;/p&gt;
&lt;p&gt;Coba kita detailin lagi, jadi maksudnya kalo itu kan json mentah nah kalo mau ngambil yang topnya aja gimana? tinggal kita bikin fungsi looping untuk node yang kita pilih disini saya contohin node top&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-name function&quot;&gt;topIG&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  axios.get&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;https://www.instagram.com/explore/tags/gempi/?__a=1&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;.then&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;res &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    const item &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; res.data.graphql.hashtag.edge_hashtag_to_top_posts.edges&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    fs.writeFile&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;topinstagram.json&quot;&lt;/span&gt;, JSON.stringify&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item, null, &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;, res &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
      console.log&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Success Writen&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;nah bedanya di responnya itu kita detailin ke item edge_hastag_to_top_posts kalo kalian lihat jsonnya pasti untuk detail di top post dapet jumlah like dan lainnya, nah kalo kalian mau download photo-photonya tinggal di foreach lalu di ambil deh itu&lt;/p&gt;
&lt;p&gt;Semoga bermanfaat
NB. jangan di manfaatkan untuk hal yang tidak berguna yah&lt;/p&gt;</content:encoded><author>fiazhari@gmail.com.com</author></item><item><title><![CDATA[React Hooks, penerapan di REST API]]></title><description><![CDATA[Ga nyangka seminggu ini rasanya happy banget setelah terjun di project react. Iya gua sebelumnya jujur belum pernah nyentuh reactjs, kalo react native sih udah tapi ampun deh mumet…]]></description><link>https://www.duende.id/react-hooks-penerapan-di-rest-api/</link><guid isPermaLink="false">https://www.duende.id/react-hooks-penerapan-di-rest-api/</guid><category><![CDATA[react]]></category><category><![CDATA[hooks]]></category><category><![CDATA[restapi]]></category><pubDate>Fri, 12 Apr 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ga nyangka seminggu ini rasanya happy banget setelah terjun di project react. Iya gua sebelumnya jujur belum pernah nyentuh reactjs, kalo react native sih udah tapi ampun deh mumet mikirin untuk mobile pake react native tuh&lt;/p&gt;
&lt;p&gt;Nah sampailah gua pertemuan dengan si react ini, kenapa? karena pertama pas gua mau jump ke proyek vue yang ya bisa di bilang gua tau kok kayaknya ribet ada library yang ga ada nih di vue tapi ada di react. Iya tau sendiri kan programmer mah pengennya yang simple ga usah ribet bikin fungsi sendiri kalo udah ada yang bikin. Nah sampailah gua pada kebutuhan hooks ini, tapi sebenernya belum butuh banget sih, tapi sekalian lah buat catatan siapa tau nanti gua butuh untuk implement ini.&lt;/p&gt;
&lt;p&gt;Oke langsung aja pertama kita bikin project react kosongan, pasti tau kan harus buka terminal? oke ikutin ini kalo udah&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;npx create-react-app du-hooks
&lt;span class=&quot;token builtin class-name&quot;&gt;cd&lt;/span&gt; du-hooks
&lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; start&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;apa bedanya npx dengan npm? sederhannya kalo npm mah harus instal atu-atu di lokal kita, kalo npx ga harus install langsung si fungsinya itu ngedownload dari cloud.&lt;/p&gt;
&lt;p&gt;nah kalo pas npm start ada eror pajang banget coba baca, kalo ada warning SKIP_PREFLIGHT_CHECK=true nah pasang aja itu di env nya kalo selain itu coba di browsing erornya&lt;/p&gt;
&lt;p&gt;karena kita fokusnya di penerapan hooks langsung saja maninan di `src/App.js&lt;/p&gt;
&lt;p&gt;hapus dan ganti dengan kode berikut biar langsung ngikutin&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; React, &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; Component &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; from &lt;span class=&quot;token string&quot;&gt;&quot;react&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;./App.css&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

class App extends Component &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function-name function&quot;&gt;constructor&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    super&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    this.state &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      data: &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token function-name function&quot;&gt;componentDidMount&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    axios.get&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;https://jsonplaceholder.typicode.com/posts&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;.then&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;res &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      const data &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; res.data&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      this.setState&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        data
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token function-name function&quot;&gt;render&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;div &lt;span class=&quot;token assign-left variable&quot;&gt;className&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;App&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;this.state.data.map&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;p &lt;span class=&quot;token assign-left variable&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;item.id&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;item.title&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;/p&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
      &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;/div&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; default App&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Perlu penjelasan ga? ah tonton video gua aja ya&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function-name function&quot;&gt;App&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  const &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;data, setData&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; useState&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  useEffect&lt;span class=&quot;token variable&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; {
    axios
      .get&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&quot;https&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;jsonplaceholder.typicode.com&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;posts&quot;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
      .then&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; setData&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;result.data&lt;span class=&quot;token punctuation&quot;&gt;))&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;, &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token builtin class-name&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;div &lt;span class=&quot;token assign-left variable&quot;&gt;className&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;App&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;data.map&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;p &lt;span class=&quot;token assign-left variable&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;item.id&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;item.title&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;/p&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;/div&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;nah di atas ini udah di convert ke hooks lebih simple kan? oke penjelasannya di video berikut ya&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://youtube.com/devindo&quot;&gt;devindo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Semoga bermanfaat&lt;/p&gt;</content:encoded><author>fiazhari@gmail.com.com</author></item><item><title><![CDATA[Deploy page atau static web di gitlab dan cara seting domain sendiri]]></title><description><![CDATA[Ketika budget client kecil dan satu sisi kita pengen ngehemat, dengan maksud karena biasanya kalo client budget kecilkan kalo ga ribet banyak maunya ya pokoknya jadi Nah sebenernya…]]></description><link>https://www.duende.id/deploy-page-atau-static-web-di-gitlab-dan-cara-seting-domain-sendiri/</link><guid isPermaLink="false">https://www.duende.id/deploy-page-atau-static-web-di-gitlab-dan-cara-seting-domain-sendiri/</guid><category><![CDATA[gitlab]]></category><category><![CDATA[gatsby]]></category><category><![CDATA[website]]></category><category><![CDATA[pages]]></category><pubDate>Sat, 23 Mar 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ketika budget client kecil dan satu sisi kita pengen ngehemat, dengan maksud karena biasanya kalo client budget kecilkan kalo ga ribet banyak maunya ya pokoknya jadi&lt;/p&gt;
&lt;p&gt;Nah sebenernya saya punya hosting yang ya lumayan gede untuk ngedeploy web-web static, tapi kan kalo banyak pasti ribet juga apalagi kalo mainan pake node, udah siap siap bengkak aja tuh hosting&lt;/p&gt;
&lt;p&gt;nah kali ini saya mau nulis cara deploy page website pake gatsby, kalian bisa aja pake hugo, vuepress atau yang lain gitu.&lt;/p&gt;
&lt;p&gt;Nah mungkin saya asumsikan kalian udah bikin web di gatsby yah, atau kalo belum kalian bisa clone themplate yang di sediain, dengan itu kalian bisa mengikutin tutorial ini&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-g&lt;/span&gt; gatsby-cli
gatsby new gatsby-site
&lt;span class=&quot;token builtin class-name&quot;&gt;cd&lt;/span&gt; gatsby-site
gatsby develop&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Dengan mengikuti shell di atas saya rasa kalian langsung bisa yah, dan gampang itu tinggal pake atau edit edit, untuk selengkapnya kalian bisa baca tutorial membuat website dengan gatsby &lt;a href=&quot;https://www.gatsbyjs.org/docs/&quot;&gt;disini&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Nah berarti udah punya kodingan yang siap kita deploy di gitlab pages, dan untuk kali ini juga saya menganggap kalian udah punya akun di &lt;a href=&quot;http://gitlab.com&quot;&gt;gitlab&lt;/a&gt; dan bisa ngepush kodingan disana&lt;/p&gt;
&lt;p&gt;Nah kalo udah ini sebernya gampang banget untuk ngedeploynya pertama atur dulu untuk path directorynya, jadi kalo kalian buka link gitlab kalian tepat di projectnya akan jadi contoh kayak gini &lt;code class=&quot;language-text&quot;&gt;https://gitlab.com/hifiaz/infohondamalang&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;nah di sini yang saya maksud path adalah &lt;code class=&quot;language-text&quot;&gt;infohondamalang&lt;/code&gt; path ini kita atur di dalam file namanya &lt;code class=&quot;language-text&quot;&gt;gatsby-config.js&lt;/code&gt; langsung aja tambahin modulnya&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;module.exports &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  pathPrefix: &lt;span class=&quot;token variable&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;`&lt;/span&gt;/infohondamalang&lt;span class=&quot;token variable&quot;&gt;`&lt;/span&gt;&lt;/span&gt;,
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;nah selanjutnya kita bikin gitlab ci, atau sederhananya perintah otomatis yang kita buat ketika kita ngepush ke gitlab. Eh ngertikan maksudnya, jadi kalo kalian mainan gatsby kan biasnaya harus gatsby develop, nah trus milih pathnya dan lain lain lah, nah ini kita bikin otomatis dengan bantuan gitlab ci.&lt;/p&gt;
&lt;p&gt;Caranya kita bikin file baru dengan nama &lt;code class=&quot;language-text&quot;&gt;.gitlab-ci.yml&lt;/code&gt; bisa manual bisa juga kayak gini&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;touch&lt;/span&gt; .gitlab-ci.yml&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;nah di dalamnya kita isi kayak gini&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;image: node:latest

cache:
  paths:
    - node_modules/

pages:
  script:
    - &lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt;
    - ./node_modules/.bin/gatsby build --prefix-paths
  artifacts:
    paths:
      - public
  only:
    - master&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Perlu penjelasan ga?
pasti perlu lah ya, intinya barus paling atas itu untuk definisiin akan node paling terbaru. Selanjutnya cache, nah kalo udah install npm kan biasanya jarang banget ada update mending di cache biar ga ngabisin resource, jadi intinya cache, apa ya bahasa indonesianya, pokonya biar inget ga instal-instal lagi gitulah. Pages, nah pertama itu biasa sama kayak &lt;code class=&quot;language-text&quot;&gt;npm install&lt;/code&gt; gitu, directory node modulesnya, trus artifact ini adalah halaman yang di akses jadi kalo di gatsby build kan jadinya ada folder public nah folder ini yang di akses, selanjutnya &lt;code class=&quot;language-text&quot;&gt;only: - master&lt;/code&gt; itu adalah branch yang akan di deploy.&lt;/p&gt;
&lt;p&gt;Kalo udah kalian bisa pergi ke menu &lt;code class=&quot;language-text&quot;&gt;Settings-&gt;Pages&lt;/code&gt; kalo udah ada &lt;strong&gt;Access pages&lt;/strong&gt; berarti udah berhasil&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 850px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/d161415ccc7e558bffa4a5ae949b9be0/c50e3/screenshot-gitlab01.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 57.27699530516431%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABYlAAAWJQFJUiTwAAABXUlEQVR42p2Sy0vDQBDG97/3pC1CFWyFtqDFB4JeRAqCB4+KB4VWvCh5tGlMmibZZDeb/ZxNH3hRW4f98bG7s8PM7LAkSSCERFGohRYoS702miiUwuPkFYPwHcybeIiiCFmWVUgpkOf5CnP2fb9EiLmfINKMozfs49Z6AEtmMWzbhmVZcBwHnueBc15lKqX8ExPYKChT0GKXH/ew0wmMaa1XbGr0imJqsCiLwXO+6ElZHRpV1JdNMe8YjxN4IxfJLAKPZ0hJ0ziGolI2paTSGafM/EIjUICvNKYlUOB/ZhrFov4V/HYDfmsXfrNOWkdIBM0aglYNn80d+Afbv0M+k8YWousLsPDuBu55F27vEE5nD053H3abtDNX76iJ6VkH4Wn7Z+g+OG4hplgsHb7AO2kjeRtUpUpdQholBKEWpaxDSR/DxHgE/vwEMXapsRKKZlDRMC8pzEyuiRI5vgBxpT1UT2KmagAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;screenshot gitlab01&quot;
        title=&quot;&quot;
        src=&quot;/static/d161415ccc7e558bffa4a5ae949b9be0/ae694/screenshot-gitlab01.png&quot;
        srcset=&quot;/static/d161415ccc7e558bffa4a5ae949b9be0/3cb16/screenshot-gitlab01.png 213w,
/static/d161415ccc7e558bffa4a5ae949b9be0/2fbbf/screenshot-gitlab01.png 425w,
/static/d161415ccc7e558bffa4a5ae949b9be0/ae694/screenshot-gitlab01.png 850w,
/static/d161415ccc7e558bffa4a5ae949b9be0/3f20e/screenshot-gitlab01.png 1275w,
/static/d161415ccc7e558bffa4a5ae949b9be0/dcb79/screenshot-gitlab01.png 1700w,
/static/d161415ccc7e558bffa4a5ae949b9be0/c50e3/screenshot-gitlab01.png 2442w&quot;
        sizes=&quot;(max-width: 850px) 100vw, 850px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Selanjutnya gimana cara ngatur domain tinggal masuk ke menu new domain, lalu isikan domain kalian, iya lagi-lagi saya anggap kalian sudah punya, contoh disini saya pakai &lt;code class=&quot;language-text&quot;&gt;infohondamalang.id&lt;/code&gt; lalu klik create new domain, untuk certificate dan key kosongin aja lebih dulu. Nah kalo ada eror https gitu, uncheck &lt;em&gt;Force HTTPS&lt;/em&gt; menu sebelumya tadi&lt;/p&gt;
&lt;p&gt;Lebih detailnya lagi atau lengkapnya untuk domain ini bisa tontoh video tutorial di youtube saya yah &lt;a href=&quot;https://youtube.com/devindo&quot;&gt;devindo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Semoga bermanfaat&lt;/p&gt;</content:encoded><author>fiazhari@gmail.com.com</author></item><item><title><![CDATA[Pindah hosting ke netlify]]></title><description><![CDATA[Hari ini tepat setelah makan mie ayam di tempat langganan, muncul niat untuk merapikan website ini, yang jadi mata pencaharian saya saat ini. Iya sebagai freelance developer harus…]]></description><link>https://www.duende.id/pindah-hosting-ke-netlify/</link><guid isPermaLink="false">https://www.duende.id/pindah-hosting-ke-netlify/</guid><category><![CDATA[hosting]]></category><category><![CDATA[gatsby]]></category><category><![CDATA[website]]></category><pubDate>Fri, 22 Mar 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hari ini tepat setelah makan mie ayam di tempat langganan, muncul niat untuk merapikan website ini, yang jadi mata pencaharian saya saat ini.&lt;/p&gt;
&lt;p&gt;Iya sebagai freelance developer harus sering sering nampilin portofolio, selain dari linkedin yang menurut saya terlalu tertutup, maksudnya harus login dulu untuk lihat profile orang, ya mending untuk pindah ke personal web orang bebas baca dan yang jelas kalian harus tau gatsby keren banget.&lt;/p&gt;
&lt;p&gt;Saya menggunakan framework gatsby ini sudah hampir satu tahun lebih, karena kemudahan dan ga ribet, dan udah beberapa project yang terselesaikan dengan gatsby ini.&lt;/p&gt;
&lt;p&gt;Tapi pastilah ya di mana-mana kalo udah sibuk lupa akan rumah, sama kayak saya ini lupa untuk ngurus website ini, karena pengennya cepet akhirnya saya ambil thema website ini dari Tania Rascia, developer wanita yang selalu saya kagumi.&lt;/p&gt;
&lt;p&gt;Awalnya mikir untuk ngebuild di hosting pribadi, tapi di pikir-pikir males ribet ngedeploy deploy. Akhirnya dengan senang hati pindah ke netlify, iya udah tau dari lama karena si netlify ini kalo ga salah memang paling awal nyediain plugin untuk gatsby, jadi paling mudah dan sering di pakai developer, selain itu free. Iya ini paling penting &lt;strong&gt;free&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Dengan netlify ini kita juga bisa custome domain, tapi cuma satu ya kalo mau lebih harus bayar, berapanya silahkan tengok langsung ke &lt;a href=&quot;https://www.netlify.com&quot;&gt;netlify&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Dengan website tampilan baru ini juga saya akan mindahin script yang tadinya saya tulis untuk serial di youtube disini. Iya memang sebelumnya saya malas untuk nulis di blog, tapi ya ga ada salahnya kan kalo sharing-sharing.&lt;/p&gt;
&lt;p&gt;Semoga bermanfaat&lt;/p&gt;</content:encoded><author>fiazhari@gmail.com.com</author></item></channel></rss>