<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Gatsby Starter Blog RSS Feed]]></title><description><![CDATA[Prasetyodev – Portfolio & blog Dimas Prasetyo (Prasetyodimas). Temukan proyek, keahlian, dan insight seputar pengembangan web.]]></description><link>https://prasetyodev.gatsbyjs.io</link><generator>GatsbyJS</generator><lastBuildDate>Fri, 14 Aug 2026 09:49:16 GMT</lastBuildDate><item><title><![CDATA[Proficiency with state management patterns - React]]></title><description><![CDATA[Proficiency with state management patterns refers to a person's level of expertise or understanding in applying various state management…]]></description><link>https://prasetyodev.gatsbyjs.io/profeciency-state-management-in-react/</link><guid isPermaLink="false">https://prasetyodev.gatsbyjs.io/profeciency-state-management-in-react/</guid><pubDate>Sun, 23 Feb 2025 22:18:22 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Proficiency with state management patterns&lt;/strong&gt; refers to a person&apos;s level of expertise or understanding in applying various state management patterns in application development.&lt;/p&gt;
&lt;p&gt;Dalam konteks frontend development (terutama di React), ini mencakup:&lt;/p&gt;
&lt;h3&gt;Local component state&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;* `useState`
* `useReducer`&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;Global state&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;* Context API
* Redux
* Zustand
* Recoil
* Jotai&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;Server state&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;* React Query
* SWR&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;Pola umum dalam state management&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Flux/Redux Pattern&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Menggunakan reducer, actions, dan store global&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Atomic State Pattern&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Seperti yang digunakan di Recoil/Jotai&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Selector Pattern&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Meminimalkan re-render dengan memisahkan state yang relevan&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modular/Slice Pattern&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Memisahkan state ke dalam slice untuk aplikasi skala besar&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Kemampuan&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;* Mampu memilih pola yang tepat sesuai dengan kompleksitas aplikasi.
* Mampu mengoptimalkan state management untuk meningkatkan performa aplikasi.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;In this case, we discuss Zustand state management:&lt;/p&gt;
&lt;h2&gt;Zustand&lt;/h2&gt;
&lt;p&gt;Zustand is a lightweight state management library for React that offers a simpler and more minimalist approach compared to Redux. Here are some key patterns in state management using Zustand:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Basic Global State
Pola ini cocok untuk aplikasi kecil atau fitur yang hanya memerlukan state global sederhana.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;markdown&quot;&gt;&lt;pre class=&quot;language-markdown&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;    import { create } from &apos;zustand&apos;;

&lt;span class=&quot;token code keyword&quot;&gt;    type Store = {
        count: number;
        increment: () =&gt; void;
    };&lt;/span&gt;

&lt;span class=&quot;token code keyword&quot;&gt;    const useCounterStore = create&amp;lt;Store&gt;((set) =&gt; ({
        count: 0,
        increment: () =&gt; set((state) =&gt; ({ count: state.count + 1 })),
    }));&lt;/span&gt;

&lt;span class=&quot;token code keyword&quot;&gt;    export default useCounterStore;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;📌 Pola ini sederhana dan cukup untuk state management kecil.&lt;/p&gt;
&lt;p&gt;🔹 2. Selector Pattern (Avoid Unnecessary Re-renders)&lt;/p&gt;
&lt;p&gt;Untuk menghindari re-render berlebihan, gunakan selector agar hanya membaca bagian state yang dibutuhkan.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;markdown&quot;&gt;&lt;pre class=&quot;language-markdown&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;import { create } from &apos;zustand&apos;;

&lt;span class=&quot;token code keyword&quot;&gt;    const useCounterStore = create((set) =&gt; ({
        count: 0,
        increment: () =&gt; set((state) =&gt; ({ count: state.count + 1 })),
    }));&lt;/span&gt;

&lt;span class=&quot;token code keyword&quot;&gt;    const CounterComponent = () =&gt; {
        const count = useCounterStore((state) =&gt; state.count); // Hanya re-render jika &apos;count&apos; berubah&lt;/span&gt;

&lt;span class=&quot;token code keyword&quot;&gt;        return &amp;lt;div&gt;Count: {count}&amp;lt;/div&gt;;
    };&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;📌 Menggunakan selector akan meningkatkan performa dengan menghindari re-render tidak perlu.&lt;/p&gt;
&lt;p&gt;🔹 3. Middleware Pattern (Logging &amp;#x26; Persistence)&lt;/p&gt;
&lt;p&gt;Zustand mendukung middleware untuk logging, persistence, atau devtools.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;markdown&quot;&gt;&lt;pre class=&quot;language-markdown&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;    import { create } from &apos;zustand&apos;;
    import { devtools, persist } from &apos;zustand/middleware&apos;;

&lt;span class=&quot;token code keyword&quot;&gt;    const useUserStore = create(
    devtools(
        persist(
        (set) =&gt; ({
            user: null,
            login: (user) =&gt; set({ user }),
            logout: () =&gt; set({ user: null }),
        }),
        { name: &apos;user-storage&apos; } // Persistent storage key
        )
    )
    );&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;📌 Pola ini ideal untuk debugging (devtools) dan menyimpan state ke localStorage (persist).&lt;/p&gt;
&lt;p&gt;🔹 4. Action Pattern (Encapsulation of Logic)&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;markdown&quot;&gt;&lt;pre class=&quot;language-markdown&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;    Untuk meningkatkan keterbacaan, logika dapat dipisahkan dalam fungsi actions.

&lt;span class=&quot;token code keyword&quot;&gt;    import { create } from &apos;zustand&apos;;&lt;/span&gt;

&lt;span class=&quot;token code keyword&quot;&gt;    const useTodoStore = create((set) =&gt; ({
    todos: [],
    addTodo: (text) =&gt;
        set((state) =&gt; ({ todos: [...state.todos, { text, completed: false }] })),
    toggleTodo: (index) =&gt;
        set((state) =&gt; ({
        todos: state.todos.map((todo, i) =&gt;
            i === index ? { ...todo, completed: !todo.completed } : todo
        ),
        })),
    }));&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;📌 Memisahkan actions mempermudah pengelolaan logika state.&lt;/p&gt;
&lt;p&gt;🔹 5. Slice Pattern (Modular State Management)&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Untuk aplikasi besar, pecah state menjadi &quot;slice&quot; modular.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;markdown&quot;&gt;&lt;pre class=&quot;language-markdown&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;    import { create } from &apos;zustand&apos;;

&lt;span class=&quot;token code keyword&quot;&gt;    // User slice
    const createUserSlice = (set) =&gt; ({
    user: null,
    setUser: (user) =&gt; set({ user }),
    });&lt;/span&gt;

&lt;span class=&quot;token code keyword&quot;&gt;    // Cart slice
    const createCartSlice = (set) =&gt; ({
    cart: [],
    addToCart: (item) =&gt; set((state) =&gt; ({ cart: [...state.cart, item] })),
    });&lt;/span&gt;

&lt;span class=&quot;token code keyword&quot;&gt;    // Combine slices
    const useStore = create((set) =&gt; ({
    ...createUserSlice(set),
    ...createCartSlice(set),
    }));&lt;/span&gt;

&lt;span class=&quot;token code keyword&quot;&gt;    export default useStore;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;📌 Pendekatan ini bagus untuk memisahkan domain state menjadi modular dan scalable.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Angular SSR - Angular Universal Packages]]></title><description><![CDATA[Pengertian dari teknik SSR, Server Side Rendering atau SSR merupakan salah satu jenis metode rendering, dimana proses kompilasi / rendering…]]></description><link>https://prasetyodev.gatsbyjs.io/angular-ssr/</link><guid isPermaLink="false">https://prasetyodev.gatsbyjs.io/angular-ssr/</guid><pubDate>Thu, 23 Nov 2023 22:14:23 GMT</pubDate><content:encoded>&lt;p&gt;Pengertian dari teknik SSR, Server Side Rendering atau SSR merupakan salah satu jenis metode rendering, dimana proses kompilasi / rendering dilakukan pada sisi server.&lt;/p&gt;
&lt;p&gt;Berbeda dengan SSR, CSR melakukan rendering saat client atau web browser menerima data dari server, hal ini biasanya dilakukan oleh Javascript saat menampilkan data ke halaman web.&lt;/p&gt;
&lt;h5&gt;Server Side Rendering :&lt;/h5&gt;
&lt;details&gt;
&lt;summary&gt;Kelebihan &lt;/summary&gt;
&lt;p&gt;Memiliki kelebihan pada optimasi index mesin pencari, mesin pencari lebih mudah menemukan keyword pada konten yang telah dirender.&lt;/p&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;Kekurangan&lt;/summary&gt;
&lt;p&gt;Mengandalkan perfomance/resource server dalam melakukan rendering, sehingga membutuhkan resource yang terus meningkat seiring peningkatan jumlah visitor.&lt;/p&gt;
&lt;/details&gt;
&lt;h5&gt;Client Side Rendering :&lt;/h5&gt;
&lt;details&gt;
&lt;summary&gt;Kelebihan &lt;/summary&gt;
&lt;p&gt;Menggunakan mode &lt;strong&gt;CSR&lt;/strong&gt; akan mengurangi beban server, hal ini dikarenakan proses rendering dilakukan oleh web browser.&lt;/p&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;Kekurangan&lt;/summary&gt;
&lt;p&gt;Fungsional / perfomance website sangat bergantung pada kemampuan web browser.&lt;/p&gt;
&lt;/details&gt;
&lt;h3&gt;Mengapa menggunakan rendering disisi server?&lt;/h3&gt;
&lt;p&gt;Ada 3 alasan kenapa kita melakukan hal ini dengan bantuan dari angular &lt;strong&gt;Universal version&lt;/strong&gt; pada aplikasi kita.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Memfasilitasi web crawlers terkait optimasi SEO &lt;a href=&quot;https://static.googleusercontent.com/media/www.google.com/en//webmasters/docs/search-engine-optimization-starter-guide.pdf&quot;&gt;search engine optimization (SEO)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;improvisasi dari segi performa di mobile / device yang memiliki device rendah.&lt;/li&gt;
&lt;li&gt;Menampilkan halaman dengan cepat dengan metrik &lt;strong&gt;Page Speed Insight&lt;/strong&gt; salah satunya adalah &lt;a href=&quot;https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint&quot;&gt;**first-contentful paint (FCP)&lt;/a&gt;.**&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Penerapan Metode SSR pada Sahabat Bisnis Inovasi ( SABI ).&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Pada repo landing dengan metode CSR kita install package dari angular universal &lt;a href=&quot;https://angular.io/guide/universal&quot;&gt;https://angular.io/guide/universal&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;Enable server-side rendering&lt;/h4&gt;
&lt;p&gt;Untuk membuat aplikasi baru dengan SSR, jalankan :&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;code&quot;&gt;&lt;pre class=&quot;language-code&quot;&gt;&lt;code class=&quot;language-code&quot;&gt;  ng new --ssr&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Untuk menambahkan SSR ke proyek yang sudah ada, gunakan perintah Angular CLI ng add.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;code&quot;&gt;&lt;pre class=&quot;language-code&quot;&gt;&lt;code class=&quot;language-code&quot;&gt;  ng add @angular/ssr&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Perintah ini membuat dan memperbarui kode aplikasi untuk mengaktifkan SSR dan menambahkan file tambahan ke struktur proyek.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;code&quot;&gt;&lt;pre class=&quot;language-code&quot;&gt;&lt;code class=&quot;language-code&quot;&gt; my-app
 |-- server.ts                       # application server
 └── src
     |-- app
     |   └── app.config.server.ts    # server application configuration
     └── main.server.ts              # main server application bootstrapping&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;Check SSR sudah berhasil terimplementasi di sabiweb-landing, Universal in action type in your terminal ng add @nguniversal/express-engine.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hasil Angular universal express engine.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/c80cf5384b8faaf3193b1ad6505e87ea/027f0/git-sc.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 18.9873417721519%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAYAAACOXx+WAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAeklEQVR42p2OWw6DIAAEPU5tQYUUlShp0SIF73+e0djvpo+PySa7yWQLH1cm/2C9zcTR46zDGkt37eh3GtFQnauPiJPAKEORw5O8JMK8MNgRXeljlKVElK/8SZh2WY6ZMAWUVNSX+ivB+4dLJoXE3XmGfjjKf4WtbtkAiz1+lFkGQbYAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;GIT SC&quot;
        title=&quot;&quot;
        src=&quot;/static/c80cf5384b8faaf3193b1ad6505e87ea/f058b/git-sc.png&quot;
        srcset=&quot;/static/c80cf5384b8faaf3193b1ad6505e87ea/c26ae/git-sc.png 158w,
/static/c80cf5384b8faaf3193b1ad6505e87ea/6bdcf/git-sc.png 315w,
/static/c80cf5384b8faaf3193b1ad6505e87ea/f058b/git-sc.png 630w,
/static/c80cf5384b8faaf3193b1ad6505e87ea/40601/git-sc.png 945w,
/static/c80cf5384b8faaf3193b1ad6505e87ea/78612/git-sc.png 1260w,
/static/c80cf5384b8faaf3193b1ad6505e87ea/027f0/git-sc.png 2824w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/afaa4416607608271b4817e88216357e/6ee58/project-structure.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 60.12658227848101%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAABYlAAAWJQFJUiTwAAABcElEQVR42p1TS6rCQBDMaRQX7vwc0KU38AAuFZIYjERB8BjqUvGfRGPIR+tZDZ2n8FR4DUVm+lNT3TMxarUa6vW6oNFoyLfZbArUV61WUSqVUC6XP6JSqcBotVpwXRemacIeDGBZFizbgm3bsuaXsX6//xa9Xk9yOp0ODMdxQMuyDPf7Hf8xrVsulzCogLZer3G9XiV4u92QJAmOx6P4iSAIEIYh4jguchR5ngvHfD7/VbjdbqUoTdNCcRRFOBwOEiM5QdJ3CheLxSshT1fjqefzGfv9XuD7fqHoI+HgcRE0FpCQqggqJeFutyvUcSQa+0rIwsvlIq1yfiwigZJRJeNJmiDLs+8tbzYbmRcJdYacF/2qkqRB4Ms4GNf2Xwj1lln4TJo+cDqdCkL6dU2sVitRTLI/b5nF+jRUJVumj7NkMXM4Q8af3+3LO2y325jNZhgOh/LHjEYjjMdjeJ4ne/URup9MJgLmae50OkW328UPWCNOUkh9UVwAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Project Structure After Generate Angular Universal Packages &quot;
        title=&quot;&quot;
        src=&quot;/static/afaa4416607608271b4817e88216357e/f058b/project-structure.png&quot;
        srcset=&quot;/static/afaa4416607608271b4817e88216357e/c26ae/project-structure.png 158w,
/static/afaa4416607608271b4817e88216357e/6bdcf/project-structure.png 315w,
/static/afaa4416607608271b4817e88216357e/f058b/project-structure.png 630w,
/static/afaa4416607608271b4817e88216357e/40601/project-structure.png 945w,
/static/afaa4416607608271b4817e88216357e/78612/project-structure.png 1260w,
/static/afaa4416607608271b4817e88216357e/6ee58/project-structure.png 1640w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/5f4840271b4e4b4c47c7965fd5fa4e4b/763a5/build-sc.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 48.10126582278481%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA7ElEQVR42pWSS27DMAxEfZugday/9betGi2S+19oIqrWIkA2WoxpUMATh6OpbAUlH8guwWsHqyzEzGHrv7gL8G8GNqCJPkYahDVg+Vow3+Z24GyE4rr1hoBGmDZVyQXe+CoHXXs+bBBMjQMJFm3AUW0T9KcqVfu2aq222ajlcz9xpB3ZZ6xyhb5skkb314BbyHDVKlknYF8BVdIw8Pn3xOP3gfM4W9p73OF6wjXtYSA9G0qYpuuA0SDegJQsWZRMNmiXEbqJ31m7iM/iquzS5+mn5BOiiw3ad0dVSwWtJQyJepJ6Glr99+QiPgJfxUM4iANbLmkAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Buil Screnshoot &quot;
        title=&quot;&quot;
        src=&quot;/static/5f4840271b4e4b4c47c7965fd5fa4e4b/f058b/build-sc.png&quot;
        srcset=&quot;/static/5f4840271b4e4b4c47c7965fd5fa4e4b/c26ae/build-sc.png 158w,
/static/5f4840271b4e4b4c47c7965fd5fa4e4b/6bdcf/build-sc.png 315w,
/static/5f4840271b4e4b4c47c7965fd5fa4e4b/f058b/build-sc.png 630w,
/static/5f4840271b4e4b4c47c7965fd5fa4e4b/40601/build-sc.png 945w,
/static/5f4840271b4e4b4c47c7965fd5fa4e4b/78612/build-sc.png 1260w,
/static/5f4840271b4e4b4c47c7965fd5fa4e4b/763a5/build-sc.png 2804w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;
&lt;p&gt;Cara menjalankan aplikasi &lt;strong&gt;sabiweb-landing-ssr&lt;/strong&gt; contoh ****perintah dasar tanpa environment yang berbeda ditiap server.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token property&quot;&gt;&quot;dev:ssr&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;ng run sabi-landing:serve-ssr&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;&quot;serve:ssr&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;node dist/sabi-landing/server/main.js&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;&quot;build:ssr&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;ng build &amp;amp;&amp;amp; ng run sabi-landing:server&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;&quot;prerender&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;ng run sabi-landing:prerender&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;markdown&quot;&gt;&lt;pre class=&quot;language-markdown&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;Pengertian :
&quot;dev:ssr&quot; -&gt; perintah menjalankan development SSR mode di local env.
&quot;serve:ssr&quot; -&gt; perintah menjalankan mode SSR hasil dari build:ssr
&quot;build:ssr&quot; -&gt; perintah menjalankan mode bundle / build dengan SSR build:ssr:{env}
&quot;prerender&quot; -&gt; perintah untuk prarendering adalah proses di mana halaman dinamis diproses pada waktu pembuatan menghasilkan HTML statis.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Pertimbangan Penting saat Menggunakan Angular Universal&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Meskipun tujuan dari proyek Universal adalah kemampuan untuk merender aplikasi Angular dengan mulus di server, ada beberapa inkonsistensi yang harus di pertimbangkan.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Pertama, ada perbedaan yang jelas antara lingkungan server dan browser. Saat merender di server, aplikasi Anda dalam status singkat atau &quot;snapshot&quot;. Aplikasi sepenuhnya dirender sekali, dengan HTML yang dihasilkan dikembalikan, dan status aplikasi yang tersisa dimusnahkan hingga render berikutnya.&lt;/li&gt;
&lt;li&gt;Lingkungan server secara &lt;strong&gt;&lt;em&gt;inheren&lt;/em&gt;&lt;/strong&gt; ( &lt;strong&gt;berhubungan erat )&lt;/strong&gt; tidak memiliki kemampuan yang sama dengan browser (memiliki beberapa yang juga tidak dimiliki browser). Misalnya, server tidak memiliki konsep &lt;strong&gt;cookie&lt;/strong&gt;. Anda dapat melakukan polyfill ini dan fungsionalitas lainnya, tetapi tidak ada solusi sempurna untuk ini.&lt;/li&gt;
&lt;li&gt;Di bagian selanjutnya, kita akan membahas potensi mitigasi &lt;strong&gt;( upaya untuk mengurangi resiko ),&lt;/strong&gt; untuk mengurangi cakupan kesalahan saat merender di server.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Harap perhatikan juga tujuan SSR&lt;/strong&gt; : meningkatkan waktu rendering awal untuk aplikasi.&lt;/p&gt;
&lt;p&gt;Ini berarti bahwa segala sesuatu yang berpotensi mengurangi kecepatan aplikasi dalam rendering awal ini harus dihindari atau dicegah. Sekali lagi, kita akan meninjau cara melakukannya di bagian selanjutnya.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Masalah yang dihadapi ketika enable SSR mode :&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;“*&lt;strong&gt;*window”**&lt;/strong&gt; contoh jika kita menggunakan window.location.href =’target_link’&lt;/li&gt;
&lt;li&gt;“&lt;strong&gt;**&lt;strong&gt;document&lt;/strong&gt;**&lt;/strong&gt;” contoh jika kita ingin memanipulasi DOM element misal document.getElementById(’your_class_name’).&lt;/li&gt;
&lt;li&gt;“&lt;strong&gt;navigator&lt;/strong&gt;” contoh jika kita ingin enable service worker &lt;strong&gt;&lt;em&gt;( webworker )&lt;/em&gt;&lt;/strong&gt; untuk kerpeluan &lt;strong&gt;PWA.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;“*&lt;strong&gt;*******&lt;/strong&gt;*****&lt;strong&gt;*******&lt;strong&gt;strategy guard*&lt;/strong&gt;*******&lt;/strong&gt;*****&lt;strong&gt;*******&lt;/strong&gt;”&lt;/li&gt;
&lt;li&gt;Initial Rendering menjadi lambat saat ini masih di cari solusinya.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Solusi&lt;/strong&gt; untuk mengatasi error tersebut :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Check setiap fungsi fungsi native js seperti &lt;strong&gt;&lt;em&gt;window&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;document&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;navigator&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;cookies&lt;/strong&gt; ketika ingin di inisialisasi jika ada kebutuhan di proses development ada beberapa tahapan.
&lt;strong&gt;contoh&lt;/strong&gt; lengkap disini &lt;strong&gt;:&lt;/strong&gt; &lt;a href=&quot;https://github.com/angular/universal/blob/main/docs/gotchas.md&quot;&gt;https://github.com/angular/universal/blob/main/docs/gotchas.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;API router strategy : initialNavigation &lt;a href=&quot;https://angular.io/api/router/InitialNavigation&quot;&gt;https://angular.io/api/router/InitialNavigation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Catatan Kaki&lt;/strong&gt; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://kruschecompany.com/ssr-or-csr-for-progressive-web-app/&quot;&gt;https://kruschecompany.com/ssr-or-csr-for-progressive-web-app/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://cybernauts.web.id/2021/09/23/apa-itu-server-side-rendering-dan-client-side-rendering/&quot;&gt;https://cybernauts.web.id/2021/09/23/apa-itu-server-side-rendering-dan-client-side-rendering/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://angular.io/guide/universal&quot;&gt;https://angular.io/guide/universal&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/angular/universal/blob/main/docs/gotchas.md&quot;&gt;https://github.com/angular/universal/blob/main/docs/gotchas.md&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=juvYWRrLtAg&quot;&gt;https://www.youtube.com/watch?v=juvYWRrLtAg&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.newline.co/@eigenjoy/angular-ssr-the-browser-is-not-the-server--2b398f60&quot;&gt;https://www.newline.co/@eigenjoy/angular-ssr-the-browser-is-not-the-server--2b398f60&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.brecht.io/prerendering-angular-apps/&quot;&gt;https://blog.brecht.io/prerendering-angular-apps/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://dev.to/maj07/pre-rendering-an-angular-app-4ado&quot;&gt;https://dev.to/maj07/pre-rendering-an-angular-app-4ado&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://medium.com/geekculture/angular-server-side-rendering-ssr-vs-pre-rendering-and-why-do-it-in-the-first-place-28419e3220db&quot;&gt;https://medium.com/geekculture/angular-server-side-rendering-ssr-vs-pre-rendering-and-why-do-it-in-the-first-place-28419e3220db&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://medium.com/upstate-interactive/how-to-build-an-angular-app-with-server-side-rendering-f7f415b851c8&quot;&gt;https://medium.com/upstate-interactive/how-to-build-an-angular-app-with-server-side-rendering-f7f415b851c8&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://medium.com/jspoint/server-side-rendering-ssr-in-angular-5-the-simplest-and-quickest-ssr-approach-34cf53224f32&quot;&gt;https://medium.com/jspoint/server-side-rendering-ssr-in-angular-5-the-simplest-and-quickest-ssr-approach-34cf53224f32&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://catalincodes.com/posts/efficient-content-hydration-with-angular-universal&quot;&gt;https://catalincodes.com/posts/efficient-content-hydration-with-angular-universal&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[My Second Post!]]></title><description><![CDATA[Wow! I love blogging so much already. Did you know that "despite its name, salted duck eggs can also be made from
chicken eggs, though the…]]></description><link>https://prasetyodev.gatsbyjs.io/my-second-post/</link><guid isPermaLink="false">https://prasetyodev.gatsbyjs.io/my-second-post/</guid><pubDate>Wed, 06 May 2015 23:46:37 GMT</pubDate><content:encoded>&lt;p&gt;Wow! I love blogging so much already.&lt;/p&gt;
&lt;p&gt;Did you know that &quot;despite its name, salted duck eggs can also be made from
chicken eggs, though the taste and texture will be somewhat different, and the
egg yolk will be less rich.&quot;?
(&lt;a href=&quot;https://en.wikipedia.org/wiki/Salted_duck_egg&quot;&gt;Wikipedia Link&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Yeah, I didn&apos;t either.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Hello World]]></title><description><![CDATA[This is my first post on my new fake blog! How exciting! I'm sure I'll write a lot more interesting things in the future. Oh, and here's a…]]></description><link>https://prasetyodev.gatsbyjs.io/hello-world/</link><guid isPermaLink="false">https://prasetyodev.gatsbyjs.io/hello-world/</guid><pubDate>Fri, 01 May 2015 22:12:03 GMT</pubDate><content:encoded>&lt;p&gt;This is my first post on my new fake blog! How exciting!&lt;/p&gt;
&lt;p&gt;I&apos;m sure I&apos;ll write a lot more interesting things in the future.&lt;/p&gt;
&lt;p&gt;Oh, and here&apos;s a great quote from this Wikipedia on
&lt;a href=&quot;https://en.wikipedia.org/wiki/Salted_duck_egg&quot;&gt;salted duck eggs&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A salted duck egg is a Chinese preserved food product made by soaking duck
eggs in brine, or packing each egg in damp, salted charcoal. In Asian
supermarkets, these eggs are sometimes sold covered in a thick layer of salted
charcoal paste. The eggs may also be sold with the salted paste removed,
wrapped in plastic, and vacuum packed. From the salt curing process, the
salted duck eggs have a briny aroma, a gelatin-like egg white and a
firm-textured, round yolk that is bright orange-red in color.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/8058f3f26913fea3b6a89a73344fe94a/e1596/salty_egg.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 75.31645569620254%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMB/8QAFwEAAwEAAAAAAAAAAAAAAAAAAAEEBf/aAAwDAQACEAMQAAABgik0dXC//8QAGRABAAMBAQAAAAAAAAAAAAAAAQACERIy/9oACAEBAAEFAkqW7B5Zox9t8n//xAAXEQEAAwAAAAAAAAAAAAAAAAAAERJB/9oACAEDAQE/AdVl/8QAFhEBAQEAAAAAAAAAAAAAAAAAABEC/9oACAECAQE/AYun/8QAGxAAAQQDAAAAAAAAAAAAAAAAAAECESEiMTL/2gAIAQEABj8CvRjaHMkvIQo//8QAGxAAAwEBAAMAAAAAAAAAAAAAAREhAEGBobH/2gAIAQEAAT8hsTTH203YINmYDPHckkPzQiAnv//aAAwDAQACAAMAAAAQyC//xAAXEQEBAQEAAAAAAAAAAAAAAAABABEh/9oACAEDAQE/EBHDK6y//8QAGBEAAgMAAAAAAAAAAAAAAAAAAAERIVH/2gAIAQIBAT8QWiS0j//EABwQAQEAAgMBAQAAAAAAAAAAAAERADEhYYFB4f/aAAgBAQABPxBOzi0NHmChLtHkL9EcWZeCVJ1kcRoVp3lEYcnjEk0ES7/Jn//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Chinese Salty Egg&quot;
        title=&quot;&quot;
        src=&quot;/static/8058f3f26913fea3b6a89a73344fe94a/828fb/salty_egg.jpg&quot;
        srcset=&quot;/static/8058f3f26913fea3b6a89a73344fe94a/ff44c/salty_egg.jpg 158w,
/static/8058f3f26913fea3b6a89a73344fe94a/a6688/salty_egg.jpg 315w,
/static/8058f3f26913fea3b6a89a73344fe94a/828fb/salty_egg.jpg 630w,
/static/8058f3f26913fea3b6a89a73344fe94a/0ede0/salty_egg.jpg 945w,
/static/8058f3f26913fea3b6a89a73344fe94a/3ac88/salty_egg.jpg 1260w,
/static/8058f3f26913fea3b6a89a73344fe94a/e1596/salty_egg.jpg 2048w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;You can also write code blocks here!&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;js&quot;&gt;&lt;pre class=&quot;language-js&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; saltyDuckEgg &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;chinese preserved food product&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;Number&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Title&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;Year&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;1&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Harry Potter and the Philosopher’s Stone&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2001&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;2&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Harry Potter and the Chamber of Secrets&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2002&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;3&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Harry Potter and the Prisoner of Azkaban&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2004&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a href=&quot;https://raw.github.com/adamschwartz/github-markdown-kitchen-sink/master/README.md&quot;&gt;View raw (TEST.md)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is a paragraph.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;This is a paragraph.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;Header 1&lt;/h1&gt;
&lt;h2&gt;Header 2&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Header 1
========

Header 2
--------&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;Header 1&lt;/h1&gt;
&lt;h2&gt;Header 2&lt;/h2&gt;
&lt;h3&gt;Header 3&lt;/h3&gt;
&lt;h4&gt;Header 4&lt;/h4&gt;
&lt;h5&gt;Header 5&lt;/h5&gt;
&lt;h6&gt;Header 6&lt;/h6&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;# Header 1
## Header 2
### Header 3
#### Header 4
##### Header 5
###### Header 6&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;Header 1&lt;/h1&gt;
&lt;h2&gt;Header 2&lt;/h2&gt;
&lt;h3&gt;Header 3&lt;/h3&gt;
&lt;h4&gt;Header 4&lt;/h4&gt;
&lt;h5&gt;Header 5&lt;/h5&gt;
&lt;h6&gt;Header 6&lt;/h6&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;# Header 1 #
## Header 2 ##
### Header 3 ###
#### Header 4 ####
##### Header 5 #####
###### Header 6 ######&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&gt; Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;h2&gt;This is a header.&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;This is the first list item.&lt;/li&gt;
&lt;li&gt;This is the second list item.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here&apos;s some example code:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Markdown.generate();&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&gt; ## This is a header.
&gt; 1. This is the first list item.
&gt; 2. This is the second list item.
&gt;
&gt; Here&apos;s some example code:
&gt;
&gt;     Markdown.generate();&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Red&lt;/li&gt;
&lt;li&gt;Green&lt;/li&gt;
&lt;li&gt;Blue&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Red&lt;/li&gt;
&lt;li&gt;Green&lt;/li&gt;
&lt;li&gt;Blue&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Red&lt;/li&gt;
&lt;li&gt;Green&lt;/li&gt;
&lt;li&gt;Blue&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;markdown&quot;&gt;&lt;pre class=&quot;language-markdown&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; Red
&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; Green
&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; Blue

&lt;span class=&quot;token list punctuation&quot;&gt;*&lt;/span&gt; Red
&lt;span class=&quot;token list punctuation&quot;&gt;*&lt;/span&gt; Green
&lt;span class=&quot;token list punctuation&quot;&gt;*&lt;/span&gt; Blue

&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; Red
&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; Green
&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; Blue&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;code goes&lt;/code&gt; here in this line&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;bold&lt;/strong&gt; goes here&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;markdown&quot;&gt;&lt;pre class=&quot;language-markdown&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token code-snippet code keyword&quot;&gt;`code goes`&lt;/span&gt; here in this line
&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token bold&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;token content&quot;&gt;bold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;/span&gt; goes here&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Buy flour and salt&lt;/li&gt;
&lt;li&gt;Mix together with water&lt;/li&gt;
&lt;li&gt;Bake&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;markdown&quot;&gt;&lt;pre class=&quot;language-markdown&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;&lt;span class=&quot;token list punctuation&quot;&gt;1.&lt;/span&gt; Buy flour and salt
&lt;span class=&quot;token list punctuation&quot;&gt;1.&lt;/span&gt; Mix together with water
&lt;span class=&quot;token list punctuation&quot;&gt;1.&lt;/span&gt; Bake&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;code goes&lt;/code&gt; here in this line&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;bold&lt;/strong&gt; goes here&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;markdown&quot;&gt;&lt;pre class=&quot;language-markdown&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;&lt;span class=&quot;token list punctuation&quot;&gt;1.&lt;/span&gt; &lt;span class=&quot;token code-snippet code keyword&quot;&gt;`code goes`&lt;/span&gt; here in this line
&lt;span class=&quot;token list punctuation&quot;&gt;1.&lt;/span&gt; &lt;span class=&quot;token bold&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;token content&quot;&gt;bold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;/span&gt; goes here&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Paragraph:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Code&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;!-- --&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Paragraph:

    Code&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;* * *

***

*****

- - -

---------------------------------------&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This is &lt;a href=&quot;http://example.com&quot; title=&quot;Example&quot;&gt;an example&lt;/a&gt; link.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://example.com&quot;&gt;This link&lt;/a&gt; has no title attr.&lt;/p&gt;
&lt;p&gt;This is &lt;a href=&quot;http://example.com&quot; title=&quot;Optional Title&quot;&gt;an example&lt;/a&gt; reference-style link.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;This is [an example](http://example.com &quot;Example&quot;) link.

[This link](http://example.com) has no title attr.

This is [an example] [id] reference-style link.

[id]: http://example.com &quot;Optional Title&quot;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;em&gt;single asterisks&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;single underscores&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;double asterisks&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;double underscores&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;*single asterisks*

_single underscores_

**double asterisks**

__double underscores__&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This paragraph has some &lt;code class=&quot;language-text&quot;&gt;code&lt;/code&gt; in it.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;This paragraph has some `code` in it.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&quot;https://via.placeholder.com/200x50&quot; alt=&quot;Alt Text&quot; title=&quot;Image Title&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;![Alt Text](https://via.placeholder.com/200x50 &quot;Image Title&quot;)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content:encoded></item></channel></rss>