<?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: Warat Wongmaneekit</title>
    <description>The latest articles on DEV Community by Warat Wongmaneekit (@thangman22).</description>
    <link>https://dev.to/thangman22</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%2F109063%2F2dc5b3a6-9201-4067-997a-5dfe40884eff.png</url>
      <title>DEV Community: Warat Wongmaneekit</title>
      <link>https://dev.to/thangman22</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thangman22"/>
    <language>en</language>
    <item>
      <title>อวสาน Library Lazy Load เพราะมันกำลังจะกลายเป็น Native</title>
      <dc:creator>Warat Wongmaneekit</dc:creator>
      <pubDate>Mon, 27 Jul 2020 03:20:22 +0000</pubDate>
      <link>https://dev.to/thangman22/library-lazy-load-native-35ag</link>
      <guid>https://dev.to/thangman22/library-lazy-load-native-35ag</guid>
      <description>&lt;p&gt;ที่ผ่านมา สาย Optimize หรือ คนทำเว็บที่มีรูปเยอะๆ ก็มักที่จะใช้เทคนิค Lazy load กันทั้งนั้น ซึ่งต่างคนต่างก็จะมี Lib ที่ตัวเองถนัดต่างกันออกไป ตัวที่น่าจะฮิตที่สุดก็คงไม่พ้น ตัวนี้&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/verlok" rel="noopener noreferrer"&gt;
        verlok
      &lt;/a&gt; / &lt;a href="https://github.com/verlok/vanilla-lazyload" rel="noopener noreferrer"&gt;
        vanilla-lazyload
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      LazyLoad is a lightweight, flexible script that speeds up your website by deferring the loading of your below-the-fold images, backgrounds, videos, iframes and scripts to when they will enter the viewport. Written in plain "vanilla" JavaScript, it leverages IntersectionObserver, supports responsive images and enables native lazy loading.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;LazyLoad is a lightweight (2.4 kB) and flexible script that &lt;strong&gt;speeds up your web application&lt;/strong&gt; by deferring the loading of your below-the-fold images, animated SVGs, videos and iframes to &lt;strong&gt;when they will enter the viewport&lt;/strong&gt;. It's written in plain "vanilla" JavaScript, it leverages the &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API" rel="nofollow noopener noreferrer"&gt;IntersectionObserver&lt;/a&gt; API, it supports &lt;a href="https://alistapart.com/article/responsive-images-in-practice" rel="nofollow noopener noreferrer"&gt;responsive images&lt;/a&gt;, it optimizes your website for slower connections, and can enable native lazy loading. See &lt;a href="https://github.com/verlok/vanilla-lazyload#-all-features-compared" rel="noopener noreferrer"&gt;all features&lt;/a&gt; for more.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.npmjs.com/package/vanilla-lazyload" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b95fecfb77d86e25eb2b9b0e38fe1ce9bc63ba961a2557eed394a554b8fd9e14/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f76616e696c6c612d6c617a796c6f61642f6c61746573742e737667" alt="vanilla-lazyload (latest)"&gt;&lt;/a&gt;
&lt;a href="https://www.npmjs.com/package/vanilla-lazyload" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/c75d5af69896717f2a173c19d222a82b9b3b14e8d8edd197787893db63ea5dc3/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f64792f76616e696c6c612d6c617a796c6f61642e737667" alt="vanilla-lazyload (downloads)"&gt;&lt;/a&gt;
&lt;a href="https://www.jsdelivr.com/package/npm/vanilla-lazyload" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/e3c4055a0dd2321b99fea9f2ad74aa3e4caed7a6fe82b31dc6c1ae67ca1cbff7/68747470733a2f2f646174612e6a7364656c6976722e636f6d2f76312f7061636b6167652f6e706d2f76616e696c6c612d6c617a796c6f61642f6261646765" alt=""&gt;&lt;/a&gt;
&lt;a href="https://github.com/verlok/vanilla-lazyload/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/verlok/vanilla-lazyload/actions/workflows/ci.yml/badge.svg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;➡️ Jump to: &lt;a href="https://github.com/verlok/vanilla-lazyload#-getting-started---html" rel="noopener noreferrer"&gt;👨‍💻 Getting started - HTML&lt;/a&gt; - &lt;a href="https://github.com/verlok/vanilla-lazyload#-getting-started---script" rel="noopener noreferrer"&gt;👩‍💻 Getting started - Script&lt;/a&gt; - &lt;a href="https://github.com/verlok/vanilla-lazyload#-recipes" rel="noopener noreferrer"&gt;🥧 Recipes&lt;/a&gt; - &lt;a href="https://github.com/verlok/vanilla-lazyload#-demos" rel="noopener noreferrer"&gt;📺 Demos&lt;/a&gt; - &lt;a href="https://github.com/verlok/vanilla-lazyload#-tips--tricks" rel="noopener noreferrer"&gt;😋 Tips &amp;amp; tricks&lt;/a&gt; - &lt;a href="https://github.com/verlok/vanilla-lazyload#-api" rel="noopener noreferrer"&gt;🔌 API&lt;/a&gt; - &lt;a href="https://github.com/verlok/vanilla-lazyload#-all-features-compared" rel="noopener noreferrer"&gt;😯 All features compared&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Love this project? 😍 &lt;a href="https://ko-fi.com/verlok" rel="nofollow noopener noreferrer"&gt;Buy me a coffee!&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;👨‍💻 Getting started - HTML&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;In order to make your content be loaded by LazyLoad, you must use some &lt;code&gt;data-&lt;/code&gt; attributes instead of the actual attributes. Examples below.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Lazy image:&lt;/h3&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-text-html-basic notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;img&lt;/span&gt; &lt;span class="pl-c1"&gt;alt&lt;/span&gt;="&lt;span class="pl-s"&gt;A lazy image&lt;/span&gt;" &lt;span class="pl-c1"&gt;class&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/verlok/vanilla-lazyload" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;ซึงทุกคนก็คงรู้ว่า การใส่ Lib JS เข้าไป ถึงแม้จะทำให้ รูปโหลดเร็วขึ้น แต่เราก็ต้องแลกกับการมี Lib หนึ่งตัว ติดอยู่ใน Code ของเรา แต่เรื่องนี้มันกำลังจะจบลงในอีกไม่นานนี้ครับ เพราะว่า lazyload ที่เป็น native กำลังจะ Support ทุก Browser แล้ว!!!!!!&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcaniuse.bitsofco.de%2Fimage%2Floading-lazy-attr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcaniuse.bitsofco.de%2Fimage%2Floading-lazy-attr.png" alt="Current Browser Support"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ตอนนี้ก็เหลือแค่ Safari เอา Feature นี้ออกจาก Experimental เท่านี้ เราก็จะใช้ LazyLoad ได้โดยไม่ต้องใช้ Lib อะไรแล้ว ส่วนใครที่สงสัยว่ามันใช้ยังไง วิธีก็ง่ายมากๆครับ เพียงแค่ เขียน Attribute loading=”lazy” ไว้ใน tag image หรือ Iframe ก็สามารถใช้งาน lazyload ได้เลย&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;img src="https://example.org/image.jpg" width=”300” height=”200” loading=”lazy”&amp;gt;
&amp;lt;iframe src="https://example.org/" width=”300” height=”200” loading=”lazy”&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;มีอยู่นิดเดียวที่ต้องรู้ก็คือ Image ที่จะใส่ Lazy load ต้องกำหนด ขนาดให้มันนะครับ ไม่อย่างนั้น Lazyload จะไม่ทำงานครับ&lt;/p&gt;

&lt;p&gt;แล้วพอ feature นี้มันกลายเป็น Native เวลาที่ Browser Optimize อะไรก็จะส่งผลให้ Feature นี้ ทำงานได้ดีขึ้นไปอีกโดยที่เราไม่จำเป็นต้องไปปรับแต่งอะไรอย่างเช่น Chrome ที่มี Feature นี้มานานมากๆแล้ว ก็ได้ Optimize Feature นี้ไปบางส่วนแล้วเหมือนกัน&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1284020009350701057-808" src="https://platform.twitter.com/embed/Tweet.html?id=1284020009350701057"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1284020009350701057-808');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1284020009350701057&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;ก็เอาว่าใครยังไม่เคยลองใช้ก็ไปใช้ดูครับ ของดีๆที่ใช้ง่ายๆ&lt;/p&gt;

</description>
      <category>webperf</category>
    </item>
    <item>
      <title>Oversize Images Finder Tool</title>
      <dc:creator>Warat Wongmaneekit</dc:creator>
      <pubDate>Mon, 11 May 2020 06:07:47 +0000</pubDate>
      <link>https://dev.to/thangman22/oversize-images-finder-tool-1p18</link>
      <guid>https://dev.to/thangman22/oversize-images-finder-tool-1p18</guid>
      <description>&lt;p&gt;Large image is always hurt my optimization job some time loading behavior is hidden those image from PageS peed Insight Please checkout this tools and use it for finding the Oversize Images on your website &lt;/p&gt;

&lt;p&gt;Installation has done by standard npm install&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i -g oversize-images-finder
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;After you install just run command following and define your target API&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;oversize-images-finder --url [url]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;The tool will display the result of inspection&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TkHh4r65--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/i3ugv5tby8b8gf6oyqhv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TkHh4r65--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/i3ugv5tby8b8gf6oyqhv.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you can see which images are oversize and should resize original image&lt;/p&gt;

</description>
      <category>weboptimization</category>
    </item>
    <item>
      <title>How to display 3d as AR on Android and iOS without &lt;model-viewer&gt;</title>
      <dc:creator>Warat Wongmaneekit</dc:creator>
      <pubDate>Sun, 26 May 2019 05:50:12 +0000</pubDate>
      <link>https://dev.to/thangman22/how-to-display-3d-as-ar-on-android-and-ios-without-model-viewer-1bk3</link>
      <guid>https://dev.to/thangman22/how-to-display-3d-as-ar-on-android-and-ios-without-model-viewer-1bk3</guid>
      <description>&lt;p&gt;After Google launch 3d and AR on Google Search in Google I/O 19 I'm so curious, "How Google do this." I have desired to talk with Googler in Google I/O event, and the answer is "we use &lt;a href="https://github.com/GoogleWebComponents/model-viewer"&gt;model-viwer&lt;/a&gt;." It does not surprise me (for the name) because I had to try this Web component before, but in the past version, you have to install a particular version of Chrome for using the (buggy) AR feature, but they told me with the new version of ARcore you don't need the particular version of Chrome anymore. I'm back home and try to play around with  and attempt to reverse engineer this Component and this is a result&lt;/p&gt;

&lt;h2&gt;
  
  
  Talking about  first
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;model-viewer&amp;gt;&lt;/code&gt; is a Web component to help web developer display the 3D model on the web easier. With the few lines of code as below, you will get a nice look of the 3D model viewer on the web.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Import the component --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"module"&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://unpkg.com/@google/model-viewer/dist/model-viewer.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;nomodule&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://unpkg.com/@google/model-viewer/dist/model-viewer-legacy.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="c"&gt;&amp;lt;!-- Use it like any other HTML element --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;model-viewer&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"examples/assets/Astronaut.glb"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"A 3D model of an astronaut"&lt;/span&gt; &lt;span class="na"&gt;auto-rotate&lt;/span&gt; &lt;span class="na"&gt;camera-controls&lt;/span&gt; &lt;span class="na"&gt;background-color=&lt;/span&gt;&lt;span class="s"&gt;"#455A64"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/model-viewer&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DxTphtzt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/xe9ssm2gslam7a516vtr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DxTphtzt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/xe9ssm2gslam7a516vtr.png" alt="the result of &amp;lt;model-viewer&amp;gt;"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and with the few attribute such as &lt;code&gt;magic-leap&lt;/code&gt; &lt;code&gt;unstable-webxr&lt;/code&gt; &lt;code&gt;ar&lt;/code&gt; you will get the AR viewer for your model like this&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NlSYaBSH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/m2qk4ph1zl6fya7lg07u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NlSYaBSH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/m2qk4ph1zl6fya7lg07u.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How model-viewer can do this...
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Android
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MPphpFD7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ak4dz73lae62fo2nnp36.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MPphpFD7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ak4dz73lae62fo2nnp36.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I try to inspect the AR button with Chrome Devtools, but I can't see anything because they are not put link on HTML tag. I desire to go back to the code and find the id of AR button So... I got this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;    &lt;span class="nx"&gt;modelUrl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;protocol&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;intent://&lt;/span&gt;&lt;span class="dl"&gt;'&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;intent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;modelUrl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;()}&lt;/span&gt;&lt;span class="s2"&gt;?link=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;link&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;amp;title=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;
        &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;#Intent;scheme=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;
        &lt;span class="nx"&gt;scheme&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;;package=com.google.ar.core;action=android.intent.action.VIEW;S.browser_fallback_url=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;
        &lt;span class="nb"&gt;encodeURIComponent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;locationUrl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;())}&lt;/span&gt;&lt;span class="s2"&gt;;end;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;In &lt;code&gt;src/features/ar.ts&lt;/code&gt; they try to handle AR feature if XR API in Chrome is not enabled yet. I still have no idea how this link looks like. Try to put console.log in build code, and this is the result of that intent link.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;intent://517d3b3f.ap.ngrok.io/examples/assets/Astronaut.glb?link=https://517d3b3f.ap.ngrok.io/examples/augmented-reality.html&amp;amp;amp;title=A3Dmodelofanastronaut#Intent;scheme=https;package=com.google.ar.core;action=android.intent.action.VIEW;S.browser_fallback_url=https://517d3b3f.ap.ngrok.io/examples/augmented-reality.html#model-viewer-no-ar-fallback;end;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;It looks like they use the Sense View feature on the new version of ARcore (1.9) . Right now we know the intent link, so this is the structure of the intent link and how this magic happens.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;intent://[link of the glb file]?link=[link of the page of this model for display in Sense view]&amp;amp;title=[title of this model]#Intent;scheme=https;package=com.google.ar.core;action=android.intent.action.VIEW;S.browser_fallback_url=[if the viewer not support what is the fallback];end;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;After try to copy this link and put in &lt;a&gt; on standard HTML its work!!!! So right now if we want to display your 3D model on real space, we don't need  anymore&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  iOS
&lt;/h3&gt;

&lt;p&gt;With iOS, It's soooo easyyyy because regular iOS &amp;gt; (11.0) is already support 3D model viewer as an AR. We just only put &lt;code&gt;.usdz&lt;/code&gt; File to the link and done. When a link is, click iOS will open a 3D model viewer with AR option, and you play around.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the future?
&lt;/h2&gt;

&lt;p&gt;With this solution, It's not easy to make AR more programmatic because of it just viewer outside the Browser. We have to wait for XR API on Browser more stable and supportive then AR on Web will be better than today but during waiting play this first.&lt;/p&gt;

</description>
      <category>webar</category>
      <category>ar</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Short fire / Self-hosted shorten URL generator for Firebase hosting</title>
      <dc:creator>Warat Wongmaneekit</dc:creator>
      <pubDate>Fri, 22 Feb 2019 09:08:47 +0000</pubDate>
      <link>https://dev.to/thangman22/short-fire--self-hosted-shorten-url-generator-for-firebase-hosting-2dn3</link>
      <guid>https://dev.to/thangman22/short-fire--self-hosted-shorten-url-generator-for-firebase-hosting-2dn3</guid>
      <description>&lt;p&gt;After I had using shorten link service such as Google, Bit.ly. I'd always struggle with a custom domain and slug feature. Some service provides custom domain but not a custom slug also you need to pay some fee for using a custom domain. I try to discover a feature in Firebase Hosting and I found that Firebase hosting is support redirect rules but you need to manual setup. I created a tool for generating redirect rules to make Firebase hosting become shorten link service. This is &lt;strong&gt;Short fire&lt;/strong&gt;. You can try &lt;strong&gt;Short fire&lt;/strong&gt; by &lt;code&gt;npm -g install short-fire&lt;/code&gt; and follow instruction. &lt;a href="https://github.com/thangman22/short-fire" rel="noopener noreferrer"&gt;https://github.com/thangman22/short-fire&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F0q3kfb22e4q5gmorqeji.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F0q3kfb22e4q5gmorqeji.gif" title="Screen Shot" alt="Screen Shot"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>firebase</category>
      <category>shortenlink</category>
    </item>
  </channel>
</rss>
