<?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" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Qasir - Medium]]></title>
        <description><![CDATA[Aplikasi untuk membantu usahawan berkembang lebih baik dimulai dari pencatatan transaksi - Medium]]></description>
        <link>https://medium.com/qasir?source=rss----781739e3b995---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>Qasir - Medium</title>
            <link>https://medium.com/qasir?source=rss----781739e3b995---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Thu, 12 Nov 2026 06:09:59 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/qasir" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Learning About Cucumber]]></title>
            <link>https://medium.com/qasir/learning-cucumber-9225be021bb4?source=rss----781739e3b995---4</link>
            <guid isPermaLink="false">https://medium.com/p/9225be021bb4</guid>
            <category><![CDATA[pandujuang]]></category>
            <category><![CDATA[qasir]]></category>
            <category><![CDATA[cucumber]]></category>
            <category><![CDATA[information-technology]]></category>
            <dc:creator><![CDATA[Firman Wihanarko]]></dc:creator>
            <pubDate>Fri, 07 Oct 2022 06:37:06 GMT</pubDate>
            <atom:updated>2022-10-08T02:23:19.195Z</atom:updated>
            <content:encoded><![CDATA[<h3><strong>Chapter 1: Getting Started with Cucumber</strong></h3><h4><strong>About Cucumber</strong></h4><p>Cucumber is a tool which runs executable specifications of the software. Specifications or called as “features” are written in structured natural language. Cucumber executes a feature by mapping each of its steps to a “step definition” written in the programming language supported by that implementation of Cucumber. Cucumber is implemented in many programming languages including Ruby, Java, and Javascript. It is also translated into many human languages.</p><p>Cucumber was written to support the agile methodology called Behavior-Driven Development (BDD). In BDD, one begins development outside-in by writing acceptance tests that describe the software’s functionality from the user’s point of view (rather than from a programmer’s point of view such as in unit tests). Cucumber features serve as these acceptance tests. In general, Cucumber features are human-readable documentation which is also an executable test suite, meaning that documentation and tests always agree.</p><p>Cucumber is useful in communicating with non-programmer stakeholders about documentation and tests. It also allows programmers to write tests at a conceptual level without irrelevant programming-language concerns. Cucumber is most often used to specify and test web applications, using a browser driver such as Selenium or PhantomJS. However, it can be used with any software that can be executed and whose state or results can be determined from the programming language that a Cucumber implementation supports.</p><h4><strong>Other Documentation</strong></h4><p>Official documentation is at <a href="https://cucumber.io/docs.">https://cucumber.io/docs.</a> Documentation generated from the Cucumber features which describe Cucumber implementations is at:</p><p>• JavaScript: <a href="https://relishapp.com/cucumber/cucumber-js/docs">https://relishapp.com/cucumber/cucumber-js/docs</a></p><p>• Ruby: <a href="https://relishapp.com/cucumber/cucumber/docs">https://relishapp.com/cucumber/cucumber/docs</a></p><p><a href="https://relishapp.com/explore">https://relishapp.com/explore</a> includes some other Cucumber-related tools and examples, although not, unfortunately, Cucumber-JVM.</p><p><strong>This topic</strong></p><p>This topic should only give a few examples which introduce the reader to Cucumber concepts. Other sections will give complete examples of installation, command-line, and IDE usage, features, step definitions, etc.</p><p><strong>Examples:</strong></p><p><strong>A Cucumber feature</strong></p><p>Cucumber uses Gherkin syntax to describe your software’s behaviors in structured natural language. As such Cucumber is <strong>not</strong> a test framework (a common misunderstanding), but a <em>system documentation framework</em>, not very different from others like Use Case Scenario. The common misunderstanding is due to the fact Cucumber documentation <em>can be automated in order to ensure it reflects the real system behavior</em>. A Cucumber documentation suite is composed of Features, each describing a feature of your software, written in Gherkin and hosted in its own file. By organizing those files into a directory structure you can <em>group</em> and <em>organize</em> features:</p><ul><li>login/ =</li></ul><ol><li>login.feature</li><li>spv_login.feature</li><li>operator_login.feature</li></ol><ul><li>GettingStarted/ =</li></ul><ol><li>beranda_menu.feature</li><li>beranda_navbar.feature</li><li>operator_navbar.feature</li></ol><p>Each Feature is a plain text file composed by an optional, unstructured, purely informational introductory section and one or more Scenarios, each one representing a usage condition or use case.</p><p><strong>Example:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*FtyXkYxWqIYGhINha_TQ8w.png" /></figure><p>Each line beginning with <em>Given</em>, <em>When</em>, <em>And</em>, <em>But</em> or <em>Then</em> is called a Step. Any step can begin with any of those words regardless of order, but it is conventional to use them in the most natural way possible. Features can also be organized via Tags, annotations the editor can put on a Feature or a Scenario to further categorize it. Executability of a Feature is achieved via <em>glue</em> code which can be written in many different languages (Java, Ruby, Scala, C/C++): each Step is matched against the glue code in order to identify Step Definitions (commonly abbreviated to <em>StepDef</em>) via regular expressions. Every Step can have only one associated Step Definition. When a Feature is executed each composing Scenario is executed, meaning each StepDef matching the Steps in every Scenario gets executed.</p><p><strong><em>For the next chapter, I will explain the Features on cucumber, see you later …</em></strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9225be021bb4" width="1" height="1" alt=""><hr><p><a href="https://medium.com/qasir/learning-cucumber-9225be021bb4">Learning About Cucumber</a> was originally published in <a href="https://medium.com/qasir">Qasir</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Tips Menabung untuk Berlibur]]></title>
            <link>https://medium.com/qasir/tips-menabung-untuk-berlibur-72c3a5c3aa13?source=rss----781739e3b995---4</link>
            <guid isPermaLink="false">https://medium.com/p/72c3a5c3aa13</guid>
            <category><![CDATA[money]]></category>
            <category><![CDATA[financial]]></category>
            <category><![CDATA[holidays]]></category>
            <category><![CDATA[money-management]]></category>
            <category><![CDATA[traveling]]></category>
            <dc:creator><![CDATA[Yansentahya]]></dc:creator>
            <pubDate>Mon, 03 Oct 2022 09:14:17 GMT</pubDate>
            <atom:updated>2022-10-03T09:39:06.898Z</atom:updated>
            <content:encoded><![CDATA[<p><em>Ada pepatah “Sedia payung sebelum hujan”, mengapa tidak menabung lalu berlibur kemudian.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/0*sRBv-6fedRsYPQYt" /></figure><p>Hai sobat, bagaimana kabarnya? Semoga semua selalu dalam lindungan Tuhan, sehat jasmani (juga jiwanya) dan selalu dilancarkan rezekinya. <em>Pandemic</em> hampir berlalu dan sudah mulai ada banyak titik terang untuk semua sektor usaha di tanah air kita tercinta ini, etssss tapi tetap jaga daya tahan tubuh dan kesehatan ya gengs agar kita semua tetap dalam kondisi yang<em> fit</em> dalam menjalani aktivitas (dalam keluarga, pekerjaan dan bermasyarakat).</p><p>Seperti yang saya bilang di atas <em>pandemic</em> Covid-19 hampir berlalu di tanah air kita Indonesia bahkan dunia secara global dan kita berharap kondisi ini akan terus membaik dari hari ke hari. Sebenarnya Covid-19 tidak akan berlalu dari muka bumi ini (menurut saya ya, hehehe), seperti flu pada biasanya, Covid-19 akan berdampingan dengan kita dan tinggal kita saja yang harus dapat membiasakan diri dengan kondisi ini. Dalam artian membiasakan diri seperti tetap menjaga daya tahan tubuh, menjaga pola hidup sehat, mengkonsumsi makanan yang bergizi dan yang paling penting menjaga pola pikir kita berada pada <em>Positive Mindset (Positive Thinking) </em>karena hal ini dapat menghasilkan pemikiran-pemikiran dan sikap-sikap yang baik yang dapat membuat kita menjadi bersemangat, melakukan hal-hal yang benar dan menjadi bahagia.</p><p>Nah, bicara <em>positive thinking</em> lalu kita juga sudah menyinggung perihal kondisi <em>pandemic</em> yang semakin membaik dan ujung-ujungnya kata ‘BAHAGIA’ yang menjadi tujuan hampir semua orang yang ada dimuka bumi ini. Tolak ukur bahagia setiap orang itu berbeda-beda dan beberapa ini yang saya coba perkirakan seperti ‘harta yang melimpah’, ‘keluarga’, ‘karir yang menjulang’ dan mungkin saja ‘mampu berkeliling dunia’ juga dapat menjadi tolak ukur bahagia seseorang. <em>By the way</em>, tolong jangan diperdebatkan ya untuk beberapa tolak ukur bahagia barusan karena tidak semua punya ukuran yang sama dalam kebahagiaan, namanya juga prediksi :D. Tapi kalau ditanya ke semua orang siapa yang mau punya kesempatan (uang dan waktu) berkeliling dunia <em>a.k.a</em> ‘jalan-jalan’ saya yakin banyak yang bilang mau apalagi gratis ya. Tapi sayangnya aktivitas ‘jalan-jalan’ atau langsung kita bilang ‘berlibur’ juga membutuhkan uang yang tidak sedikit, ya kecuali sekedar jalan-jalan di pekarangan rumah (itu juga kalo ada ya) atau sekedar ‘JJS’ jalan-jalan sore di keramaian pasar atau lapangan bola atau pinggir jalan raya tentu tidak butuh uang banyak.</p><p>Dikarenakan ‘jalan-Jalan’ <em>a.k.a </em>‘berlibur’ entah dalam negeri atau keluar negeri itu membutuhkan uang atau dana yang tidak sedikit dan daripada temen-temen yang tadinya mau cari h<em>ealing</em> untuk menghilangkan penat baik dalam pekerjaan atau rutinitas harian yang membosankan lalu mengharapkan ‘bahagia’ tapi malah ujung-ujungnya teman-teman tidak bahagia karena setelah ‘jalan-jalan’ atau ‘liburan’ tagihan karena menghutang untuk liburan menyusul. Ya, saran saya tahan-tahan dulu saja kalo belum ada uangnya untuk jalan-jalan daripada ngutang hanya untuk jalan-jalan. Tapi buat temen-temen yang mau mempersiapkan liburan baik sendiri atau bersama keluarga, berikut saya berikan ‘Tips Menabung untuk Berlibur’.</p><p><strong>1. Tentukan Waktu dan Tujuan liburan</strong></p><p>Tips yang pertama yaitu menentukan tujuan dan waktu untuk berlibur kita. Saya yakin teman-teman pernah dengan ‘<em>peak seaso</em>n’ yaitu waktu dimana orang-orang kebanyakan melakukan pemesanan tiket, perjalanan ataupun aktivitas. Hal ini sangat menentukan besarnya biaya perjalanan yang akan kita tanggung jika kita memilih waktu yang sama (<em>peak season</em>) saat berlibur. Saran saya kalau bisa hindari waktu yang menjadi ‘<em>peak season</em>’ di setiap tahunnya seperti hari raya keagamaan, hari raya nasional, atau tutup tahun. Selanjutnya yaitu menentukan tujuan liburan. Kalau saya semakin jauh perjalan secara otomatis akan memakan biaya transportasi yang tidak sedikit baik darat, laut maupun udara. Dalam menentukan tujuan liburan juga membantu kita untuk tahu kemampuan kita untuk berlibur di lokasi yang kita tuju, baik secara finansial maupun waktu cuti yang kita miliki. Jangan sampai kita sudah beli paket liburan tapi waktunya tidak sesuai dengan jatah cuti yang kita punya.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/0*qqa00eCpN4h-9E_n" /></figure><p><strong>2. Tentukan Apakah Anda Akan Berlibur Sendiri Atau Tidak</strong></p><p>Tips yang kedua ini sederhana banget buat kita semua, sebenarnya berawal dari tujuan berlibur kita apakah untuk menikmati waktu sendiri atau liburan bersama keluarga. Jangan sampai uang yang kita punya yang tadinya hanya untuk berlibur sendiri jadi membengkak karena mengajak keluarga. Kecuali tabungannya banyak ya gengs monggo dilanjutkan :D</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/860/0*2YaMtbLK1vfFf3c8" /></figure><p><strong>3. Buat Anggaran Biaya Liburan dengan Terperinci</strong></p><p>Tips yang ini menjadi sangat krusial karena bicara anggaran itu bicara uang juga bicara tabungan yang akan kita siapkan. Jangan sampai tabungan kita jauh lebih kecil nilainya pada saat kita berada di lokasi liburan yang sedang kita jalankan, alhasil kita hanya bisa gigit jari karena uang yang kita siapkan tidak mencukupi aktivitas liburan yang sedang kita jalankan. Teman-teman bisa membuat <em>itinerary</em> atau rencana perjalan (pada tips nomor satu di atas). Nah didalam <em>itinerary</em> itu ada bagian biaya dan rincian biaya liburan mulai dari biaya tiket keberangkatan, tiket pulang, biaya sewa penginapan, biaya makan harian di lokasi, biaya sewa alat atau wahana, biaya membeli perlengkapan liburan (yang belum ada seperti sepatu, topi, kacamata dll yang dirasa butuh) sampai biaya berbelanja oleh-oleh. Untuk rincian anggaran sebenarnya bisa langsung <em>googling</em> saja pada halaman <em>browser</em> sesuai dengan lokasi liburan kalian atau teman-teman bisa langsung menghubungi <em>contact person</em> (nomor telepon atau <em>handphone</em>) pihak pengelola lokasi liburan yang akan menjadi tujuan. Terlihat banyak dan ribet ya gengs, tapi kalo dijalankan pasti liburan kalian akan lebih nyaman karena dengan penyusunan anggaran ini membantu teman-teman dalam mempersiapkan uang (tabungan) untuk liburan kalian.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/900/0*Ymii4eEYFbdlxxWH" /></figure><p><strong>4. Buat Tabungan atau Rekening Khusus</strong></p><p>Nah pada tips ini dianjurkan kita yang mau berlibur ada baiknya kita membuat rekening khusus untuk aktivitas liburan, tujuannya agar biaya harian kita tidak tercampur dengan tabungan liburan kita. Ada kemungkinan uang tabungan liburan kita dapat terpakai oleh kita secara tidak sengaja untuk kegiatan atau malah untuk jajan makanan. Kalo rekeningnya terpisahkan aman tuh tabungan untuk berlibur sampai waktu berliburnya. Kalo males buka rekening dan kondisi rumah aman beli celengan lalu mulailah menabung di celengan itu dan jangan dicongkel-congkel ya celengannya. Atau pake cara lain uang kita disimpan sama orang tapi tetap aman bisa diambil pada saat terakhir yaitu ikutan arisan kantor trus ambilnya paling terakhir :D</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/0*LfS90biwuyNDtZmM" /></figure><p><strong>5. Konsisten Menabung dengan Mengurangi Pengeluaran Tidak Penting</strong></p><p>Konsisten menabung itu harus pasti ya gengs, karena kalo kita tidak konsisten kemungkinan uang tabungan kita tidak mencukupi sesuai anggaran yang sudah kita rencanakan dari awal. Pada tahap ini saran saya kurang-kurangan melakukan pengeluaran yang tidak penting misalnya sudah punya 3 sepatu untuk bekerja tidak perlu beli sepatu (saat dapat tawaran) karena harganya sedang diskon atau yang biasanya minum boba 5–6 kali seminggu kurangin jadi 1 atau 2 kali saja dalam seminggu jadi uang untuk beli bobanya bisa disisihkan untuk tabunngan liburan. Saya yakin teman-teman tidak ingin jadwal liburannya terganggu karena gagal menabung yang disebabkan oleh sifat yang tidak konsisten dalam menabung.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*TAGArfcbthUJkJZs" /></figure><p><strong>6. Sisihkan dari Gaji dengan Otomatis</strong></p><p>Kalo yang satu ini cara kita untuk konsisten yaitu langsung menyisihkan sebagian gaji kita (sesuai anggaran tabungan liburan) di setiap bulannya. Misalnya gaji 4 juta bisa langsung disisihkan 10 persen transfer langsung ke rekening tabungan liburan kita secara otomatis pada <em>internet banking</em>. Hal ini sangat membantu kamu untuk tetap konsisten dalam menabung apalagi untuk rencana liburan 1 atau 2 tahun ke depan, mengingat godaan pada saat menabung itu lebih menggiurkan sifatnya :D</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/0*nJiq2KS0JJyS70kl" /></figure><p><strong>7. Cari Penghasilan Tambahan Seperti Hobi yang Dapat Dijadikan Penghasilan Tambahan</strong></p><p>Pada tips yang satu ini bisa dilakukan bagi teman-teman yang ingin tabungannya lebih cepat tercukupi untuk berlibur yaitu mencari penghasilan tambahan. Khususnya mereka yang mempunyai hobi yang bisa dijadikan uang seperti tulis-menulis, <em>design</em> (atau menggambar) dan menjadi fotografer dadakan mungkin tidak seberapa tapi bisa menambah tabungan liburan kita. Atau bagi teman-teman yang punya waktu libur sabtu dan minggu bisa ikut <em>crew event </em>atau bekerja paruh waktu (<em>part time</em>) yang dibayar harian agar tidak mengganggu pekerjaan utama dari pada di kamar seharian mending saat libur mending tambah pengalaman dan tabungan liburan.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*T38qkHmTg0JFh2FO" /></figure><p><strong>8. Menjaga Kesehatan Tubuh</strong></p><p>Yang terakhir ini tipsnya tidak kalah penting ya gengs. Mengapa kesehatan tubuh menjadi salah satu tips pada topik ini? Dikarenakan jika tubuh kita sakit-sakitan karena pola hidup yang tidak sehat maka dapat dipastikan uang tabungan yang kita tabung tadinya untuk berlibur akan terpakai untuk biaya pengobatan kita selama kita sakit. Kalo kita sakit, waktu cuti akan focus untuk penyembuhan tubuh kita dan tujuan liburan kita akan tertunda karena tabungan dan waktu kita habis terpakai untuk pengobatan. Hal ini menjadi sangat penting mengingat kesehatan itu jauh lebih penting dari aktivitas liburan yang sudah kita rencanakan jauh-jauh hari, maka dari itu gengs tetap jaga kesehatan dan jalankan pola hidup sehat setiap harinya.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*fThIi2lDHUxZKI5d" /></figure><p>Gimana gengs tips menabung untuk berlibur di atas? Kalo teman-teman punya rencana liburan untuk 3 atau 6 bukan ke depan bisa banget ya gengs tip-tips di atas diterapkan dijamin liburannya akan bahagia banget dan tujuan <em>healing</em>-nya jadi <em>HEALING</em> bangeettt, deh. Oh iya, segitu dulu ya gengs untuk <em>article </em>kali ini. Kalo kalian punya ‘tips lain menabung untuk liburan’ bisa infoin kita ya gengs melalui kolom komentar di bawah.</p><p>Stay healthy, stay happy &amp; God bless! 😉</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=72c3a5c3aa13" width="1" height="1" alt=""><hr><p><a href="https://medium.com/qasir/tips-menabung-untuk-berlibur-72c3a5c3aa13">Tips Menabung untuk Berlibur</a> was originally published in <a href="https://medium.com/qasir">Qasir</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Pentingnya Memperhatikan Kesehatan Mental untuk Diri Sendiri]]></title>
            <link>https://medium.com/qasir/pentingnya-memperhatikan-kesehatan-mental-untuk-diri-sendiri-d5805ef21bea?source=rss----781739e3b995---4</link>
            <guid isPermaLink="false">https://medium.com/p/d5805ef21bea</guid>
            <category><![CDATA[kesehatan-mental]]></category>
            <category><![CDATA[konsultasi]]></category>
            <category><![CDATA[pandujuang]]></category>
            <category><![CDATA[mindfulness]]></category>
            <category><![CDATA[qasir]]></category>
            <dc:creator><![CDATA[Mumun]]></dc:creator>
            <pubDate>Mon, 03 Oct 2022 09:01:33 GMT</pubDate>
            <atom:updated>2022-10-03T09:01:33.373Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*HvMHnWyRm6MJZapLwK5M2g.png" /></figure><p>Mengapa isu kesehatan mental itu penting? Mengapa kita perlu memperhatikan isu tersebut?</p><p>Kesehatan mental itu sama pentingnya dengan kesehatan fisik kita. Mental yang sehat akan membuat pikiran kita menjadi positif sehingga tubuh akan berfungsi dengan baik secara emosional, psikologis, dan akan mempengaruhi cara berfikir, merasakan, dan berperilaku.</p><h3><strong>Dampak atau Resiko Jika Kita Tidak Memperhatikan Kesehatan Mental</strong></h3><p>Ada tiga dampak yang mungkin terjadi akibat buruknya kesehatan mental seseorang.</p><p>1. Hubungan Menjadi Tidak Harmonis</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/678/1*g7U5ijMRH1Ra1njeUZZTrg.jpeg" /></figure><p>Menurut saya, dampak yang paling ringan dari buruknya kesehatan mental seseorang adalah tidak harmonisnya sebuah hubungan. Baik dalam hubungan keluarga maupun hubungan sosial.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*T5jSXYCvKzfWrbI5OvSZJQ.jpeg" /></figure><p>Apa contoh dampak terhadap pekerjaan jika kesehatan mental terganggu? Dalam bekerja pun akan menjadi kurang produktif atau bahkan menjadi tidak semangat untuk bekerja.</p><p>2. Kesehatan Fisik Terganggu</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/670/1*khj4wOUI2zP7Gbwf8nMTnw.jpeg" /></figure><p>Dikarenakan kesehatan mental dan fisik saling berkaitan, maka dari itu jika kesehatan mental seseorang buruk, otomatis akan mempengaruhi kesehatan fisiknya pula.</p><p>3. Bunuh Diri</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*A8VxFw6ZqfvanLkgbhXptA.jpeg" /></figure><p>Dampak yang terburuk atau terparah dari akibat buruknya kesehatan mental seseorang ialah ia bisa nekat mengakhiri hidupnya sendiri atau bunuh diri.</p><h3><strong>Manfaat Jika Kita Memperhatikan Kesehatan Mental</strong></h3><p>Adapun kesehatan mental yang baik juga dapat membantu menentukan cara mengelola stres, berhubungan dengan orang lain, dan membuat sebuah pilihan. Jika kesehatan mental terganggu, pikiran, suasana hati, dan perilaku akan terpengaruh sehingga kondisi fisik dan kualitas hidupmu akan menurun.</p><p>Berikut beberapa cara pandang yg salah tentang kesehatan mental.</p><p><strong>Pertama, </strong>tidak sedikit orang lain yang beranggapan bahwa masalah kesehatan mental berarti punya gangguan mental dan mempunyai gangguan mental itu sering diartikan ‘Gila’.</p><p>Masyarakat menganggap hal ini kemungkinan dikarenakan gangguan mental berarti membahayakan. Padahal tidak semua yang memiliki gangguan mental gak bisa mengontrol diri atau menyakiti orang lain.</p><p><strong>Kedua,</strong> memandang masalah kesehatan mental merupakan hal yang gak penting, dan menganggapnya sebagai kesalahan diri sendiri. Contohnya yang mungkin pernah kamu dengar, yaitu ‘kurang iman bahkan ada yang bilang kurang nya bersyukur’.</p><p><strong>Ketiga,</strong> orang yang mempunyai gangguan mental sering dianggap sebagai suatu kelemahan, sehingga malu untuk meminta bantuan. Khususnya pada pria, karena adanya anggapan bahwa pria merupakan sosok yang kuat dan gak cengeng, biasa dikenal dengan <em>toxic masculinity</em>.</p><h3><strong>Siapa Ahli yang Terpercaya Jikalau Kita Mau Memulai untuk Memperhatikan Kesehatan Mental?</strong></h3><p>Tergantung pada apa keluhan mentalnya dan tergantung seberapa parah intensitas keluhannya.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/1*Z96vzoeMTcpNiBJ52dDQRA.jpeg" /></figure><p>Contoh untuk keluhannya sudah sampai ada gejala di badan, seperti sakit lambung, maka kamu sudah butuh bantuan penanganan oleh dokter medis.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/685/1*4pAMtIF9m6tFtDfLXgONSg.jpeg" /></figure><p>Kalau keluhannya sudah sampai<em> panic attack</em> dengan kategori parah, kamu bisa memilih untuk konsultasi ke psikiater atau psikolog.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/653/1*B5YF02cChWOP8T1mtvG6WA.jpeg" /></figure><p>Kalau kamu sudah merasa jauh lebih baik tetapi mau belajar agar bisa lebih sadar dan mengerti diri sendiri, kamu bisa ke praktisi <em>mindfulness</em>.</p><p>Nah, kalau di <strong>Qasir</strong>, kita gak perlu khawatir kesehatan mental bakal terganggu. Karena <strong>Qasir</strong> menyediakan fasilitas konsultasi dengan psikolog profesional, sebagai salah satu solusi jikalau sudah mulai merasa ada yang salah dengan kesehatan mental.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d5805ef21bea" width="1" height="1" alt=""><hr><p><a href="https://medium.com/qasir/pentingnya-memperhatikan-kesehatan-mental-untuk-diri-sendiri-d5805ef21bea">Pentingnya Memperhatikan Kesehatan Mental untuk Diri Sendiri</a> was originally published in <a href="https://medium.com/qasir">Qasir</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Insomnia — REST API Client alternatif pengganti Postman?]]></title>
            <link>https://medium.com/qasir/insomnia-rest-api-client-alternatif-pengganti-postman-fe8b53ad7a09?source=rss----781739e3b995---4</link>
            <guid isPermaLink="false">https://medium.com/p/fe8b53ad7a09</guid>
            <category><![CDATA[information-technology]]></category>
            <category><![CDATA[insomnia]]></category>
            <category><![CDATA[qasir]]></category>
            <category><![CDATA[postman]]></category>
            <dc:creator><![CDATA[Firda Maryana]]></dc:creator>
            <pubDate>Mon, 03 Oct 2022 04:58:24 GMT</pubDate>
            <atom:updated>2022-10-03T04:58:24.451Z</atom:updated>
            <content:encoded><![CDATA[<h3><strong>Insomnia REST API Client Sebagai Alternatif Pengganti Postman</strong></h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/935/0*yXgX3QVOr_0pYwuh" /></figure><p>Sekarang ini perkembangan teknologi semakin pesat, sehingga orang-orang menjadi lebih mudah dalam menyelesaikan pekerjaannya. Kemajuan teknologi ini juga ditandai dengan maraknya aplikasi yang telah berhasil dibuat di berbagai macam <em>platform</em>. Sebagian besar, aplikasi yang sering kita gunakan setiap harinya itu adalah aplikasi yang memiliki arsitektur <em>Client-Server</em>. Aplikasi itu sendiri dianggap sebagai <em>Client</em> atau yang biasa dikenal dengan istilah <em>Front-End</em>, yang mana aplikasi itu perlu terkoneksi dengan sebuah s<em>erver</em> atau yang biasa disebut <em>Back-End</em>.</p><p>Koneksi atau komunikasi yang terjadi antara <em>Front-End</em> dan <em>Back-End</em> itu melalui sebuah protokol yaitu HTTP. <em>Client</em> dapat langsung memanggil Layanan HTTP yang terdapat di <em>server </em>dengan mengirimkan permintaan HTTP. Di sinilah REST API muncul. REST API didefinisikan sebagai serangkaian batasan tentang bagaimana arsitektur sebuah sistem terdistribusi seharusnya berperilaku. Artikel ini akan membahas mengenai insomnia dan<em> postman</em> serta <em>plus minus</em> dari kedua API<em> testing tools</em> tersebut.</p><h3><strong>Apa itu Insomnia &amp; Postman?</strong></h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/988/0*rzMdcU1CMkJR9bEw" /></figure><p>Insomnia<strong> </strong>adalah<strong> </strong>sebuah aplikasi <em>open source</em> yang berfungsi sebagai <em>REST CLIENT</em> untuk uji coba (<em>testing</em>) <em>REST </em>API<strong> </strong>sedangkan Postman<em> </em>juga merupakan sebuah aplikasi untuk <em>testing REST </em>API. Insomnia dan Postman biasa digunakan oleh <em>developer</em> pembuat API sebagai <em>tools</em> untuk menguji API yang telah mereka buat atau biasanya juga digunakan oleh <em>Quality Assurance</em> (QA) untuk melakukan <em>testing </em>API yang telah selesai dibuat.</p><h3><strong>Plus Minus Insomnia dan Postman</strong></h3><p>Insomnia dijuluki sebagai <em>The most intuitive cross-platform REST </em>API<em> Client</em>. Kuat dengan manajemen <em>cookie</em>, <em>environment variable</em>, pembuatan kode, dan otentikasi untuk Mac, Window, dan Linux. Selain itu <em>insomnia</em> juga menawarkan beberapa fitur lain yang menarik seperti <em>import/export</em>, SSL <em>client certificates</em>. Insomnia bersifat <em>open source</em> (gratis) serta ‘<em>easy to use</em>’ (mudah digunakan) sehingga banyak orang yang tertarik untuk menggunakannya.</p><p>Sedangkan Postman, adalah satu-satunya API <em>Development Environment</em> yang sangat lengkap, digunakan oleh hampir lima juta pengembang dan lebih dari 100.000 perusahaan di seluruh dunia. Adapun beberapa fitur utama Postman diantaranya yaitu <em>Compact layout</em>, HTTP <em>requests with file upload</em>, <em>support Formatted</em> API <em>responses for </em>JSON <em>and</em> XML.</p><h3><strong>Membandingkan Insomnia dan Postman</strong></h3><p>Gambar di bawah ini menjelaskan beberapa perbandingan antara Insomnia dan Postman.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZuMy9N6JBUS1lSpOqDXImw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*NBnbyebSoWQ2caUARVmPdA.png" /></figure><h3><strong>Kesimpulan dan Saran</strong></h3><p>Insomnia dan Postman sama-sama merupakan <em>Rest</em> API <em>Testing tools </em>yang cocok digunakan untuk <em>testing</em> API. Keduanya dapat digunakan sesuai dengan <em>preference</em> masing-masing orang. Apabila kamu pengguna baru mungkin lebih cocok menggunakan Insomnia karena tampilannya yang lebih sederhana sehingga sangat mudah digunakan dan dipahami. Insomnia memiliki fitur yang tak kalah lengkap dibandingkan dengan Postman, selain itu Insomnia juga memiliki fitur <em>multi environment</em> dan <em>private environment</em> yang tidak ada di Postman. Namun jika kamu sudah biasa melakukan <em>testing </em>API, kamu bisa menggunakan Postaman karena Postman memiliki <em>Development Environment</em> yang sangat lengkap.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=fe8b53ad7a09" width="1" height="1" alt=""><hr><p><a href="https://medium.com/qasir/insomnia-rest-api-client-alternatif-pengganti-postman-fe8b53ad7a09">Insomnia — REST API Client alternatif pengganti Postman?</a> was originally published in <a href="https://medium.com/qasir">Qasir</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[A better way to write “if .. else”]]></title>
            <link>https://medium.com/qasir/a-better-way-to-write-if-else-c2d590511484?source=rss----781739e3b995---4</link>
            <guid isPermaLink="false">https://medium.com/p/c2d590511484</guid>
            <category><![CDATA[engineering]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[coding]]></category>
            <category><![CDATA[tips]]></category>
            <category><![CDATA[tips-and-tricks]]></category>
            <dc:creator><![CDATA[Rio Anggara]]></dc:creator>
            <pubDate>Mon, 03 Oct 2022 04:48:49 GMT</pubDate>
            <atom:updated>2022-10-03T04:48:49.320Z</atom:updated>
            <content:encoded><![CDATA[<h3>A Better Way to Write ‘if .. else’</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*YTu88CLbayco5ZcE" /><figcaption>Photo by <a href="https://unsplash.com/@cdr6934?utm_source=medium&amp;utm_medium=referral">Chris Ried</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>We, as programmers, use to deal with ‘if .. else’ in our work. Although it’s all working, some of them maybe complex, nested and hard to read. This can be avoided by using small blocks of code for every condition.</p><p>For example, we have a function named is_normal_car(vehicle) that returns a boolean value from a vehicle class. The function has four conditions that have to be met. The conditions are:</p><ul><li>Have four tires.</li><li>Weight between 1500 kg and 3000 kgs.</li><li>Engine size between 1000 cc and 2300 cc.</li><li>Price between 25000 USD and 50000 USD.</li></ul><p>The code will look like this.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*uwZmpzMCZqKxitM-rEZtPQ.png" /><figcaption>is_normal_car() function</figcaption></figure><p>The readability in this code is bad. Why? Because the conditions are nested and we need to go through all conditions to get the result. Not only that, but also if we want to look at the result from a condition that isn’t met, we need to look down the ‘else’ from that condition that is separated by more than one line. We can optimize this code to make it more readable by separating every condition into a small block of code.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3b04vu3GMVHmN-hPs8JD3A.png" /><figcaption>is_normal_car() function, but better</figcaption></figure><p>In this code, the code readability increased. We can see the result of every condition in a shorter line. By negating every condition and set False as the return value, the code becomes more readable since we don’t need to put a condition inside another condition and become nested conditions.</p><p>Let’s try the function with some cases.</p><ul><li>A vehicle has 3 tires. Function will return False as it doesn’t meet the first condition where the tires has to be four.</li><li>A vehicle has 4 tires, weighs 2500 pounds, has engine size 3000, priced at 55000 USD. Function will return False as it doesn’t meet the third condition where the vehicle’s engine size has to be higher than or equal 1000 and lower than or equal 3000.</li></ul><p>There are many ways to improve ‘if .. else’ in your code, but that’s one way to do it. I hope you enjoyed and learned something from reading this article.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c2d590511484" width="1" height="1" alt=""><hr><p><a href="https://medium.com/qasir/a-better-way-to-write-if-else-c2d590511484">A better way to write “if .. else”</a> was originally published in <a href="https://medium.com/qasir">Qasir</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Menjaga Kualitas Program yang Kita Tulis]]></title>
            <link>https://medium.com/qasir/menjaga-kualitas-program-yang-kita-tulis-16819d14d1df?source=rss----781739e3b995---4</link>
            <guid isPermaLink="false">https://medium.com/p/16819d14d1df</guid>
            <category><![CDATA[qasir]]></category>
            <category><![CDATA[good-programmer]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[pandujuang]]></category>
            <dc:creator><![CDATA[Mohamad Sulton Hasanuddin]]></dc:creator>
            <pubDate>Sat, 01 Oct 2022 10:52:41 GMT</pubDate>
            <atom:updated>2022-10-04T06:10:57.487Z</atom:updated>
            <content:encoded><![CDATA[<p>Semua <em>programmer </em>pasti bisa membuat program dengan baris kode yang ditulisnya. Namun ada yang membedakan antara <em>programmer</em> yang baik dan yang kurang baik. Berikut adalah perbedaannya.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*nUS09m87M3xdujsD" /><figcaption>Photo by <a href="https://unsplash.com/@jstrippa?utm_source=medium&amp;utm_medium=referral">James Harrison</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h4><strong>Menulis Kode untuk Manusia</strong></h4><p>Semua <em>programmer </em>menulis kode agar bisa dibaca dan diintrepretasikan oleh mesin (komputer) menjadi sebuah program. Namun <em>programmer </em>yang baik akan menulis kode agar bisa dibaca dengan mudah oleh <em>programmer</em> lain.</p><p>Tujuan utama menulis untuk orang lain adalah agar kode lebih mudah di-<em>maintain. </em>Ketika ada suatu <em>error </em>atau <em>bug </em>di suatu program, semua orang bisa dengan cepat memperbaikinya. Tidak perlu menunggu si pembuat program dan tidak perlu ada pawang di setiap <em>feature.</em></p><blockquote><em>“</em>Any fool can write code that a computer can understand. Good programmers write code that humans can understand<em>.” — Martin Fowler</em></blockquote><p>Berfikirlah bahwa orang yang akan me-<em>maintain </em>kode yang kamu buat adalah seorang psikopat sadis yang sudah mengetahui rumahmu.</p><h4><strong>Selalu Berinovasi</strong></h4><p>Salah satu <em>quote</em> terkenal dari Kent Beck, <em>“Make it work, make it right, make it fast” </em>adalah tolak ukur suatu program itu ditulis oleh <em>programmer </em>yang baik.</p><p><em>Make it work</em> berarti kita membuat suatu program agar bisa berjalan sesuai dengan keinginan <em>user</em> atau <em>product owner</em>. Bisa jadi program yang dibuat lama untuk dijalankan, terlalu panjang baris kodenya, atau tidak sesuai <em>best practice.</em></p><p><em>Make it right </em>adalah langkah me-<em>refactor </em>program yang sudah berjalan. Langkah ini bisa dengan cara menerapkan <em>best practice </em>seperti <em>SOLID Principle</em>, <em>Design Pattern</em>, dan yang lainnya.</p><p>Untuk lebih mudah me-<em>refactor</em>, pastinya kita membutuhkan <em>test case</em> agar program yang sebelumnya sudah berjalan tidak rusak ketika di-<em>refactor</em>. Menulis tes bisa dilakukan di awal sebelum memulai koding, atau setelah program berjalan. Tergantung preferensi masing-masing.</p><p>Setelah proses ini selesai seharusnya sudah siap untuk di-<em>deploy </em>ke <em>production environment</em>. <em>Programmer </em>lain juga bisa me-<em>maintain </em>kode yang telah kita tulis karena sudah menerapkan <em>best practice</em>.</p><p><em>Make it fast</em> adalah langkah terakhir dalam pembuatan program. Langkah ini menyangkut <em>performance</em> dari program yang kita buat. Kita bisa me-<em>review</em> <em>library</em> yang kita gunakan, <em>nested loop</em>, ataupun cara kita mengolah data. Apakah ada yang bisa di-<em>optimize</em>? Untuk mengetahui hal tersebut, sering-seringlah melakukan <em>benchmark </em>atau melihat <em>benchmark </em>yang dilakukan orang lain.</p><h4><strong>Kenali dan Asah Pisaumu</strong></h4><p>Ini adalah yang terpenting dalam setiap pekerjaan. Setiap <em>programmer</em> harus tahu alat yang akan dia gunakan untuk membuat program. Selalu menambah wawasan terhadap alat yang digunakan.</p><p>Lebih baik tahu satu bahasa pemrograman dan mengerti dari A sampai Z, daripada mengetahui banyak bahasa pemrograman namun hanya setengahnya. Bukan berarti melarang mempelajari bahasa lain, namun carilah satu bahasa yang menjadi <em>speciality</em>, sehingga ketika dihadapkan masalah apapun bisa dengan percaya diri mengatasinya.</p><p>Itulah beberapa ciri <em>programmer </em>yang baik menurut saya. Kalau ada yang kurang setuju atau mau menambahkan bisa menghubungi saya langsung ya.</p><p>Terima Qasir.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=16819d14d1df" width="1" height="1" alt=""><hr><p><a href="https://medium.com/qasir/menjaga-kualitas-program-yang-kita-tulis-16819d14d1df">Menjaga Kualitas Program yang Kita Tulis</a> was originally published in <a href="https://medium.com/qasir">Qasir</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Build An Own Device Cloud with OpenSTF]]></title>
            <link>https://medium.com/qasir/build-an-own-device-cloud-with-openstf-7262ee69af64?source=rss----781739e3b995---4</link>
            <guid isPermaLink="false">https://medium.com/p/7262ee69af64</guid>
            <category><![CDATA[openstf]]></category>
            <category><![CDATA[cloud]]></category>
            <category><![CDATA[qasir]]></category>
            <category><![CDATA[information-technology]]></category>
            <dc:creator><![CDATA[Nizar Nugraha]]></dc:creator>
            <pubDate>Sat, 01 Oct 2022 10:49:01 GMT</pubDate>
            <atom:updated>2022-10-01T10:49:01.275Z</atom:updated>
            <content:encoded><![CDATA[<p>We have an Own Device Cloud, where we can use it for an alternative automation testing mobile apps on existing pipeline. Besides that, it can help QA Team to streamline testing time every delivery a feature.</p><p>In the development process, we have used OpenSTF to build this. OpenSTF has a dashboard for controlling and debugging the devices also can be integrated with Docker desktop.</p><p>Here’s the flow for every released feature in a mobile application before we have an Own Device Cloud.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*NPR5W3VCZuR-KJrT" /><figcaption><strong>Existing Flow CI/CD Automation Testing</strong></figcaption></figure><h3><strong>Testing and Productivity</strong></h3><p>On the Existing Flow, we have used one or two Cloud Devices and we used all run step testing in this cloud devices and this have a more time and cost on cloud devices testing:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*4sf1fuiofmjJV6At" /></figure><p>If we released a feature in every week, we need a lot of time in Cloud Devices and a lot of cost on this. We can’t iterate running automation mobile apps on the future.</p><h3><strong>Combine The Cloud Devices with Own Devices Cloud</strong></h3><p>We have a solution for efficient to iterate running automation mobile apps, streamline testing time which no need to cost more.</p><p>We create a new flow for the running the pipeline mobile apps:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*2n05Dp6NYeoiQ9qr" /><figcaption><strong>New</strong> <strong>Flow CI/CD Automation Testing</strong></figcaption></figure><p>From the new flow, we can iterate the streamline testing in this the data:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*C7eJU2v6E5f9Lpl6Rs2Dkg.png" /><figcaption><strong>Streamline testing on combine the cloud</strong></figcaption></figure><p>We distribute a step on automation testing on Cloud Devices and Own Devices:</p><ol><li>We run specific a feature on Own Devices Cloud.</li><li>We run Regression Testing on Cloud Devices Testing A.</li></ol><h3>Conclusion and Future Work</h3><p>After Combine the Own Device Cloud and Cloud Devices, we save a lot of time to run automation testing and save cost for next future works in QA team.</p><p>For future work, we can iterate the cases on automation testing and create a performance testing mobile apps on another tools.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7262ee69af64" width="1" height="1" alt=""><hr><p><a href="https://medium.com/qasir/build-an-own-device-cloud-with-openstf-7262ee69af64">Build An Own Device Cloud with OpenSTF</a> was originally published in <a href="https://medium.com/qasir">Qasir</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Pemrograman Python Sederhana untuk Analisis Data Penjualan]]></title>
            <link>https://medium.com/qasir/pemrograman-python-sederhana-untuk-analisis-data-penjualan-a11973142ec0?source=rss----781739e3b995---4</link>
            <guid isPermaLink="false">https://medium.com/p/a11973142ec0</guid>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[pemrograman-python]]></category>
            <category><![CDATA[data-analysis]]></category>
            <category><![CDATA[google-colab]]></category>
            <category><![CDATA[qasir]]></category>
            <dc:creator><![CDATA[reezky Illmawati]]></dc:creator>
            <pubDate>Sat, 01 Oct 2022 10:37:17 GMT</pubDate>
            <atom:updated>2022-10-01T10:37:17.822Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*q3U5Rj_fAxlDeDtjyeS_RQ.png" /></figure><p>Pada era digital saat ini, data merupakan suatu yang sangat penting jika data tersebut dapat diproses, dianalisis, dan digunakan secara efisien. Data adalah salah satu aset untuk mendukung rencana strategis bisnis di masa depan.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/0*75U_feP_Yz-0s-0H.jpeg" /></figure><p>Profesi dibidang data seperti Data Analyst dan Data Scientist memiliki peran kunci di ekosistem bisnis dan teknologi yang berkembang pesat ini.</p><blockquote>The U.S. Bureau of Labor Statistics melihat adanya pertumbuhan yang pesat di bidang ilmu data dan memperkirakan jumlah pekerjaan akan meningkat sekitar 28% hingga 2026. Angka 28% diperkirakan adalah 11,5 juta pekerjaan baru.</blockquote><p>Analisis data atau <em>data analytics</em> adalah proses mengumpulkan, menyusun, dan menarik informasi dari kumpulan data untuk mengoptimalkan proses serta meningkatkan efisiensi bisnis atau sistem secara keseluruhan dalam meningkatkan pendapatan perusahaan. Profesi Data Analyst bertanggung jawab untuk memahami korelasi dan pola interpretasi yang terkandung di dalam data-data dengan cara menganalisis data-data menggunakan teknologi khusus untuk menghasilkan informasi-informasi yang bermanfaat bagi pihak perusahaan. Profesi ini berperan penting dikarenakan<strong> </strong>dapat membantu kegiatan bisnis di perusahaan untuk membuat keputusan yang akurat, berbasis data, dan dipertanggungjawabkan.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/0*bwRz-JrgJ8kVeeeG.jpg" /></figure><p>Berikut<em> skills</em> yang harus dimiliki oleh profesi Data Analyst sebagai berikut :</p><ol><li>Mengumpulkan data berdasarkan permintaan tertentu dari perusahaan.</li><li><em>Pre-processing </em>terhadap data yang dikumpulkan untuk memastikan data bebas dari kesalahan.</li><li>Memahami parameter kumpulan data <em>(</em>jenis data, bagaimana hal itu dapat diurutkan).</li><li>Menafsirkan data dan menganalisis cara-cara memecahkan masalah bisnis.</li><li>Memahami bagaimana cara menarik kesimpulan dari hasil analisis data.</li><li>Memiliki <em>skill expert</em> dalam menggunakan <em>tools</em> seperti Excel, Google Analytics, Tableau, dan SQL.</li><li>Menguasai istilah bisnis, SQL, Excel, membuat laporan dan<em> tools</em> pembuat infografik atau grafik yang menarik.</li></ol><p>Data Scientist menggunakan teknologi seperti <em>machine learning</em> dan <em>predictive analysis </em>untuk mengumpulkan data dan mengolah <em>big data</em> yang akan digunakan dalam memprediksi <em>customer behavior </em>sehingga dapat meningkatkan pendapatan bisnis. Dari <em>big data</em>, Data Scientist mencari pola dan membuat algoritma dan model sehingga bisnis dapat menggunakan data yang dikumpulkan dan menginterpretasikannya untuk skenario yang berbeda. Pembuatan algoritma dan model memerlukan keahlian matematika dan bahasa pemrograman.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*RP-sHYPAYYoq6yZs" /></figure><p>Berikut <em>skills</em> yang harus dimiliki oleh profesi Data Scientist sebagai berikut :</p><ol><li>Membersihkan dan mengumpulkan data berkualitas dalam melatih algoritma dan melakukan <em>data scrubbing</em> untuk memodifikasi atau menghapus data yang tidak lengkap, tidak akurat, atau berulang dalam <em>database</em>.</li><li>Mengidentifikasi pola tersembunyi dalam kumpulan data.</li><li>Melakukan analisis statistik menggunakan algoritma pembelajaran mesin (<em>Machine Learning</em>) seperti <em>natural language processing</em>, regresi logistik, KNN, dll.</li><li>Membangun dan melatih pemodelan <em>machine learnin</em>g dengan menggunakan <em>tools </em>seperti Tensorflow untuk otomatisasi dan menyederhanakan proses sehari-hari.</li><li>Menyempurnakan metrik bisnis dengan mengembangkan dan menguji hipotesis.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*hXhpfoIbQ9MlHxbO.png" /></figure><p>Python adalah bahasa pemrograman yang digunakan untuk membersihkan data, membuat visualisasi, dan membangun model dalam data. Bahasa pemrograman Python sangat fleksibel dan dapat digunakan untuk menganalisis data karena bahasa tersebut, menyediakan opsi pemilihan penggunaan OOPs atau <em>scriptin</em>g, tidak perlu <em>re-compile</em> kode sumber, dan dapat digabungkan dengan bahasa lain untuk mengoptimalkan tujuan.</p><p>Kemudahan penggunaan bahasa Python dan kesederhanaan sintaksis (tata kalimat bahasa yang membentuk sebuah kalimat) menjadi alasan utama Python banyak digunakan dalam <em>data science</em>. Kemudahan ini membuat Python bisa digunakan oleh orang-orang yang tidak memiliki latar belakang teknik. Sementara itu, penggunaan Python dalam <em>data science</em> lebih sesuai untuk pembuatan prototipe.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/986/0*Q5BC-C3gviiiICph.png" /></figure><p>Penggunaan Python pada penulisan ini menggunakan Google Colab (<a href="https://colab.research.google.com/"><em>https://colab.research.google.com/</em></a><em> </em>) karena Google Colabs memudahkan dalam menjalankan kode Python yang disimpan dari Google Drive tanpa melakukan proses instalasi. Sedangkan untuk data set yang digunakan menggunakan data kaggle (<a href="https://www.kaggle.com/"><em>https://www.kaggle.com/</em></a>) dengan data set <em>(Online Retail II UCI).</em></p><p>Berikut langkah-langkah dalam melakukan analisis data.</p><ol><li>Menghubungkan Google Drive yang menyimpan data set.</li></ol><pre>from google.colab import drive<br>import os<br>drive.mount(&#39;/content/gdrive&#39;)</pre><p>2. Mengecek <em>file data set</em> di Google Drive sudah terhubung.</p><pre># CHECK JIKA FILE SUDAH TERHUBUNG</pre><pre>os.path.isfile(&#39;/content/gdrive/MyDrive/DataScience/online_retail_II.csv&#39;)</pre><p>3. Mendefinisikan Library yang dibutuhkan untuk membaca data dan menampilkan Tabel dan Grafik.</p><pre># library untuk membaca data set<br>import pandas as pd</pre><pre># library untuk menampilkan tabel dan grafik<br>import matplotlib.pyplot as plt</pre><p>4. Mendefinisikan data set yang digunakan untuk disimpan pada <em>variabel data frame</em> (df).</p><pre>df = pd.read_csv(&#39;/content/gdrive/MyDrive/DataScience/online_retail_II.csv&#39;)</pre><p>5. Menampilkan 10 baris data pertama pada <em>data frame</em>.</p><pre>df.head(10)</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Tdn2D_eunP_gOrNqaL5RBw.png" /></figure><p>6. Menampilkan jumlah data dan jumlah kolom yang tersedia pada data set.</p><pre>df.shape</pre><p>Menghasilkan 1067371 baris data dengan 8 kolom.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*G_4puySI9NE-VrWdckfotA.png" /></figure><p>7. Menampilkan data distribusi <em>quantity product</em> pada data set dalam bentuk grafik untuk menganalisis banyaknya produk yang terjual pada data set tersebut.</p><pre>ax = df[&#39;Quantity&#39;].plot.box(<br>    showfliers=False,<br>    grid=True,<br>    figsize=(10, 7)<br>)</pre><pre>ax.set_ylabel(&#39;Order Quantity&#39;)<br>ax.set_title(&#39;Quantity Distribution&#39;)</pre><pre>plt.suptitle(&quot;&quot;)<br>plt.show()</pre><p>Data produk yang banyak terjual berada pada range antara 0 sampe 20. Tetapi terdapat hasil minus dari produk yang terjual pada <em>range </em>antara -10 sampai -5.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*TP1GHOUTQSd3d05ts4Gktg.png" /></figure><p>8. Menampilkan deskripsi data dari Kolom Quantity.</p><pre>pd.DataFrame(df[&#39;Quantity&#39;].describe())</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/358/1*-MAm4OsAPL8o63GzEZP--A.png" /></figure><p>9. Melakukan <em>filtering </em>terhadap data set dengan Quantity yang menghasilkan produk terjual &gt; 0.</p><pre>df.loc[df[&#39;Quantity&#39;] &gt; 0].shape</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/626/1*jqOb2Ckyj8ujgu1ZxZ7NsA.png" /></figure><p>10. Mengupdate data set dengan Quantity yang menghasilkan produk terjual &gt; 0.</p><pre>df = df.loc[df[&#39;Quantity&#39;] &gt; 0]<br>df</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*e8RoJ5b3TDx690ZpKG_MnQ.png" /></figure><p>11.<em> Filtering</em> data berdasarkan Waktu Penjualan Product dari kolom Invoice Date dan Invoice.</p><pre>df[&#39;InvoiceDate&#39;] = pd.to_datetime(df[&#39;InvoiceDate&#39;])</pre><pre>monthly_orders_df = df.set_index(&#39;InvoiceDate&#39;)[&#39;Invoice&#39;].resample(&#39;M&#39;).nunique()</pre><pre>monthly_orders_df</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/516/1*4MnuN6bSg2rzMqibaegANQ.png" /></figure><p>11. Menampilkan Data Product kedalam bentuk grafik berdasarkan Jumlah Product dan Waktu Penjualan.</p><pre>ax = pd.DataFrame(monthly_orders_df.values).plot(<br>    grid=True,<br>    figsize=(10,7),<br>    legend=False<br>)</pre><pre>ax.set_xlabel(&#39;date&#39;)<br>ax.set_ylabel(&#39;number of orders/invoices&#39;)<br>ax.set_title(&#39;Total Number of Orders Over Time&#39;)</pre><pre>plt.xticks(<br>    range(len(monthly_orders_df.index)), <br>    [x.strftime(&#39;%m.%Y&#39;) for x in monthly_orders_df.index], <br>    rotation=45<br>)</pre><pre>plt.show()</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*TSaK8jV-1r7VKJ8MP_Jxtg.png" /></figure><p>12. Memfilter Data Product berdasarkan Tanggal Penjualan dari Tanggal “2011–12–01” pada kolom <em>invoice date</em> sampai tanggal yang berlaku hari ini.</p><pre>invoice_dates = df.loc[<br>    df[&#39;InvoiceDate&#39;] &gt;= &#39;2011-12-01&#39;,<br>    &#39;InvoiceDate&#39;<br>]<br>invoice_dates</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/760/1*0D1RCsEyTJU0Wbzseo-i0Q.png" /></figure><p>13. Menampilkan Data Product dari tanggal terbesar dan tanggal terkecil dari kolom <em>invoice date</em>.</p><pre>print(&#39;Min date: %s\nMax date: %s&#39; % (invoice_dates.min(), invoice_dates.max()))</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/468/1*rtFymLh-r0uINunjC8q3Cw.png" /></figure><p>14. Menampilkan jumlah data Product yang kurang dari tanggal “2011–12–01”.</p><pre>df.loc[df[&#39;InvoiceDate&#39;] &lt; &#39;2011-12-01&#39;].shape</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/224/1*_qyjmtvO-dDB5BzrxEO-Hw.png" /></figure><p>15. Menyimpan data produk pada sebuah variabel untuk dilakukan proses analisa produk dengan tanggal kurang dari “2011–12–01” .</p><pre>df = df.loc[df[&#39;InvoiceDate&#39;] &lt; &#39;2011-12-01&#39;]</pre><pre>monthly_orders_df = df.set_index(&#39;InvoiceDate&#39;)[&#39;Invoice&#39;].resample(&#39;M&#39;).nunique()</pre><pre>monthly_orders_df</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/504/1*umTks_PZH7BbXrr7Xt7UvQ.png" /></figure><p>16. Menampilkan data penjualan ke dalam bentuk grafik dengan tanggal kurang dari “2011–12–01”.</p><pre>ax = pd.DataFrame(monthly_orders_df.values).plot(<br>    grid=True,<br>    figsize=(10,7),<br>    legend=False<br>)</pre><pre>ax.set_xlabel(&#39;date&#39;)<br>ax.set_ylabel(&#39;number of orders&#39;)<br>ax.set_title(&#39;Total Number of Orders Over Time&#39;)</pre><pre>ax.set_ylim([0, max(monthly_orders_df.values)+500])</pre><pre>plt.xticks(<br>    range(len(monthly_orders_df.index)), <br>    [x.strftime(&#39;%m.%Y&#39;) for x in monthly_orders_df.index], <br>    rotation=45<br>)</pre><pre>plt.show()</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1018/1*3F_4sgOFnVTfbNf8gILxuw.png" /></figure><p>17. Menghitung dan menganalisa keuntungan total penjualan dari perkalian hasil kolom<em> quantity</em> dan kolom <em>price</em>.</p><pre>df[&#39;Sales&#39;] = df[&#39;Quantity&#39;] * df[&#39;Price&#39;]</pre><p>18. Memfilter hasil keutungan penjualan berdasarkan tanggal penjualan dan total penjualan pada setiap bulan.</p><pre>monthly_revenue_df = df.set_index(&#39;InvoiceDate&#39;)[&#39;Sales&#39;].resample(&#39;M&#39;).sum()</pre><pre>monthly_revenue_df</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/538/1*dHJQ-mRygdv-Q_llvpWYjw.png" /></figure><p>19. Menampilkan hasil penjualan tersebut kedalam bentuk grafik berdasarkan tanggal dan total penjualan.</p><pre>ax = pd.DataFrame(monthly_revenue_df.values).plot(<br>    grid=True,<br>    figsize=(10,7),<br>    legend=False<br>)</pre><pre>ax.set_xlabel(&#39;date&#39;)<br>ax.set_ylabel(&#39;sales&#39;)<br>ax.set_title(&#39;Total Revenue Over Time&#39;)</pre><pre>ax.set_ylim([0, max(monthly_revenue_df.values)+100000])</pre><pre>plt.xticks(<br>    range(len(monthly_revenue_df.index)), <br>    [x.strftime(&#39;%m.%Y&#39;) for x in monthly_revenue_df.index], <br>    rotation=45<br>)</pre><pre>plt.show()</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1004/1*BwkH10r4s7xHemdwddtC_Q.png" /></figure><p>20. Menganalisis data customer yang melakukan pembelian produk berulang kali dengan menghitung total pembelian produk tersebut dari kolom <em>sales</em>,<em> customer ID</em>, dan <em>country</em>.</p><pre>invoice_customer_df = df.groupby(<br>    by=[&#39;Invoice&#39;, &#39;InvoiceDate&#39;]<br>).agg({<br>    &#39;Sales&#39;: sum,<br>    &#39;Customer ID&#39;: max,<br>    &#39;Country&#39;: max,<br>}).reset_index()</pre><pre>invoice_customer_df.head()</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/864/1*DAHnlH2GhK8PX-OsVzycYw.png" /></figure><p>21. Menampilkan data customer yang membeli produk berulang kali disetiap bulannya.</p><pre>monthly_repeat_customers_df = invoice_customer_df.set_index(&#39;InvoiceDate&#39;).groupby([<br>    pd.Grouper(freq=&#39;M&#39;), &#39;Customer ID&#39;<br>]).filter(lambda x: len(x) &gt; 1).resample(&#39;M&#39;).nunique()[&#39;Customer ID&#39;]</pre><pre>monthly_repeat_customers_df</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/572/1*OBNgMet4GQif49NaNsv-Ug.png" /></figure><p>22. Menampilkan banyaknya Transaksi Unik yang dilakukan oleh <em>customer</em> di setiap bulan berdasarkan kolom <em>invoice date</em> dan <em>customer ID</em>.</p><pre>monthly_unique_customers_df = df.set_index(&#39;InvoiceDate&#39;)[&#39;Customer ID&#39;].resample(&#39;M&#39;).nunique()<br>monthly_unique_customers_df</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/560/1*-itc07v53WQi78UGYpga-w.png" /></figure><p>23. Menampilkan presentase pencapaian produk yang sudah dibeli berulang kali oleh customer di setiap bulannya.</p><pre>monthly_repeat_percentage = monthly_repeat_customers_df/monthly_unique_customers_df*100.0<br>monthly_repeat_percentage</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/594/1*dpfx0KK4a_q6hMdSPVAZEw.png" /></figure><p>24. Menampilkan grafik dari total pembalian produk yang sama atau berulang oleh <em>customer </em>berdasarkan data dari data <em>customer </em>yang membeli produk berulang kali disetiap bulannya, banyaknya Transaksi Unik yang dilakukan oleh <em>customer </em>di setiap bulan, dan presentase pencapaian produk yang sudah dibeli berulang kali oleh <em>customer </em>disetiap bulannya.</p><pre>ax = pd.DataFrame(monthly_repeat_customers_df.values).plot(<br>    figsize=(10,7)<br>)</pre><pre>pd.DataFrame(monthly_unique_customers_df.values).plot(<br>    ax=ax,<br>    grid=True<br>)</pre><pre>ax2 = pd.DataFrame(monthly_repeat_percentage.values).plot.bar(<br>    ax=ax,<br>    grid=True,<br>    secondary_y=True,<br>    color=&#39;green&#39;,<br>    alpha=0.2<br>)</pre><pre>ax.set_xlabel(&#39;date&#39;)<br>ax.set_ylabel(&#39;number of customers&#39;)<br>ax.set_title(&#39;Number of All vs. Repeat Customers Over Time&#39;)</pre><pre>ax2.set_ylabel(&#39;percentage (%)&#39;)</pre><pre>ax.legend([&#39;Repeat Customers&#39;, &#39;All Customers&#39;])<br>ax2.legend([&#39;Percentage of Repeat&#39;], loc=&#39;upper right&#39;)</pre><pre>ax.set_ylim([0, monthly_unique_customers_df.values.max()+100])<br>ax2.set_ylim([0, 100])</pre><pre>plt.xticks(<br>    range(len(monthly_repeat_customers_df.index)), <br>    [x.strftime(&#39;%m.%Y&#39;) for x in monthly_repeat_customers_df.index], <br>    rotation=45<br>)</pre><pre>plt.show()</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*NRxjw7-7z2crtU032_dBjg.png" /></figure><p>25. Menganalisa keutungan di peroleh dari pembelian produk secara berulang yang dilakukan oleh <em>customer.</em></p><pre>monthly_rev_repeat_customers_df = invoice_customer_df.set_index(&#39;InvoiceDate&#39;).groupby([<br>    pd.Grouper(freq=&#39;M&#39;), &#39;Customer ID&#39;<br>]).filter(lambda x: len(x) &gt; 1).resample(&#39;M&#39;).sum()[&#39;Sales&#39;]</pre><pre>monthly_rev_perc_repeat_customers_df = monthly_rev_repeat_customers_df/monthly_revenue_df * 100.0<br>monthly_rev_repeat_customers_df</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/502/1*n4HhGAohf5D568yrOHc3OQ.png" /></figure><p>26. Menampilkan informasi total keuntungan dari setiap penjualan produk berulang ke dalam bentuk grafik.</p><pre>ax = pd.DataFrame(monthly_revenue_df.values).plot(figsize=(12,9))</pre><pre>pd.DataFrame(monthly_rev_repeat_customers_df.values).plot(<br>    ax=ax,<br>    grid=True,<br>)</pre><pre>ax.set_xlabel(&#39;date&#39;)<br>ax.set_ylabel(&#39;sales&#39;)<br>ax.set_title(&#39;Total Revenue vs. Revenue from Repeat Customers&#39;)</pre><pre>ax.legend([&#39;Total Revenue&#39;, &#39;Repeat Customer Revenue&#39;])</pre><pre>ax.set_ylim([0, max(monthly_revenue_df.values)+100000])</pre><pre>ax2 = ax.twinx()</pre><pre>pd.DataFrame(monthly_rev_perc_repeat_customers_df.values).plot(<br>    ax=ax2,<br>    kind=&#39;bar&#39;,<br>    color=&#39;g&#39;,<br>    alpha=0.2<br>)</pre><pre>ax2.set_ylim([0, max(monthly_rev_perc_repeat_customers_df.values)+30])<br>ax2.set_ylabel(&#39;percentage (%)&#39;)<br>ax2.legend([&#39;Repeat Revenue Percentage&#39;])</pre><pre>ax2.set_xticklabels([<br>    x.strftime(&#39;%m.%Y&#39;) for x in monthly_rev_perc_repeat_customers_df.index<br>])</pre><pre>plt.show()</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*KlW0iRpW-y5NpYc9rvKp7w.png" /></figure><p>27. Menampilkan jumlah dari produk yang paling sering dibeli oleh <em>customer</em> dengan menjumlahkan total <em>quantity </em>produk yang difilter berdasarkan invoice date dan jumlah stok barang.</p><pre>date_item_df = pd.DataFrame(<br>    df.set_index(&#39;InvoiceDate&#39;).groupby([<br>        pd.Grouper(freq=&#39;M&#39;), &#39;StockCode&#39;<br>    ])[&#39;Quantity&#39;].sum()<br>)<br>date_item_df</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/484/1*lxspUfob_97NZZ0Dk_kTnQ.png" /></figure><p>28. Menampilkan data setiap produk yang terjual banyak di akhir bulan yang dilakukan <em>filtering</em> terhadap <em>quantity</em> produk dan tanggal item ‘2011–11–30’.</p><pre># Rank items by the last month sales<br>last_month_sorted_df = date_item_df.loc[&#39;2011-11-30&#39;].sort_values(<br>    by=&#39;Quantity&#39;, ascending=False<br>).reset_index()</pre><pre>last_month_sorted_df</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/554/1*AUR44rkEB61dnDc7r-axFA.png" /></figure><p>29. Menampilkan 5 produk terpoluler dengan stok <em>code</em> ‘23084’, ‘84826’, ‘22197’, ‘22086’, ‘85099B’ yang difilter berdasarkan data <em>invoice date</em>.</p><pre># Regroup for top 5 items<br>date_item_df = pd.DataFrame(<br>    df.loc[<br>        df[&#39;StockCode&#39;].isin([&#39;23084&#39;, &#39;84826&#39;, &#39;22197&#39;, &#39;22086&#39;, &#39;85099B&#39;])<br>    ].set_index(&#39;InvoiceDate&#39;).groupby([<br>        pd.Grouper(freq=&#39;M&#39;), &#39;StockCode&#39;<br>    ])[&#39;Quantity&#39;].sum()<br>)<br>date_item_df</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/474/1*Z9jo1RGSVUKt-3Sp3wWQLA.png" /></figure><p>30. Menampilkan informasi ke dalam bentuk tabel untuk memudahkan proses analisa produk yang memiliki total penjualan terbanyak.</p><pre>trending_itmes_df <strong>=</strong> date_item_df<strong>.</strong>reset_index()<strong>.</strong>pivot(&#39;InvoiceDate&#39;,&#39;StockCode&#39;)<strong>.</strong>fillna(0)<br><br>trending_itmes_df <strong>=</strong> trending_itmes_df<strong>.</strong>reset_index()<br>trending_itmes_df <strong>=</strong> trending_itmes_df<strong>.</strong>set_index(&#39;InvoiceDate&#39;)<br>trending_itmes_df<strong>.</strong>columns <strong>=</strong> trending_itmes_df<strong>.</strong>columns<strong>.</strong>droplevel(0)<br><br>trending_itmes_df</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/590/1*8Ulvhp3EmGvBc3AkVAH8Lw.png" /></figure><p>31. Menampilkan informasi tersebut ke dalam bentuk grafik agar memudahkan proses analisa produk terbanyak.</p><pre>ax = pd.DataFrame(trending_itmes_df.values).plot(<br>    figsize=(10,7),<br>    grid=True,<br>)</pre><pre>ax.set_ylabel(&#39;number of purchases&#39;)<br>ax.set_xlabel(&#39;date&#39;)<br>ax.set_title(&#39;Item Trends over Time&#39;)</pre><pre>ax.legend(trending_itmes_df.columns, loc=&#39;upper left&#39;)</pre><pre>plt.xticks(<br>    range(len(trending_itmes_df.index)), <br>    [x.strftime(&#39;%m.%Y&#39;) for x in trending_itmes_df.index], <br>    rotation=45<br>)</pre><pre>plt.show()</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/838/1*EMZGbIbpnb1r-rhnCojs1w.png" /></figure><h3><strong>Kesimpulan</strong></h3><p>Bahasa pemrograman Python merupakan salah satu bahasa pemrograman tingkat tinggi yang dapat digunakan untuk melakukan analisis data. Penggunaan <em>tools</em> tersebut cukup mudah di implementasikan menggunakan Google Colabs karena tidak membutuhkan <em>resource</em> lebih untuk menjalankan program Python yang dikembangkan saat melakukan analisis data. Oleh karena itu, profesi Data Analyst dan Data Scientist membutuhkan <em>skills</em> lebih dalam melakukan interpretasi data agar lebih mudah dipahami untuk menganalisa bisnis dalam perusahaan.</p><h3><strong>Referensi</strong></h3><p><a href="https://www.cakeresume.com/resources/perbedaan-data-analyst-dan-data-scientist?locale=id">https://www.cakeresume.com/resources/perbedaan-data-analyst-dan-data-scientist?locale=id</a></p><p><a href="https://www.dqlab.id/ini-dia-perbedaan-data-scientist-data-analyst-data-engineer">https://www.dqlab.id/ini-dia-perbedaan-data-scientist-data-analyst-data-engineer</a></p><p><a href="https://digitalbisa.id/artikel/kenali-perbedaan-data-scientist-data-analyst-dan-data-engineer-QvVFU">https://digitalbisa.id/artikel/kenali-perbedaan-data-scientist-data-analyst-dan-data-engineer-QvVFU</a></p><p><a href="https://dqlab.id/intip-kualifikasi-role-data-analyst-serta-tugasnya-sehari-hari">https://dqlab.id/intip-kualifikasi-role-data-analyst-serta-tugasnya-sehari-hari</a></p><p><a href="https://algorit.ma/blog/belajar-apa-itu-python/">https://algorit.ma/blog/belajar-apa-itu-python/</a></p><p><a href="https://www.stoodnt.com/blog/data-engineer-vs-data-scientist/">https://www.stoodnt.com/blog/data-engineer-vs-data-scientist/</a></p><p><a href="https://blogbelajar.id/data-science-bagi-pemula-1-melakukan-analisa-produk-menggunakan-pemrograman-python/">https://blogbelajar.id/data-science-bagi-pemula-1-melakukan-analisa-produk-menggunakan-pemrograman-python/</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a11973142ec0" width="1" height="1" alt=""><hr><p><a href="https://medium.com/qasir/pemrograman-python-sederhana-untuk-analisis-data-penjualan-a11973142ec0">Pemrograman Python Sederhana untuk Analisis Data Penjualan</a> was originally published in <a href="https://medium.com/qasir">Qasir</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The Difference Between SDET and QA]]></title>
            <link>https://medium.com/qasir/the-difference-between-sdet-and-qa-baf6cf8798d5?source=rss----781739e3b995---4</link>
            <guid isPermaLink="false">https://medium.com/p/baf6cf8798d5</guid>
            <category><![CDATA[it-professionals]]></category>
            <category><![CDATA[qasir]]></category>
            <category><![CDATA[pandujuang]]></category>
            <category><![CDATA[qa]]></category>
            <category><![CDATA[sdet]]></category>
            <dc:creator><![CDATA[Rahmanto]]></dc:creator>
            <pubDate>Sat, 01 Oct 2022 09:25:28 GMT</pubDate>
            <atom:updated>2022-10-01T09:25:28.563Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/900/0*TxdbpDYuqOci9xwt.png" /><figcaption>SDET vs QA</figcaption></figure><p>Software Development Engineer in Test (SDET) is an IT professional who can work equally and effectively in both development and testing roles. Whereas the Quality Assurance (QA) is an IT professional determine requirements in making or developing certain products in order to have good quality.</p><h3>What’s The Specific Difference Between SDET and QA?</h3><p>A Professional SDET are performing a type of QA, but not professional QA not all performing SDET. QA is divided into two types, namely QA Manual and QA Automation. A professional QA Manual does an application testing manually and does not use code for automation testing but a professional QA Automation does an application testing using code to run automation testing. There is only one type of SDET whose task includes all QA tasks and SDET are usually identical for testing applications using code for automation testing.</p><p>Maybe there are many companies that give this profession the name SDET, but many companies also give their position name QA Automation. In those situations, SDETs are capable of reviewing the code itself, writing unit tests, and approaching the test coverage with a programmer’s mindset. But QA Automation can write code that can test the app or website behavior. But unlike this definition of SDET, they usually aren’t at the level of knowing how the software itself is built.</p><p>SDETs work with developers to understand the code itself. QA Automation sometimes don’t become involved until after the development is done (although all testers collaborated with developers in some form or another).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/851/1*Ww_MAjFopC2FBjVEVG25RQ.jpeg" /></figure><h3>Conclusion and Recommendation</h3><p>So, the difference between SDET and QA is that SDET is only one type whose main function is to help ensure that broken functionality is caught immediately while QA is divided into two types, namely Manual QA and Automation QA. A Manual QA professional performs application testing manually and does not use code for automation testing but Automation QA professional performs application testing using code to run automation tests.</p><p>And recommendation in the best of both worlds, SDETs and other types of testers can work together — providing enduring quality across the website or app.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=baf6cf8798d5" width="1" height="1" alt=""><hr><p><a href="https://medium.com/qasir/the-difference-between-sdet-and-qa-baf6cf8798d5">The Difference Between SDET and QA</a> was originally published in <a href="https://medium.com/qasir">Qasir</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Get to Know Chatbot!]]></title>
            <link>https://medium.com/qasir/chat-bot-64eac0f0ae22?source=rss----781739e3b995---4</link>
            <guid isPermaLink="false">https://medium.com/p/64eac0f0ae22</guid>
            <dc:creator><![CDATA[Andri]]></dc:creator>
            <pubDate>Sat, 01 Oct 2022 09:09:52 GMT</pubDate>
            <atom:updated>2022-10-01T09:09:52.529Z</atom:updated>
            <content:encoded><![CDATA[<h4>Engineering Support</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*4Y3Nop-M9FzZw-JF.jpg" /><figcaption>Bot Chat Image</figcaption></figure><p>Due to world digital development, everybody won’t stop to develop the facilities for daily activities, such as in replying to chats regarding the information needed. Here’s why Chatbot now exist.</p><h3>What is Chatbot?</h3><p>Chatbot is an artificial program based on Artificial Intelligence (AI) that can simulate conversations or chats with other users like humans through messaging applications, websites, mobile applications, or by telephone.</p><p>The way the chatbot works itself is by relying on keywords that are already embedded in the system. Every time the chatbot gets a question from a user, it will automatically adjust which answer matches the keyword of the question asked.</p><blockquote><strong>Chatbot is a new trend in how people access information, make decisions, and communicate.</strong></blockquote><h3>Patterns Used in Making A Chatbot</h3><h4><strong>Pattern Matcher</strong></h4><p>In this method, the bot uses a pattern-matching strategy when grouping text. Chatbots that are rule-based or scripted and structured mostly fall into the pattern-matcher category. These Chatbots use a knowledge base that contains documents and each document consists of certain patterns and templates.<br>When the bot receives an input that matches the pattern, it sends a message stored in the template in response. Patterns can be phrases like “What’s your name?” or the pattern “My name”, “where” is a regular expression. Usually, patterns and templates are entered manually.<br>Every time the Chatbot gets a question, it will give any response that fits the pattern. However, if there is a form of request that is outside the form of the pattern, then he will not be able to provide an appropriate answer.</p><h4><strong>2. Suitable Algorithms</strong></h4><p>Algorithm-based chatbots not only match patterns with responses, they choose a pattern-matching algorithm and compare input sentences with responses in the data corpus. Algorithms play a major role here as they help chatbots in analyzing large data sets. This reduces pattern matching work.</p><h4><strong>3. Decision Tree-Based</strong></h4><p>The way this chatbot works is arguably less user-friendly. Because the user must follow the order of answers that have been programmed by the bot engine. This method can be complex or simple depending on how the concept is designed.<br>However, many business owners also use this method because it is low in complexity, faster, and still useful in responding to user inquiries. When using it, the user will be faced with several widgets in the form of buttons containing the answer text.</p><h4><strong>4. Contextual</strong></h4><p>To be able to create conversations naturally, contextual chatbots rely on artificial intelligence systems with machine learning (ML). This method is indeed the best compared to the previous method.</p><h3>Advantages and Disadvantages of Chatbot</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*7psZOmxlJmFOupPS.png" /><figcaption>Advantages Disadvantages Image</figcaption></figure><p><strong>Chatbots have several advantages, including:</strong><br>1. Make it easy for users to find out the detailed information needed.<br>2. Faster and more practical in responding to information.<br>3. Can always be used 24 hours as long as the server is on.<br>4. Easy to develop.</p><p><strong>In addition to the shortcomings, among others:</strong><br>1. Cannot answer information that has not been created by the developer.<br>2. Keywords must match those that have been set.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=64eac0f0ae22" width="1" height="1" alt=""><hr><p><a href="https://medium.com/qasir/chat-bot-64eac0f0ae22">Get to Know Chatbot!</a> was originally published in <a href="https://medium.com/qasir">Qasir</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>