<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: cem kaan kosali</title>
    <description>The latest articles on DEV Community by cem kaan kosali (@cemkaanguru).</description>
    <link>https://dev.to/cemkaanguru</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F290803%2F5e8331fe-eaf1-4843-8f68-28bc37a2cd00.jpg</url>
      <title>DEV Community: cem kaan kosali</title>
      <link>https://dev.to/cemkaanguru</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cemkaanguru"/>
    <language>en</language>
    <item>
      <title>How to create Custom Interface with standard directus interfaces?</title>
      <dc:creator>cem kaan kosali</dc:creator>
      <pubDate>Mon, 25 Oct 2021 06:51:05 +0000</pubDate>
      <link>https://dev.to/cemkaanguru/how-to-create-custom-interface-with-standard-directus-interfaces-52gn</link>
      <guid>https://dev.to/cemkaanguru/how-to-create-custom-interface-with-standard-directus-interfaces-52gn</guid>
      <description>&lt;div class="ltag__stackexchange--container"&gt;
  &lt;div class="ltag__stackexchange--title-container"&gt;
    
      &lt;div class="ltag__stackexchange--title"&gt;
        &lt;h1&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7Gn-iPj_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/stackoverflow-logo-b42691ae545e4810b105ee957979a853a696085e67e43ee14c5699cf3e890fb4.svg" alt=""&gt;
            &lt;a href="https://stackoverflow.com/questions/69689876/how-to-create-custom-interface-with-standard-directus-interfaces" rel="noopener noreferrer"&gt;
              How to create Custom Interface with standard directus interfaces?
            &lt;/a&gt;
        &lt;/h1&gt;
        &lt;div class="ltag__stackexchange--post-metadata"&gt;
          &lt;span&gt;Oct 23 '21&lt;/span&gt;
            &lt;span&gt;Comments: 1&lt;/span&gt;
            &lt;span&gt;Answers: 1&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;a class="ltag__stackexchange--score-container" href="https://stackoverflow.com/questions/69689876/how-to-create-custom-interface-with-standard-directus-interfaces" rel="noopener noreferrer"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y9mJpuJP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/stackexchange-arrow-up-eff2e2849e67d156181d258e38802c0b57fa011f74164a7f97675ca3b6ab756b.svg" alt=""&gt;
        &lt;div class="ltag__stackexchange--score-number"&gt;
          2
        &lt;/div&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wif5Zq3z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/stackexchange-arrow-down-4349fac0dd932d284fab7e4dd9846f19a3710558efde0d2dfd05897f3eeb9aba.svg" alt=""&gt;
      &lt;/a&gt;
    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--body"&gt;
    
&lt;p&gt;How to create a custom interface by using &lt;strong&gt;standard directus interfaces&lt;/strong&gt; as a starter?&lt;/p&gt;
&lt;p&gt;&lt;a href="https://discord.com/channels/725371605378924594/741319150030553159/845333861981749280" rel="nofollow noreferrer"&gt;an answer in discord&lt;/a&gt; uses &lt;strong&gt;directus tarball&lt;/strong&gt;  in dependencies and &lt;a href="https://github.com/netlesh/file-image/blob/acc7a6b91590049de6654fa85fe25e92c43fef34/vue.config.js#L1" rel="nofollow noreferrer"&gt;a custom vue.config.js&lt;/a&gt; , but the rest of the import statements are still wrong.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Here is my custom interface source code:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Even If &lt;a href="https://github.com/netlesh/file-image/blob/acc7a6b91590049de6654fa85fe25e92c43fef34/src/fileimage.vue#L91" rel="nofollow noreferrer"&gt;all import statements&lt;/a&gt;…&lt;/p&gt;
    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--btn--container"&gt;
    
      &lt;a href="https://stackoverflow.com/questions/69689876/how-to-create-custom-interface-with-standard-directus-interfaces" rel="noopener noreferrer"&gt;Open Full Question&lt;/a&gt;
    
  &lt;/div&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>cost of a software error</title>
      <dc:creator>cem kaan kosali</dc:creator>
      <pubDate>Mon, 07 Dec 2020 17:41:36 +0000</pubDate>
      <link>https://dev.to/cemkaanguru/cost-of-a-software-error-3p35</link>
      <guid>https://dev.to/cemkaanguru/cost-of-a-software-error-3p35</guid>
      <description>&lt;p&gt;$560M USD &lt;/p&gt;

&lt;p&gt;&lt;a href="https://calleam.com/WTPF/?page_id=2086"&gt;https://calleam.com/WTPF/?page_id=2086&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>λ-calculus in Dart</title>
      <dc:creator>cem kaan kosali</dc:creator>
      <pubDate>Wed, 18 Nov 2020 06:48:40 +0000</pubDate>
      <link>https://dev.to/cemkaanguru/calculus-in-dart-25ac</link>
      <guid>https://dev.to/cemkaanguru/calculus-in-dart-25ac</guid>
      <description>&lt;p&gt;Lambda calculus is Turing complete, that is, it is a universal model of computation that can be used to simulate any Turing machine.[1] Its namesake, the Greek letter lambda (λ), is used in lambda expressions and lambda terms to denote binding a variable in a function.&lt;/p&gt;

&lt;p&gt;Lambda calculus may be untyped or typed. In typed lambda calculus, functions can be applied only if they are capable of accepting the given input's "type" of data.&lt;/p&gt;

&lt;h2&gt;
  
  
  But how to assign types to functions?
&lt;/h2&gt;

&lt;p&gt;In Dart, functions are objects, just like strings and numbers are objects. A typedef, or function-type alias, gives a function type a name that you can use when declaring fields and return types. A typedef retains type information when a function type is assigned to a variable.&lt;br&gt;
&lt;a href="https://dart.dev/guides/language/language-tour#typedefs"&gt;Here is the Type definition example from language tour&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://buildflutter.com/functional-programming-with-flutter/"&gt; Functional Programming with Flutter &lt;/a&gt;&lt;/p&gt;

</description>
      <category>dart</category>
      <category>functional</category>
    </item>
    <item>
      <title>windows for js development</title>
      <dc:creator>cem kaan kosali</dc:creator>
      <pubDate>Sat, 06 Jun 2020 12:19:44 +0000</pubDate>
      <link>https://dev.to/cemkaanguru/my-pc-nodejs-toolbox-ol4</link>
      <guid>https://dev.to/cemkaanguru/my-pc-nodejs-toolbox-ol4</guid>
      <description>&lt;p&gt;Need to get a note what's in my current typescript node development toolbox. So I can get it back quickly.&lt;/p&gt;

&lt;p&gt;I striped out my some other development related software for other platforms such as Haskell and PHP (composer)&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;em&gt;HOST OS:&lt;/em&gt; Windows 10 Pro for Workstations
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;drWeb as Anti Virus solution.&lt;/li&gt;
&lt;li&gt;AnyDesk instead of Teamviewer&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  After fresh install of windows start with &lt;a href="https://ninite.com/"&gt;Ninite&lt;/a&gt; or Chocolatey
&lt;/h2&gt;

&lt;p&gt;I install Firefox Developer Editon manualy &lt;/p&gt;

&lt;p&gt;But since I will install choco I can skip this step &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chrome &lt;/li&gt;
&lt;li&gt;qBittorrent &lt;/li&gt;
&lt;li&gt;Thunderbird &lt;/li&gt;
&lt;li&gt;7-Zip &lt;/li&gt;
&lt;li&gt;VLC &lt;/li&gt;
&lt;li&gt;K-Lite Codecs &lt;/li&gt;
&lt;li&gt;HandBrake &lt;/li&gt;
&lt;li&gt;TeraCopy &lt;/li&gt;
&lt;li&gt;IrfanView &lt;/li&gt;
&lt;li&gt;GIMP  &lt;em&gt;(I still use Picasa for photo organization.)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;ShareX &lt;/li&gt;
&lt;li&gt;Foxit Reader &lt;/li&gt;
&lt;li&gt;LibreOffice &lt;/li&gt;
&lt;li&gt;FileZilla&lt;/li&gt;
&lt;li&gt;Notepad++ &lt;/li&gt;
&lt;li&gt;Visual Studio Code ( Main IDE )&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  {N} NativeScript
&lt;/h2&gt;

&lt;p&gt;I install node.js and other nativescript related stuff &lt;a href="https://chocolatey.org/"&gt;chocolatey&lt;/a&gt; in &lt;a href="https://docs.nativescript.org/start/ns-setup-win"&gt;this order&lt;/a&gt; .&lt;/p&gt;

&lt;h3&gt;
  
  
  Chocolatey
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;choco install -y qBittorrent Chrome Thunderbird VLC HandBrake TeraCopy IrfanView 7zip k-litecodecpackfull GIMP ShareX foxitreader LibreOffice FileZilla notepadplusplus vscode&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Global NPM Packages
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Yarn classic&lt;/strong&gt;&lt;br&gt;
Then I add global packages with&lt;br&gt;
&lt;code&gt;yarn add global @vue/cli @vue/cli-init  @vue/devtools strapi create-strapi-app pm2 typescript ncu&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Visual Studio Code Plug-ins
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;NativeScript Extension for Visual Studio Code&lt;/li&gt;
&lt;li&gt;Apollo GraphQL for VS Code&lt;/li&gt;
&lt;li&gt;vscode-language-babel&lt;/li&gt;
&lt;li&gt;Dark+ Contrast Theme&lt;/li&gt;
&lt;li&gt;VS Code ESLint extension&lt;/li&gt;
&lt;li&gt;Git Graph extension for Visual Studio Code&lt;/li&gt;
&lt;li&gt;GitLab VSCode Extension&lt;/li&gt;
&lt;li&gt;GraphQL for VS Code&lt;/li&gt;
&lt;li&gt;VSCode GraphQL&lt;/li&gt;
&lt;li&gt;Graphql For VSCode&lt;/li&gt;
&lt;li&gt;VS Code JavaScript (ES6) snippets&lt;/li&gt;
&lt;li&gt;Kotlin Language&lt;/li&gt;
&lt;li&gt;Material Icon Theme &lt;/li&gt;
&lt;li&gt;NativeScript Vue Snippets for Visual Studio Code&lt;/li&gt;
&lt;li&gt;Node npm&lt;/li&gt;
&lt;li&gt;Prettier Formatter for Visual Studio Code&lt;/li&gt;
&lt;li&gt;Reflow Markdown&lt;/li&gt;
&lt;li&gt;Visual Studio Code Remote - WSL&lt;/li&gt;
&lt;li&gt;vscode-stylelint&lt;/li&gt;
&lt;li&gt;Tailwind CSS IntelliSense&lt;/li&gt;
&lt;li&gt;tailwind-sass-syntax&lt;/li&gt;
&lt;li&gt;Todo Tree&lt;/li&gt;
&lt;li&gt;Tslint&lt;/li&gt;
&lt;li&gt;TypeScript Hero&lt;/li&gt;
&lt;li&gt;Vetur&lt;/li&gt;
&lt;li&gt;Vetur TypeScript Performance Workaround&lt;/li&gt;
&lt;li&gt;Vue VSCode Snippets&lt;/li&gt;
&lt;li&gt;Vuex Suggest&lt;/li&gt;
&lt;li&gt;Webpack&lt;/li&gt;
&lt;li&gt;FlatUI Theme for VSCode&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Database Tools
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;MySQL Workbench&lt;/li&gt;
&lt;li&gt;Beekeeper Studio (Since I am a beekeeper I need it for MariaDB, Postgres, Amazon RedShift and CockroachDB: Distributed SQL)&lt;/li&gt;
&lt;li&gt;SqLite Studio&lt;/li&gt;
&lt;li&gt;PostgreSQL admin&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Online Tools
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://mockaroo.com/"&gt;mockaroo&lt;/a&gt; For Fake data&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://excalidraw.com/"&gt;excalidraw&lt;/a&gt; For Quick Protypes&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Databases (Docker Official Images)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;SqLite for all local development&lt;/li&gt;
&lt;li&gt;Postgres for SQL staging and production&lt;/li&gt;
&lt;li&gt;MongoDB for NOSQL staging and production&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.couchbase.com/"&gt;Couchbase&lt;/a&gt; I use it instead of MongoDB   in personal projects.&lt;/li&gt;
&lt;li&gt;CockroachDB: Distributed SQL&lt;/li&gt;
&lt;li&gt;MariaDB instead of MySQL&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Virtualisation
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Docker Desktop (for Docker Compose)&lt;/li&gt;
&lt;li&gt;VirtualBox (for macOS and Xcode for iOS)&lt;/li&gt;
&lt;li&gt;Windows Subsystem for Linux (for Debian)&lt;/li&gt;
&lt;li&gt;GenyMotion (for Android)&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Other Code tools
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://masscode.io/"&gt;massCode&lt;/a&gt; &lt;em&gt;All my snippets are here&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://insomnia.rest/"&gt;insomnia&lt;/a&gt;&lt;em&gt;GraphQL and REST api requests&lt;/em&gt; insomnia.rest&lt;/li&gt;
&lt;li&gt;Cygwin 64&lt;/li&gt;
&lt;li&gt;Git bash&lt;/li&gt;
&lt;li&gt;Putty&lt;/li&gt;
&lt;li&gt;PowerShell 6&lt;/li&gt;
&lt;li&gt;Cmder &lt;a href="https://conemu.github.io/"&gt;my main terminal&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.ngrok.com/"&gt;ngrok&lt;/a&gt; for serving localservers over https&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.listary.com/"&gt;Listray&lt;/a&gt; &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Libraries I like to use almost in every project
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://vocajs.com/"&gt;Voca&lt;/a&gt;  The ultimate JavaScript string library &lt;/li&gt;
&lt;li&gt;&lt;a href="https://lodash.com/"&gt;Lodash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://date-fns.org/"&gt;date-fns&lt;/a&gt; Modern JavaScript date utility library&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/vuejs/vue-apollo#readme"&gt;Vue-Apollo&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>nativescript</category>
      <category>node</category>
      <category>vue</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Functional Typescript Series</title>
      <dc:creator>cem kaan kosali</dc:creator>
      <pubDate>Sat, 22 Feb 2020 07:36:30 +0000</pubDate>
      <link>https://dev.to/cemkaanguru/functional-typescript-series-4lmn</link>
      <guid>https://dev.to/cemkaanguru/functional-typescript-series-4lmn</guid>
      <description>&lt;p&gt;Function composition is the process of combining two or more functions to produce a new function. Composing functions together is like snapping together a series of pipes for our data to flow through.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;trim&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;capitalize&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;toUpperCase&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



</description>
      <category>typescript</category>
    </item>
    <item>
      <title>“Family Tree” Data Structure</title>
      <dc:creator>cem kaan kosali</dc:creator>
      <pubDate>Tue, 11 Feb 2020 09:58:10 +0000</pubDate>
      <link>https://dev.to/cemkaanguru/family-tree-data-structure-34eo</link>
      <guid>https://dev.to/cemkaanguru/family-tree-data-structure-34eo</guid>
      <description>&lt;p&gt;There is no right or wrong programming paradigm. &lt;br&gt;
In family tree, it's obvious to choose OOP instead of functional programing.&lt;br&gt;
I have no idea how to implement this kind of data into functional programming.&lt;br&gt;
Check out this answer, isn't it just stunning and amazing? &lt;/p&gt;


&lt;div class="ltag__stackexchange--container"&gt;
  &lt;div class="ltag__stackexchange--title-container"&gt;
    
      &lt;div class="ltag__stackexchange--title"&gt;
        &lt;h1&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7Gn-iPj_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/stackoverflow-logo-b42691ae545e4810b105ee957979a853a696085e67e43ee14c5699cf3e890fb4.svg" alt=""&gt;
            &lt;a href="https://stackoverflow.com/questions/3304670/family-tree-data-structure" rel="noopener noreferrer"&gt;
              "Family Tree" Data Structure
            &lt;/a&gt;
        &lt;/h1&gt;
        &lt;div class="ltag__stackexchange--post-metadata"&gt;
          &lt;span&gt;Jul 21 '10&lt;/span&gt;
            &lt;span&gt;Comments: 3&lt;/span&gt;
            &lt;span&gt;Answers: 2&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;a class="ltag__stackexchange--score-container" href="https://stackoverflow.com/questions/3304670/family-tree-data-structure" rel="noopener noreferrer"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y9mJpuJP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/stackexchange-arrow-up-eff2e2849e67d156181d258e38802c0b57fa011f74164a7f97675ca3b6ab756b.svg" alt=""&gt;
        &lt;div class="ltag__stackexchange--score-number"&gt;
          7
        &lt;/div&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wif5Zq3z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/stackexchange-arrow-down-4349fac0dd932d284fab7e4dd9846f19a3710558efde0d2dfd05897f3eeb9aba.svg" alt=""&gt;
      &lt;/a&gt;
    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--body"&gt;
    
&lt;p&gt;I'm looking for a way to represent a family tree in PHP. This means that children will need to inherit from &lt;em&gt;two&lt;/em&gt; (or more) parents.&lt;/p&gt;
&lt;p&gt;Here are the requirements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1, 2, or more parents&lt;/li&gt;
&lt;li&gt;Bonus points if I can attach metadata like a last name or relationship status&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is…&lt;/p&gt;
    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--btn--container"&gt;
    
      &lt;a href="https://stackoverflow.com/questions/3304670/family-tree-data-structure" rel="noopener noreferrer"&gt;Open Full Question&lt;/a&gt;
    
  &lt;/div&gt;
&lt;/div&gt;


</description>
      <category>100daysofcode</category>
      <category>oop</category>
      <category>functional</category>
    </item>
    <item>
      <title>Do you need GraphQL?</title>
      <dc:creator>cem kaan kosali</dc:creator>
      <pubDate>Sun, 26 Jan 2020 18:42:52 +0000</pubDate>
      <link>https://dev.to/cemkaanguru/nativescript-vue-day28-4bff</link>
      <guid>https://dev.to/cemkaanguru/nativescript-vue-day28-4bff</guid>
      <description>&lt;h2&gt;
  
  
  MeshyDB vs Parse Platform
&lt;/h2&gt;

&lt;p&gt;I have tried both backend platforms. &lt;br&gt;
I decided to use both for a &lt;em&gt;recipe&lt;/em&gt; application. Tomorrow I hope I will start.&lt;br&gt;
Just because I feel more comfortable while developing for nativescript, Instead of &lt;strong&gt;Nuxt&lt;/strong&gt;, I will use nativescript.&lt;/p&gt;

&lt;p&gt;I ❤️ Couchbase but sooner or later, I must use some online tool for beta testing Because I want to reclaim online real data from beta testers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Emotionally I want to use GraphQL in all my projects.&lt;/strong&gt; It's a special kind of technology. But If there will be no relational tables then why I will deal with back4app or &lt;strong&gt;Strapi&lt;/strong&gt; with PostgreSQL?&lt;/p&gt;

&lt;h3&gt;
  
  
  Do you need GraphQL?
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;You will use more than 2 tables.&lt;/li&gt;
&lt;li&gt;You will have more than 2 &lt;strong&gt;One to Many&lt;/strong&gt; or &lt;strong&gt;Many to Many&lt;/strong&gt; relationships.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Otherwise, just use MeshyDB, you won't need &lt;strong&gt;Parse Platform&lt;/strong&gt; until you add your third table.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; &lt;em&gt;I don't trust MangoDb nor parse for production. I will use PostgreSQL or MySql&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For serious projects, I will use Relational database management systems (RDBMS) with &lt;strong&gt;Laravel&lt;/strong&gt; or &lt;strong&gt;Strapi&lt;/strong&gt;. They are my first choices for future applications which are in my todo list.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://lumen.laravel.com/"&gt;https://lumen.laravel.com/&lt;/a&gt; &lt;br&gt;
&lt;em&gt;Check out this tutorial&lt;/em&gt;&lt;br&gt;
&lt;a href="https://medium.com/@bsilva0x87/how-to-configure-laravel-lumen-with-lighthouse-php-graphql-ad63b8273321"&gt;https://medium.com/@bsilva0x87/how-to-configure-laravel-lumen-with-lighthouse-php-graphql-ad63b8273321&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;day28&lt;/p&gt;

</description>
      <category>parseplatform</category>
      <category>meshydb</category>
      <category>100daysofcode</category>
      <category>nuxt</category>
    </item>
    <item>
      <title>Nativescript-vue report page</title>
      <dc:creator>cem kaan kosali</dc:creator>
      <pubDate>Sat, 25 Jan 2020 17:36:04 +0000</pubDate>
      <link>https://dev.to/cemkaanguru/nativescript-vue-day27-f5j</link>
      <guid>https://dev.to/cemkaanguru/nativescript-vue-day27-f5j</guid>
      <description>&lt;p&gt;I didn't finish all report page  but hive layout without second layer is finished&lt;/p&gt;

&lt;p&gt;day27&lt;/p&gt;

</description>
      <category>100daysofcode</category>
    </item>
    <item>
      <title>stacklayout in nativescript</title>
      <dc:creator>cem kaan kosali</dc:creator>
      <pubDate>Thu, 23 Jan 2020 17:36:41 +0000</pubDate>
      <link>https://dev.to/cemkaanguru/day25-22al</link>
      <guid>https://dev.to/cemkaanguru/day25-22al</guid>
      <description>&lt;p&gt;After using stacklayout in nativescript, I go on solving freecodecamp javascript.&lt;/p&gt;

&lt;p&gt;day25&lt;/p&gt;

</description>
      <category>100daysofcode</category>
      <category>nativescript</category>
      <category>javascript</category>
    </item>
    <item>
      <title>(D-R-Y)</title>
      <dc:creator>cem kaan kosali</dc:creator>
      <pubDate>Tue, 21 Jan 2020 16:59:07 +0000</pubDate>
      <link>https://dev.to/cemkaanguru/day24-3lpk</link>
      <guid>https://dev.to/cemkaanguru/day24-3lpk</guid>
      <description>&lt;p&gt;&lt;a href="https://vgy.me/u/rGLl8u"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YJcJxtti--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.vgy.me/rGLl8u.png" alt="View on vgy.me" title="View rGLl8u.png on vgy.me"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The DRY Principle is one of the tenets or key concepts of programing. DRY (D-R-Y) stands for Don't Repeat Yourself. &lt;/p&gt;

&lt;p&gt;day24&lt;/p&gt;

</description>
      <category>100daysofcode</category>
    </item>
    <item>
      <title>AWS Certified Cloud Practitioner</title>
      <dc:creator>cem kaan kosali</dc:creator>
      <pubDate>Mon, 20 Jan 2020 16:21:30 +0000</pubDate>
      <link>https://dev.to/cemkaanguru/day23-4f9p</link>
      <guid>https://dev.to/cemkaanguru/day23-4f9p</guid>
      <description>&lt;p&gt;I have studied for AWS Certified Cloud Practitioner. It turned out, I am already familiar with ️ &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Billing and Pricing&lt;/li&gt;
&lt;li&gt;managing  IAM Users&lt;/li&gt;
&lt;li&gt;CloudFront&lt;/li&gt;
&lt;li&gt;S3&lt;/li&gt;
&lt;li&gt;Regions&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;day23&lt;/p&gt;

</description>
      <category>100daysofcode</category>
    </item>
    <item>
      <title>Functional Typescript</title>
      <dc:creator>cem kaan kosali</dc:creator>
      <pubDate>Sun, 19 Jan 2020 17:19:34 +0000</pubDate>
      <link>https://dev.to/cemkaanguru/functional-typescript-164e</link>
      <guid>https://dev.to/cemkaanguru/functional-typescript-164e</guid>
      <description>&lt;h1&gt;
  
  
  Typescript in a Functional Way
&lt;/h1&gt;

&lt;p&gt;We all want to use &lt;strong&gt;advantages of functional paradigm&lt;/strong&gt; in our hybrid language enviroments. But what kind of advantages are we talking about? Let's start with nested functions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Nested Functions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;For Example&lt;/strong&gt;: We can calculate square of a number by the time we add 2 over it, in same function:&lt;br&gt;
&lt;code&gt;f(n)=(n²)+2&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;or you can declare two functions ;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;f1&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="err"&gt;²&lt;/span&gt;
&lt;span class="nx"&gt;f2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;then apply changes in order nested ; &lt;code&gt;f2(f1(n))&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Function Composition&lt;/strong&gt; makes the code more readable.&lt;/p&gt;

&lt;p&gt;You might ask ; how come&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;f1&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="err"&gt;²&lt;/span&gt;
&lt;span class="nx"&gt;f2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;f2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;f1&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;is more readable than  &lt;code&gt;f(n)=(n²)+2&lt;/code&gt; ?&lt;/p&gt;

&lt;p&gt;Basically we just extracted function declarations from function executions. The code reader will just read  &lt;code&gt;square(addTwo())&lt;/code&gt; which means "add 2 to your parameter then take the square of the result". &lt;em&gt;Javascript does not allow dot notation&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;It will make sense if we will use a &lt;strong&gt;composer&lt;/strong&gt; function which will compose our functions, then run many functions one by one. Such as;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;composed&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;composeMany&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;func1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;func2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;func3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;func4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;func5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Compose Two Functions
&lt;/h3&gt;

&lt;p&gt;Function composition is the process of combining two or more functions to produce a new function. &lt;strong&gt;Composing two functions produce a new function.&lt;/strong&gt;&lt;br&gt;
Composing functions together is like snapping together a series of pipes for our data to flow through.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now let's see how to implement compose function in Typescript.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;square&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;number&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;addTwo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;number&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;squareAndAddTwo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;number&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;addTwo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;square&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Still easy to understand right?&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;compose&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;T&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;T&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;T&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;g&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;T&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;T&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;T&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;f&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;g&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Let me explain this simple line in detail.&lt;br&gt;
We assign a type variable called &lt;strong&gt;T&lt;/strong&gt; and show it as &lt;code&gt;&amp;lt;T&amp;gt;&lt;/code&gt; before the outer arrow function. It means all types will be the same. &lt;/p&gt;

&lt;p&gt;By using &lt;code&gt;&amp;lt;T&amp;gt;&lt;/code&gt;; both functions are limited to return the same type as input variable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't need to worry about missed typed variables or functions returning wrong types.&lt;/strong&gt; &lt;br&gt;
Our compose function has two parameters &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;f&lt;/strong&gt; function which returns same type of it's input parameter &lt;strong&gt;x&lt;/strong&gt;. &lt;code&gt;f: (x: T) =&amp;gt; T&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;g&lt;/strong&gt; function which returns same type of it's input parameter &lt;strong&gt;x&lt;/strong&gt;.  &lt;code&gt;g: (x: T) =&amp;gt; T&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;f&lt;/strong&gt; can only get &lt;strong&gt;g&lt;/strong&gt; as argument. That's why we can call it as an &lt;strong&gt;unary&lt;/strong&gt; function.&lt;br&gt;
In functional programing always prefer unary functions. If it's not possible to use unary functions than use binary functions(which have two . In functional programing;  90% of all functions are unary or binary(function calls with two parameters). To make our &lt;strong&gt;compose function&lt;/strong&gt; more correct we can develop it even more. Let's tell typescript to limit the type of &lt;strong&gt;f&lt;/strong&gt; function's argument to match the&lt;br&gt;
the return type of the &lt;strong&gt;g&lt;/strong&gt; function.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;compose3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;T1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;T2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;T3&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;T2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;T3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;g&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;T1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;T2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;T1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;f&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;g&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now &lt;strong&gt;f&lt;/strong&gt; function's argument always must be the same as return type &lt;strong&gt;T2&lt;/strong&gt; of &lt;strong&gt;g&lt;/strong&gt; function.&lt;/p&gt;

&lt;p&gt;How cool is that? Isn't compose function rock solid now? Just show this function when someone argues about typescript. Typescript is useful in such cases. you won't turn back. This is real bug-free coding. It won't even need to get compiled. If your function will return some other type then your IDE will scream. &lt;/p&gt;
&lt;h3&gt;
  
  
  How about composing many functions?
&lt;/h3&gt;

&lt;p&gt;Typescript has rest parameters so we can use them. To have more information about rest parameters in typescript please check documantation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.typescriptlang.org/docs/handbook/functions.html#rest-parameters"&gt;https://www.typescriptlang.org/docs/handbook/functions.html#rest-parameters&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a result, here is the final code as a gist. You better bookmark it for your future needs.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



</description>
      <category>typescript</category>
      <category>functional</category>
    </item>
  </channel>
</rss>
