<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>비전공자 개발일기</title>
    <link>https://hirodaegu.tistory.com/</link>
    <description>비전공자의 개발자 이야기</description>
    <language>ko</language>
    <pubDate>Wed, 24 Jun 2026 02:56:48 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>HiroDaegu</managingEditor>
    <image>
      <title>비전공자 개발일기</title>
      <url>https://tistory1.daumcdn.net/tistory/4827624/attach/3649b91ba73643e78f003f6cdbb0416c</url>
      <link>https://hirodaegu.tistory.com</link>
    </image>
    <item>
      <title>React &amp;amp; Vue &amp;amp; Svelte</title>
      <link>https://hirodaegu.tistory.com/576</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;React,&amp;nbsp;Vue&amp;nbsp;및&amp;nbsp;Svelte는&amp;nbsp;동적&amp;nbsp;사용자&amp;nbsp;인터페이스를&amp;nbsp;구축하는&amp;nbsp;데&amp;nbsp;사용되는&amp;nbsp;인기&amp;nbsp;있는&amp;nbsp;프런트&amp;nbsp;엔드&amp;nbsp;프레임워크입니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;React-icon.svg.png&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1043&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cz2gjp/btsdpxqOYDp/6Le5c0KBX6qztILJy2orE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cz2gjp/btsdpxqOYDp/6Le5c0KBX6qztILJy2orE0/img.png&quot; data-alt=&quot;REACT&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cz2gjp/btsdpxqOYDp/6Le5c0KBX6qztILJy2orE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcz2gjp%2FbtsdpxqOYDp%2F6Le5c0KBX6qztILJy2orE0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1200&quot; height=&quot;1043&quot; data-filename=&quot;React-icon.svg.png&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1043&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;REACT&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[React]&lt;/b&gt;&lt;br /&gt;React의&amp;nbsp;장점에는&amp;nbsp;크고&amp;nbsp;활동적인&amp;nbsp;커뮤니티,&amp;nbsp;우수한&amp;nbsp;문서,&amp;nbsp;재사용성을&amp;nbsp;촉진하는&amp;nbsp;구성&amp;nbsp;요소&amp;nbsp;기반&amp;nbsp;아키텍처가&amp;nbsp;포함됩니다.&amp;nbsp;단점으로는&amp;nbsp;가파른&amp;nbsp;학습&amp;nbsp;곡선,&amp;nbsp;장황한&amp;nbsp;구문,&amp;nbsp;상태&amp;nbsp;및&amp;nbsp;라우팅을&amp;nbsp;관리하기&amp;nbsp;위한&amp;nbsp;추가&amp;nbsp;라이브러리의&amp;nbsp;필요성이&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;logo.png&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxFZJt/btsdzgIyFvR/9XjGCYJct7e42UsxPElDSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxFZJt/btsdzgIyFvR/9XjGCYJct7e42UsxPElDSk/img.png&quot; data-alt=&quot;VUE&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxFZJt/btsdzgIyFvR/9XjGCYJct7e42UsxPElDSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxFZJt%2FbtsdzgIyFvR%2F9XjGCYJct7e42UsxPElDSk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;400&quot; data-filename=&quot;logo.png&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;VUE&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Vue]&lt;/b&gt;&lt;br /&gt;Vue의&amp;nbsp;장점에는&amp;nbsp;완만한&amp;nbsp;학습&amp;nbsp;곡선,&amp;nbsp;명확한&amp;nbsp;문서,&amp;nbsp;읽고&amp;nbsp;쓰기&amp;nbsp;쉬운&amp;nbsp;템플릿&amp;nbsp;기반&amp;nbsp;구문이&amp;nbsp;포함됩니다.&amp;nbsp;단점은&amp;nbsp;React보다&amp;nbsp;작은&amp;nbsp;커뮤니티와&amp;nbsp;구성&amp;nbsp;요소&amp;nbsp;기반&amp;nbsp;아키텍처의&amp;nbsp;유연성이&amp;nbsp;낮다는&amp;nbsp;것입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;svelte.png&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/caZWV5/btsdhAu4k75/nKcgWK69VZu7oxOYkMVFk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/caZWV5/btsdhAu4k75/nKcgWK69VZu7oxOYkMVFk1/img.png&quot; data-alt=&quot;SVELTE&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/caZWV5/btsdhAu4k75/nKcgWK69VZu7oxOYkMVFk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcaZWV5%2FbtsdhAu4k75%2FnKcgWK69VZu7oxOYkMVFk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;250&quot; data-filename=&quot;svelte.png&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;250&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SVELTE&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;[Svelte]&lt;/b&gt;&lt;br /&gt;Svelte의&amp;nbsp;전문가는&amp;nbsp;빌드&amp;nbsp;시&amp;nbsp;코드를&amp;nbsp;컴파일하여&amp;nbsp;로드&amp;nbsp;시간을&amp;nbsp;단축하고&amp;nbsp;번들&amp;nbsp;크기를&amp;nbsp;더&amp;nbsp;작게&amp;nbsp;만들어&amp;nbsp;성능을&amp;nbsp;최적화하는&amp;nbsp;고유한&amp;nbsp;접근&amp;nbsp;방식을&amp;nbsp;포함합니다.&amp;nbsp;단점에는&amp;nbsp;React&amp;nbsp;및&amp;nbsp;Vue보다&amp;nbsp;작은&amp;nbsp;커뮤니티와&amp;nbsp;덜&amp;nbsp;성숙한&amp;nbsp;도구&amp;nbsp;및&amp;nbsp;라이브러리&amp;nbsp;생태계가&amp;nbsp;포함됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[공통점]&lt;/b&gt;&lt;br /&gt;세&amp;nbsp;가지&amp;nbsp;프레임워크&amp;nbsp;간의&amp;nbsp;공통점에는&amp;nbsp;재사용&amp;nbsp;가능한&amp;nbsp;구성&amp;nbsp;요소&amp;nbsp;구축에&amp;nbsp;대한&amp;nbsp;초점,&amp;nbsp;반응형&amp;nbsp;프로그래밍&amp;nbsp;지원,&amp;nbsp;렌더링&amp;nbsp;업데이트에&amp;nbsp;대한&amp;nbsp;가상&amp;nbsp;DOM&amp;nbsp;접근&amp;nbsp;방식이&amp;nbsp;포함됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[차이점]&lt;/b&gt;&lt;br /&gt;프레임워크&amp;nbsp;간의&amp;nbsp;차이점에는&amp;nbsp;구문과&amp;nbsp;구성&amp;nbsp;요소&amp;nbsp;기반&amp;nbsp;아키텍처에&amp;nbsp;대한&amp;nbsp;접근&amp;nbsp;방식이&amp;nbsp;포함됩니다.&amp;nbsp;React는&amp;nbsp;JavaScript와&amp;nbsp;JSX를&amp;nbsp;사용하여&amp;nbsp;구성&amp;nbsp;요소를&amp;nbsp;정의하는&amp;nbsp;반면&amp;nbsp;Vue는&amp;nbsp;템플릿을&amp;nbsp;사용하고&amp;nbsp;Svelte는&amp;nbsp;HTML과&amp;nbsp;JavaScript를&amp;nbsp;혼합하여&amp;nbsp;사용합니다.&amp;nbsp;React와&amp;nbsp;Vue는&amp;nbsp;업데이트를&amp;nbsp;관리하기&amp;nbsp;위해&amp;nbsp;가상&amp;nbsp;DOM에&amp;nbsp;의존하는&amp;nbsp;반면,&amp;nbsp;Svelte는&amp;nbsp;더&amp;nbsp;나은&amp;nbsp;성능을&amp;nbsp;위해&amp;nbsp;빌드&amp;nbsp;시&amp;nbsp;코드를&amp;nbsp;컴파일합니다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;[요약]&lt;/b&gt;&lt;br /&gt;궁극적으로&amp;nbsp;React,&amp;nbsp;Vue&amp;nbsp;및&amp;nbsp;Svelte&amp;nbsp;중에서&amp;nbsp;선택하는&amp;nbsp;것은&amp;nbsp;프로젝트의&amp;nbsp;특정&amp;nbsp;요구&amp;nbsp;사항,&amp;nbsp;개발&amp;nbsp;팀의&amp;nbsp;선호도&amp;nbsp;및&amp;nbsp;사용&amp;nbsp;가능한&amp;nbsp;리소스에&amp;nbsp;따라&amp;nbsp;다릅니다.&amp;nbsp;세&amp;nbsp;가지&amp;nbsp;프레임워크&amp;nbsp;모두&amp;nbsp;최신&amp;nbsp;웹&amp;nbsp;애플리케이션&amp;nbsp;구축을&amp;nbsp;위한&amp;nbsp;강력한&amp;nbsp;도구를&amp;nbsp;제공합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;react native.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cG3tbd/btsdgTIg2AP/OpGlztfoaCuehMBKSrdK4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cG3tbd/btsdgTIg2AP/OpGlztfoaCuehMBKSrdK4k/img.png&quot; data-alt=&quot;React Native&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cG3tbd/btsdgTIg2AP/OpGlztfoaCuehMBKSrdK4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcG3tbd%2FbtsdgTIg2AP%2FOpGlztfoaCuehMBKSrdK4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot; data-filename=&quot;react native.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;React Native&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[React Native]&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;React&amp;nbsp;Native는&amp;nbsp;&lt;/b&gt;JavaScript&amp;nbsp;및&amp;nbsp;React를&amp;nbsp;사용하여&amp;nbsp;&lt;b&gt;모바일&amp;nbsp;애플리케이션을&amp;nbsp;구축하는&amp;nbsp;데&amp;nbsp;널리&amp;nbsp;사용되는&amp;nbsp;프레임워크&lt;/b&gt;로,&amp;nbsp;개발자가&amp;nbsp;코드를&amp;nbsp;한&amp;nbsp;번&amp;nbsp;작성하고&amp;nbsp;여러&amp;nbsp;플랫폼에&amp;nbsp;배포할&amp;nbsp;수&amp;nbsp;있습니다.&lt;b&gt;&lt;br /&gt;&lt;br /&gt;[장점]&lt;br /&gt;교차&amp;nbsp;플랫폼&amp;nbsp;개발:&amp;nbsp;&lt;/b&gt;React&amp;nbsp;Native를&amp;nbsp;사용하면&amp;nbsp;개발자가&amp;nbsp;코드를&amp;nbsp;한&amp;nbsp;번&amp;nbsp;작성하고&amp;nbsp;iOS&amp;nbsp;및&amp;nbsp;Android&amp;nbsp;플랫폼&amp;nbsp;모두에&amp;nbsp;배포하여&amp;nbsp;시간과&amp;nbsp;리소스를&amp;nbsp;절약할&amp;nbsp;수&amp;nbsp;있습니다.&lt;b&gt;&lt;br /&gt;기본&amp;nbsp;성능:&amp;nbsp;&lt;/b&gt;React&amp;nbsp;Native는&amp;nbsp;기본&amp;nbsp;구성&amp;nbsp;요소를&amp;nbsp;사용하여&amp;nbsp;UI를&amp;nbsp;렌더링하므로&amp;nbsp;성능이&amp;nbsp;향상되고&amp;nbsp;로드&amp;nbsp;시간이&amp;nbsp;빨라집니다.&lt;b&gt;&lt;br /&gt;크고&amp;nbsp;활동적인&amp;nbsp;커뮤니티:&amp;nbsp;&lt;/b&gt;React&amp;nbsp;Native에는&amp;nbsp;크고&amp;nbsp;활동적인&amp;nbsp;개발자&amp;nbsp;커뮤니티가&amp;nbsp;있어&amp;nbsp;도움말,&amp;nbsp;리소스&amp;nbsp;및&amp;nbsp;타사&amp;nbsp;라이브러리를&amp;nbsp;쉽게&amp;nbsp;찾을&amp;nbsp;수&amp;nbsp;있습니다.&lt;b&gt;&lt;br /&gt;코드&amp;nbsp;재사용성:&amp;nbsp;&lt;/b&gt;React&amp;nbsp;Native는&amp;nbsp;플랫폼&amp;nbsp;간에&amp;nbsp;코드를&amp;nbsp;공유하므로&amp;nbsp;코드&amp;nbsp;재사용성이&amp;nbsp;가능하여&amp;nbsp;개발&amp;nbsp;시간과&amp;nbsp;비용을&amp;nbsp;줄일&amp;nbsp;수&amp;nbsp;있습니다.&lt;b&gt;&lt;br /&gt;핫&amp;nbsp;리로딩:&amp;nbsp;&lt;/b&gt;React&amp;nbsp;Native는&amp;nbsp;핫&amp;nbsp;리로딩이라는&amp;nbsp;기능을&amp;nbsp;제공하여&amp;nbsp;개발자가&amp;nbsp;전체&amp;nbsp;애플리케이션을&amp;nbsp;다시&amp;nbsp;컴파일할&amp;nbsp;필요&amp;nbsp;없이&amp;nbsp;앱에&amp;nbsp;대한&amp;nbsp;변경&amp;nbsp;사항을&amp;nbsp;실시간으로&amp;nbsp;확인할&amp;nbsp;수&amp;nbsp;있습니다.&lt;b&gt;&lt;br /&gt;&lt;br /&gt;[단점]&lt;br /&gt;제한된&amp;nbsp;기능:&amp;nbsp;&lt;/b&gt;기본&amp;nbsp;모바일&amp;nbsp;개발에서&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;일부&amp;nbsp;복잡한&amp;nbsp;기능은&amp;nbsp;React&amp;nbsp;Native에서&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;없으므로&amp;nbsp;기능이&amp;nbsp;제한될&amp;nbsp;수&amp;nbsp;있습니다.&lt;b&gt;&lt;br /&gt;큰&amp;nbsp;파일&amp;nbsp;크기:&amp;nbsp;&lt;/b&gt;React&amp;nbsp;Native는&amp;nbsp;큰&amp;nbsp;파일&amp;nbsp;크기를&amp;nbsp;생성할&amp;nbsp;수&amp;nbsp;있으므로&amp;nbsp;다운로드&amp;nbsp;시간이&amp;nbsp;느려지고&amp;nbsp;저장&amp;nbsp;문제가&amp;nbsp;발생할&amp;nbsp;수&amp;nbsp;있습니다.&lt;b&gt;&lt;br /&gt;학습&amp;nbsp;곡선:&amp;nbsp;&lt;/b&gt;React&amp;nbsp;Native는&amp;nbsp;특히&amp;nbsp;React&amp;nbsp;또는&amp;nbsp;JavaScript에&amp;nbsp;익숙하지&amp;nbsp;않은&amp;nbsp;개발자의&amp;nbsp;경우&amp;nbsp;가파른&amp;nbsp;학습&amp;nbsp;곡선을&amp;nbsp;가질&amp;nbsp;수&amp;nbsp;있습니다.&lt;b&gt;&lt;br /&gt;장치&amp;nbsp;기능에&amp;nbsp;대한&amp;nbsp;제한된&amp;nbsp;액세스:&amp;nbsp;&lt;/b&gt;React&amp;nbsp;Native는&amp;nbsp;기본&amp;nbsp;앱이&amp;nbsp;액세스할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;모든&amp;nbsp;장치&amp;nbsp;기능&amp;nbsp;및&amp;nbsp;하드웨어에&amp;nbsp;대한&amp;nbsp;액세스를&amp;nbsp;제공하지&amp;nbsp;않을&amp;nbsp;수&amp;nbsp;있습니다.&lt;b&gt;&lt;br /&gt;디버깅&amp;nbsp;문제:&amp;nbsp;&lt;/b&gt;React&amp;nbsp;Native&amp;nbsp;앱&amp;nbsp;디버깅은&amp;nbsp;특히&amp;nbsp;복잡하거나&amp;nbsp;중첩된&amp;nbsp;구성&amp;nbsp;요소를&amp;nbsp;처리할&amp;nbsp;때&amp;nbsp;어려울&amp;nbsp;수&amp;nbsp;있습니다.&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[요약]&lt;br /&gt;&lt;/b&gt;React Native는 시간과 리소스를 절약할 수 있는 잠재력이 있는 크로스 플랫폼 모바일 개발을 위한 강력한 도구를 제공하지만 개발자가 모바일 개발 솔루션으로 선택하기 전에 알아야 할 제한 사항과 과제도 있습니다.&lt;/p&gt;</description>
      <category>React &amp;amp; React Native</category>
      <category>framework</category>
      <category>front-end</category>
      <category>javascript</category>
      <category>js</category>
      <category>library</category>
      <category>react</category>
      <category>svelte</category>
      <category>vue</category>
      <category>비전공 개발자</category>
      <category>프론트엔드</category>
      <author>HiroDaegu</author>
      <guid isPermaLink="true">https://hirodaegu.tistory.com/576</guid>
      <comments>https://hirodaegu.tistory.com/576#entry576comment</comments>
      <pubDate>Mon, 1 May 2023 19:02:29 +0900</pubDate>
    </item>
    <item>
      <title>iOS 개발자가 되기 위해서</title>
      <link>https://hirodaegu.tistory.com/575</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;apple-g116015f6d_640.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMRL6d/btsdlq5TNkx/Yb5SBFiYrKSy1aJU2Sx7tk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMRL6d/btsdlq5TNkx/Yb5SBFiYrKSy1aJU2Sx7tk/img.png&quot; data-alt=&quot;Apple&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMRL6d/btsdlq5TNkx/Yb5SBFiYrKSy1aJU2Sx7tk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMRL6d%2Fbtsdlq5TNkx%2FYb5SBFiYrKSy1aJU2Sx7tk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;640&quot; data-filename=&quot;apple-g116015f6d_640.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Apple&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;iOS&amp;nbsp;개발자가&amp;nbsp;되려면&amp;nbsp;기술과&amp;nbsp;창의성의&amp;nbsp;조합이&amp;nbsp;필요합니다.&amp;nbsp;iOS&amp;nbsp;개발자는&amp;nbsp;Apple의&amp;nbsp;모바일&amp;nbsp;운영&amp;nbsp;체제인&amp;nbsp;iOS에서&amp;nbsp;실행되는&amp;nbsp;애플리케이션을&amp;nbsp;만드는&amp;nbsp;일을&amp;nbsp;담당하게&amp;nbsp;됩니다.&amp;nbsp;성공적인&amp;nbsp;iOS&amp;nbsp;개발자가&amp;nbsp;되기&amp;nbsp;위해&amp;nbsp;집중해야&amp;nbsp;할&amp;nbsp;주요&amp;nbsp;영역은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;swift-og.png&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n7DjN/btsdlLvpnP5/s2YXZYOAhbcdkIRx7wmb50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n7DjN/btsdlLvpnP5/s2YXZYOAhbcdkIRx7wmb50/img.png&quot; data-alt=&quot;Swift&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n7DjN/btsdlLvpnP5/s2YXZYOAhbcdkIRx7wmb50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn7DjN%2FbtsdlLvpnP5%2Fs2YXZYOAhbcdkIRx7wmb50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1200&quot; height=&quot;1200&quot; data-filename=&quot;swift-og.png&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1200&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Swift&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;프로그래밍&amp;nbsp;언어:&amp;nbsp;iOS&amp;nbsp;애플리케이션&amp;nbsp;개발에&amp;nbsp;사용되는&amp;nbsp;기본&amp;nbsp;언어는&amp;nbsp;Apple에서&amp;nbsp;개발한&amp;nbsp;현대적이고&amp;nbsp;빠르고&amp;nbsp;안전한&amp;nbsp;프로그래밍&amp;nbsp;언어인&amp;nbsp;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;Swift&lt;/b&gt;&lt;/span&gt;입니다.&amp;nbsp;또한&amp;nbsp;많은&amp;nbsp;레거시&amp;nbsp;앱에서&amp;nbsp;여전히&amp;nbsp;사용하는&amp;nbsp;iOS&amp;nbsp;앱&amp;nbsp;개발에&amp;nbsp;사용되는&amp;nbsp;이전&amp;nbsp;언어인&amp;nbsp;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;Objective-C&lt;/b&gt;&lt;/span&gt;에&amp;nbsp;익숙해야&amp;nbsp;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;iOS&amp;nbsp;개발&amp;nbsp;프레임워크:&amp;nbsp;iOS&amp;nbsp;개발자는&amp;nbsp;UIKit,&amp;nbsp;Foundation,&amp;nbsp;Core&amp;nbsp;Data,&amp;nbsp;Core&amp;nbsp;Animation&amp;nbsp;등&amp;nbsp;Apple에서&amp;nbsp;제공하는&amp;nbsp;다양한&amp;nbsp;프레임워크에&amp;nbsp;익숙해야&amp;nbsp;합니다.&amp;nbsp;이러한&amp;nbsp;프레임워크는&amp;nbsp;iOS&amp;nbsp;앱을&amp;nbsp;만들기&amp;nbsp;위한&amp;nbsp;빌딩&amp;nbsp;블록을&amp;nbsp;제공합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Xcode&amp;nbsp;IDE:&amp;nbsp;Xcode는&amp;nbsp;iOS&amp;nbsp;앱&amp;nbsp;개발을&amp;nbsp;위한&amp;nbsp;Apple의&amp;nbsp;공식&amp;nbsp;통합&amp;nbsp;개발&amp;nbsp;환경(IDE)입니다.&amp;nbsp;Xcode를&amp;nbsp;사용하여&amp;nbsp;iOS&amp;nbsp;앱을&amp;nbsp;생성,&amp;nbsp;테스트&amp;nbsp;및&amp;nbsp;배포하는&amp;nbsp;방법을&amp;nbsp;알아야&amp;nbsp;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;사용자&amp;nbsp;인터페이스(UI)&amp;nbsp;디자인:&amp;nbsp;UI&amp;nbsp;디자인&amp;nbsp;원칙과&amp;nbsp;Apple에서&amp;nbsp;제공하는&amp;nbsp;HIG(Human&amp;nbsp;Interface&amp;nbsp;Guidelines)를&amp;nbsp;잘&amp;nbsp;이해하고&amp;nbsp;있어야&amp;nbsp;합니다.&amp;nbsp;iOS&amp;nbsp;앱을&amp;nbsp;위한&amp;nbsp;시각적으로&amp;nbsp;매력적이고&amp;nbsp;직관적인&amp;nbsp;사용자&amp;nbsp;인터페이스를&amp;nbsp;만들&amp;nbsp;수&amp;nbsp;있어야&amp;nbsp;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;앱&amp;nbsp;아키텍처:&amp;nbsp;MVC,&amp;nbsp;MVVM,&amp;nbsp;VIPER&amp;nbsp;등&amp;nbsp;iOS&amp;nbsp;앱&amp;nbsp;개발에&amp;nbsp;사용되는&amp;nbsp;다양한&amp;nbsp;앱&amp;nbsp;아키텍처를&amp;nbsp;잘&amp;nbsp;이해하고&amp;nbsp;있어야&amp;nbsp;합니다.&amp;nbsp;앱&amp;nbsp;아키텍처는&amp;nbsp;확장&amp;nbsp;가능하고&amp;nbsp;유지&amp;nbsp;관리&amp;nbsp;가능한&amp;nbsp;iOS&amp;nbsp;앱을&amp;nbsp;만드는&amp;nbsp;데&amp;nbsp;필수적입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;API&amp;nbsp;및&amp;nbsp;웹&amp;nbsp;서비스:&amp;nbsp;외부&amp;nbsp;소스에서&amp;nbsp;데이터를&amp;nbsp;가져와&amp;nbsp;iOS&amp;nbsp;앱에&amp;nbsp;통합하려면&amp;nbsp;API&amp;nbsp;및&amp;nbsp;웹&amp;nbsp;서비스&amp;nbsp;사용에&amp;nbsp;익숙해야&amp;nbsp;합니다.&amp;nbsp;RESTful&amp;nbsp;API,&amp;nbsp;JSON&amp;nbsp;및&amp;nbsp;XML로&amp;nbsp;작업하는&amp;nbsp;방법을&amp;nbsp;알고&amp;nbsp;있어야&amp;nbsp;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;버전&amp;nbsp;제어:&amp;nbsp;코드&amp;nbsp;변경&amp;nbsp;사항을&amp;nbsp;추적하고&amp;nbsp;다른&amp;nbsp;개발자와&amp;nbsp;협업할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;Git과&amp;nbsp;같은&amp;nbsp;버전&amp;nbsp;제어&amp;nbsp;도구에&amp;nbsp;익숙해야&amp;nbsp;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;테스트&amp;nbsp;및&amp;nbsp;디버깅:&amp;nbsp;버그가&amp;nbsp;없고&amp;nbsp;의도한&amp;nbsp;대로&amp;nbsp;작동하는지&amp;nbsp;확인하기&amp;nbsp;위해&amp;nbsp;iOS&amp;nbsp;앱을&amp;nbsp;테스트하고&amp;nbsp;디버깅하는&amp;nbsp;방법을&amp;nbsp;알아야&amp;nbsp;합니다.&amp;nbsp;XCTest,&amp;nbsp;Quick&amp;nbsp;및&amp;nbsp;Nimble과&amp;nbsp;같은&amp;nbsp;다양한&amp;nbsp;테스트&amp;nbsp;도구&amp;nbsp;및&amp;nbsp;프레임워크에&amp;nbsp;익숙해야&amp;nbsp;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;지속적인&amp;nbsp;통합&amp;nbsp;및&amp;nbsp;배포:&amp;nbsp;Jenkins,&amp;nbsp;Travis&amp;nbsp;CI&amp;nbsp;및&amp;nbsp;Fastlane과&amp;nbsp;같은&amp;nbsp;도구를&amp;nbsp;사용하여&amp;nbsp;iOS&amp;nbsp;앱을&amp;nbsp;구축,&amp;nbsp;테스트&amp;nbsp;및&amp;nbsp;배포하는&amp;nbsp;프로세스를&amp;nbsp;자동화하는&amp;nbsp;방법을&amp;nbsp;알고&amp;nbsp;있어야&amp;nbsp;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;소프트&amp;nbsp;스킬:&amp;nbsp;iOS&amp;nbsp;개발자로서&amp;nbsp;뛰어난&amp;nbsp;커뮤니케이션,&amp;nbsp;문제&amp;nbsp;해결&amp;nbsp;및&amp;nbsp;팀워크&amp;nbsp;기술이&amp;nbsp;필요합니다.&amp;nbsp;다른&amp;nbsp;개발자,&amp;nbsp;디자이너&amp;nbsp;및&amp;nbsp;이해&amp;nbsp;관계자와&amp;nbsp;효과적으로&amp;nbsp;작업할&amp;nbsp;수&amp;nbsp;있어야&amp;nbsp;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;요약하면&amp;nbsp;iOS&amp;nbsp;개발자가&amp;nbsp;되려면&amp;nbsp;기술,&amp;nbsp;창의성,&amp;nbsp;소프트&amp;nbsp;스킬이&amp;nbsp;모두&amp;nbsp;필요합니다.&amp;nbsp;성공적인&amp;nbsp;iOS&amp;nbsp;개발자가&amp;nbsp;되려면&amp;nbsp;프로그래밍&amp;nbsp;언어,&amp;nbsp;iOS&amp;nbsp;개발&amp;nbsp;프레임워크,&amp;nbsp;Xcode&amp;nbsp;IDE,&amp;nbsp;UI&amp;nbsp;디자인&amp;nbsp;원칙,&amp;nbsp;앱&amp;nbsp;아키텍처,&amp;nbsp;API&amp;nbsp;및&amp;nbsp;웹&amp;nbsp;서비스,&amp;nbsp;버전&amp;nbsp;제어,&amp;nbsp;테스트&amp;nbsp;및&amp;nbsp;디버깅,&amp;nbsp;지속적&amp;nbsp;통합&amp;nbsp;및&amp;nbsp;배포,&amp;nbsp;소프트&amp;nbsp;스킬에&amp;nbsp;익숙해야&amp;nbsp;합니다.&amp;nbsp;.&amp;nbsp;올바른&amp;nbsp;기술과&amp;nbsp;지식이&amp;nbsp;있으면&amp;nbsp;성공적인&amp;nbsp;iOS&amp;nbsp;개발자가&amp;nbsp;되어&amp;nbsp;수백만&amp;nbsp;명의&amp;nbsp;사용자를&amp;nbsp;위한&amp;nbsp;놀라운&amp;nbsp;앱을&amp;nbsp;만들&amp;nbsp;수&amp;nbsp;있습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;apple-g3d06cfb02_640.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;427&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxf3Iv/btsdgTgsZjS/ypBxbKUzQmOofY2OkgvFH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxf3Iv/btsdgTgsZjS/ypBxbKUzQmOofY2OkgvFH0/img.png&quot; data-alt=&quot;iMac&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxf3Iv/btsdgTgsZjS/ypBxbKUzQmOofY2OkgvFH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbxf3Iv%2FbtsdgTgsZjS%2FypBxbKUzQmOofY2OkgvFH0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;427&quot; data-filename=&quot;apple-g3d06cfb02_640.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;427&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;iMac&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>SWIFT</category>
      <category>Apple</category>
      <category>developer</category>
      <category>IOS</category>
      <category>iOS 개발자</category>
      <category>ipad</category>
      <category>iPhone</category>
      <category>MacBook</category>
      <category>Objective-C</category>
      <category>SWIFT</category>
      <category>비전공 개발자</category>
      <author>HiroDaegu</author>
      <guid isPermaLink="true">https://hirodaegu.tistory.com/575</guid>
      <comments>https://hirodaegu.tistory.com/575#entry575comment</comments>
      <pubDate>Sun, 30 Apr 2023 15:15:37 +0900</pubDate>
    </item>
    <item>
      <title>After Last Xcode Update (14.3 14E222b) I am no longer able to archive my app</title>
      <link>https://hirodaegu.tistory.com/574</link>
      <description>&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;Xcode를 14.3으로 업데이트한 이후, 제작하고 있는 어플을 테스트하기 위해 archive를 했으나 아래의 에러가 발생&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;rsync&amp;nbsp;error:&amp;nbsp;some&amp;nbsp;files&amp;nbsp;could&amp;nbsp;not&amp;nbsp;be&amp;nbsp;transferred&amp;nbsp;(code&amp;nbsp;23)&amp;nbsp;at&amp;nbsp;/AppleInternal/Library/BuildRoots/97f6331a-ba75-11ed-a4bc-863efbbaf80d/Library/Caches/co&amp;nbsp;m.apple.xbs/Sources/rsync/rsync/main.c(996)&amp;nbsp;[sender=2.6.9]&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;구글링을 통해서 알게된 내용&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.apple.com/forums/thread/727525&quot;&gt;https://developer.apple.com/forums/thread/727525&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1682398587329&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;After Last Xcode Update (14.3 14E2&amp;hellip; | Apple Developer Forums&quot; data-og-description=&quot;A few days ago, I updated to a new XCode version. I am trying to upload a new version of my dictionary app. Despite the app continues to work on iPhone and iPad emulator and on my MacBook air without any problems, archiving fails, with errors like: &amp;quot;Showin&quot; data-og-host=&quot;developer.apple.com&quot; data-og-source-url=&quot;https://developer.apple.com/forums/thread/727525&quot; data-og-url=&quot;https://developer.apple.com/forums/thread/727525&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://developer.apple.com/forums/thread/727525&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.apple.com/forums/thread/727525&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;After Last Xcode Update (14.3 14E2&amp;hellip; | Apple Developer Forums&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A few days ago, I updated to a new XCode version. I am trying to upload a new version of my dictionary app. Despite the app continues to work on iPhone and iPad emulator and on my MacBook air without any problems, archiving fails, with errors like: &quot;Showin&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developer.apple.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;-&amp;gt; Cocoapod에 문제가 있다..&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;해결방법&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;Pods-APPNAME-frameworks.sh의 코드를 변경하는 것&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1682398687240&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 변경전
  if [ -L &quot;${source}&quot; ]; then
    echo &quot;Symlinked...&quot;
    source=&quot;$(readlink &quot;${source}&quot;)&quot;
  fi&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1682398699322&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 변경 후
  if [ -L &quot;${source}&quot; ]; then
    echo &quot;Symlinked...&quot;
    source=&quot;$(readlink -f &quot;${source}&quot;)&quot;
  fi&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-04-25 오후 1.53.58.png&quot; data-origin-width=&quot;1700&quot; data-origin-height=&quot;379&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/I4KsC/btscyZaYS4C/y21epjIKDzTVqsrEezbhI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/I4KsC/btscyZaYS4C/y21epjIKDzTVqsrEezbhI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/I4KsC/btscyZaYS4C/y21epjIKDzTVqsrEezbhI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FI4KsC%2FbtscyZaYS4C%2Fy21epjIKDzTVqsrEezbhI1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1700&quot; height=&quot;379&quot; data-filename=&quot;스크린샷 2023-04-25 오후 1.53.58.png&quot; data-origin-width=&quot;1700&quot; data-origin-height=&quot;379&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>SWIFT</category>
      <category>Apple</category>
      <category>Cocoapod</category>
      <category>IOS</category>
      <category>iOS 개발자</category>
      <category>ipad</category>
      <category>iPhone</category>
      <category>pod</category>
      <category>SWIFT</category>
      <category>xcode</category>
      <category>비전공 개발자</category>
      <author>HiroDaegu</author>
      <guid isPermaLink="true">https://hirodaegu.tistory.com/574</guid>
      <comments>https://hirodaegu.tistory.com/574#entry574comment</comments>
      <pubDate>Tue, 25 Apr 2023 14:00:33 +0900</pubDate>
    </item>
    <item>
      <title>Distance Calculator</title>
      <link>https://hirodaegu.tistory.com/573</link>
      <description>&lt;pre id=&quot;code_1682044761548&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import UIKit
import CoreLocation

func distanceCalculator(preLat: Double?, preLng: Double?, postLat: Double?, postLng: Double?) -&amp;gt; String {
    guard let preLat = preLat, let preLng = preLng, let postLat = postLat, let postLng = postLng else {
        return &quot;&quot;
    }
    let preLocation = CLLocation(latitude: preLat, longitude: preLng)
    let postLocation = CLLocation(latitude: postLat, longitude: postLng)
    let distanceInMeters = preLocation.distance(from: postLocation)
    return String(distanceInMeters.rounded(.toNearestOrAwayFromZero))
}

let res = distanceCalculator(preLat: +37.33124551, preLng: -122.03073664, postLat: +37.33121136, postLng: -122.03073097)
print(&quot;RESULT is \(res)m&quot;)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>SWIFT</category>
      <category>calculate</category>
      <category>CLLocation</category>
      <category>CoreLocation</category>
      <category>Distance</category>
      <category>iOS 개발자</category>
      <category>Latitude</category>
      <category>locations.last</category>
      <category>Longitude</category>
      <category>SWIFT</category>
      <category>비전공 개발자</category>
      <author>HiroDaegu</author>
      <guid isPermaLink="true">https://hirodaegu.tistory.com/573</guid>
      <comments>https://hirodaegu.tistory.com/573#entry573comment</comments>
      <pubDate>Fri, 21 Apr 2023 11:39:26 +0900</pubDate>
    </item>
    <item>
      <title>Xcode Simulator Cache Delete</title>
      <link>https://hirodaegu.tistory.com/572</link>
      <description>&lt;pre id=&quot;code_1682042219576&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;rm -rf ~/Library/Developer/Xcode/DerivedData&lt;/code&gt;&lt;/pre&gt;</description>
      <category>SWIFT</category>
      <category>Cache</category>
      <category>delete</category>
      <category>IOS</category>
      <category>iOS 개발자</category>
      <category>iPhone</category>
      <category>Simulator</category>
      <category>SWIFT</category>
      <category>terminal</category>
      <category>xcode</category>
      <category>비전공 개발자</category>
      <author>HiroDaegu</author>
      <guid isPermaLink="true">https://hirodaegu.tistory.com/572</guid>
      <comments>https://hirodaegu.tistory.com/572#entry572comment</comments>
      <pubDate>Fri, 21 Apr 2023 10:57:32 +0900</pubDate>
    </item>
    <item>
      <title>Virate Method</title>
      <link>https://hirodaegu.tistory.com/571</link>
      <description>&lt;pre id=&quot;code_1681456692073&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import AVFoundation

class ViewController: UIViewController {

	override viewDidLoad() {
    
    	super.viewDidLoad()
        
    }
    
    ...
    
    // Vibrate Method
	func vibrate() {
        AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)
    }

}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>SWIFT</category>
      <category>AudioServicesPlaySyetemSound</category>
      <category>AVFoundation</category>
      <category>IOS</category>
      <category>iOS 개발자</category>
      <category>iPhone</category>
      <category>kSyetemSoundID_Vibrate</category>
      <category>sound</category>
      <category>SWIFT</category>
      <category>vibrate</category>
      <category>비전공 개발자</category>
      <author>HiroDaegu</author>
      <guid isPermaLink="true">https://hirodaegu.tistory.com/571</guid>
      <comments>https://hirodaegu.tistory.com/571#entry571comment</comments>
      <pubDate>Fri, 14 Apr 2023 16:18:17 +0900</pubDate>
    </item>
    <item>
      <title>gitignore 사용법</title>
      <link>https://hirodaegu.tistory.com/570</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.toptal.com/developers/gitignore&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.toptal.com/developers/gitignore&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1681175484675&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;gitignore.io&quot; data-og-description=&quot;Create useful .gitignore files for your project&quot; data-og-host=&quot;www.toptal.com&quot; data-og-source-url=&quot;https://www.toptal.com/developers/gitignore&quot; data-og-url=&quot;https://www.toptal.com/developers/gitignore&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bJsBZk/hySdlx79zq/OypaVxLgXjPuKnKVWvBrT1/img.png?width=2400&amp;amp;height=1254&amp;amp;face=0_0_2400_1254&quot;&gt;&lt;a href=&quot;https://www.toptal.com/developers/gitignore&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.toptal.com/developers/gitignore&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bJsBZk/hySdlx79zq/OypaVxLgXjPuKnKVWvBrT1/img.png?width=2400&amp;amp;height=1254&amp;amp;face=0_0_2400_1254');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;gitignore.io&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Create useful .gitignore files for your project&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.toptal.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-04-11 오전 10.11.40.png&quot; data-origin-width=&quot;2066&quot; data-origin-height=&quot;952&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGyETH/btr9pdbVjXD/JQ59AcCCG3uOOeJvwA3AIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGyETH/btr9pdbVjXD/JQ59AcCCG3uOOeJvwA3AIK/img.png&quot; data-alt=&quot;작업 환경에 맞는 걸로 입력 후 생성하기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGyETH/btr9pdbVjXD/JQ59AcCCG3uOOeJvwA3AIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGyETH%2Fbtr9pdbVjXD%2FJQ59AcCCG3uOOeJvwA3AIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2066&quot; height=&quot;952&quot; data-filename=&quot;스크린샷 2023-04-11 오전 10.11.40.png&quot; data-origin-width=&quot;2066&quot; data-origin-height=&quot;952&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;작업 환경에 맞는 걸로 입력 후 생성하기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1681175532929&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Created by https://www.toptal.com/developers/gitignore/api/swift,xcode,cocoapods
# Edit at https://www.toptal.com/developers/gitignore?templates=swift,xcode,cocoapods

### CocoaPods ###
## CocoaPods GitIgnore Template

# CocoaPods - Only use to conserve bandwidth / Save time on Pushing
#           - Also handy if you have a large number of dependant pods
#           - AS PER https://guides.cocoapods.org/using/using-cocoapods.html NEVER IGNORE THE LOCK FILE
Pods/

### Swift ###
# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore &amp;amp; Swift.gitignore

## User settings
xcuserdata/

## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)
*.xcscmblueprint
*.xccheckout

## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4)
build/
DerivedData/
*.moved-aside
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3

## Obj-C/Swift specific
*.hmap

## App packaging
*.ipa
*.dSYM.zip
*.dSYM

## Playgrounds
timeline.xctimeline
playground.xcworkspace

# Swift Package Manager
# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
# Packages/
# Package.pins
# Package.resolved
# *.xcodeproj
# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata
# hence it is not needed unless you have added a package configuration file to your project
# .swiftpm

.build/

# CocoaPods
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
# Pods/
# Add this line if you want to avoid checking in source code from the Xcode workspace
# *.xcworkspace

# Carthage
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts

Carthage/Build/

# Accio dependency management
Dependencies/
.accio/

# fastlane
# It is recommended to not store the screenshots in the git repo.
# Instead, use fastlane to re-generate the screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/#source-control

fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots/**/*.png
fastlane/test_output

# Code Injection
# After new code Injection tools there's a generated folder /iOSInjectionProject
# https://github.com/johnno1962/injectionforxcode

iOSInjectionProject/

### Xcode ###

## Xcode 8 and earlier

### Xcode Patch ###
*.xcodeproj/*
!*.xcodeproj/project.pbxproj
!*.xcodeproj/xcshareddata/
!*.xcodeproj/project.xcworkspace/
!*.xcworkspace/contents.xcworkspacedata
/*.gcno
**/xcshareddata/WorkspaceSettings.xcsettings

GoogleService-Info.plist

# End of https://www.toptal.com/developers/gitignore/api/swift,xcode,cocoapods&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;터미널 열기&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1681175666424&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git rm -r --cached .
git add .
git commit -m 'message'
git push origin main&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기타</category>
      <category>Android</category>
      <category>back-end</category>
      <category>front-end</category>
      <category>full-Stack</category>
      <category>Git</category>
      <category>github</category>
      <category>gitignore</category>
      <category>IOS</category>
      <category>iOS 개발자</category>
      <category>비전공 개발자</category>
      <author>HiroDaegu</author>
      <guid isPermaLink="true">https://hirodaegu.tistory.com/570</guid>
      <comments>https://hirodaegu.tistory.com/570#entry570comment</comments>
      <pubDate>Wed, 12 Apr 2023 00:14:34 +0900</pubDate>
    </item>
    <item>
      <title>Inspection of Web Content not working with iOS 16.4+</title>
      <link>https://hirodaegu.tistory.com/569</link>
      <description>&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 상황&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Swift WKWebView를 활용하여 앱을 제작하고 있고, Web Page의 Script나 Tag를 확인하기 위해서 Safari의 개발자용 -&amp;gt; 연결된 기기를 통해서 Web Page를 Debugging 하는 과정에서 문제 발견&lt;/b&gt;&lt;/h3&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;정상화면.png&quot; data-origin-width=&quot;1684&quot; data-origin-height=&quot;714&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAczOa/btr88qD57qa/3FT7lcOwq7pyz9Ga46fyak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAczOa/btr88qD57qa/3FT7lcOwq7pyz9Ga46fyak/img.png&quot; data-alt=&quot;iOS 16.0.0 (iPhone XR) 환경&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAczOa/btr88qD57qa/3FT7lcOwq7pyz9Ga46fyak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAczOa%2Fbtr88qD57qa%2F3FT7lcOwq7pyz9Ga46fyak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1684&quot; height=&quot;714&quot; data-filename=&quot;정상화면.png&quot; data-origin-width=&quot;1684&quot; data-origin-height=&quot;714&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;iOS 16.0.0 (iPhone XR) 환경&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;이상화면.png&quot; data-origin-width=&quot;1154&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/97yag/btr9rg60mb0/cD0HlMMZ3E8VqagZZKllQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/97yag/btr9rg60mb0/cD0HlMMZ3E8VqagZZKllQK/img.png&quot; data-alt=&quot;iOS 16.4.1(iPhone 11) 환경&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/97yag/btr9rg60mb0/cD0HlMMZ3E8VqagZZKllQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F97yag%2Fbtr9rg60mb0%2FcD0HlMMZ3E8VqagZZKllQK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1154&quot; height=&quot;640&quot; data-filename=&quot;이상화면.png&quot; data-origin-width=&quot;1154&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;iOS 16.4.1(iPhone 11) 환경&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;해결 방법&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1681170942272&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;if #available(iOS 16.4, *) {
    myWebView.isInspectable = true
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-04-11 오전 8.56.43.png&quot; data-origin-width=&quot;1604&quot; data-origin-height=&quot;930&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUpj4E/btr9eCdjNRG/oAkI4FLnlIVzsgjqSSnov0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUpj4E/btr9eCdjNRG/oAkI4FLnlIVzsgjqSSnov0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUpj4E/btr9eCdjNRG/oAkI4FLnlIVzsgjqSSnov0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUpj4E%2Fbtr9eCdjNRG%2FoAkI4FLnlIVzsgjqSSnov0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1604&quot; height=&quot;930&quot; data-filename=&quot;스크린샷 2023-04-11 오전 8.56.43.png&quot; data-origin-width=&quot;1604&quot; data-origin-height=&quot;930&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-04-11 오전 9.00.55.png&quot; data-origin-width=&quot;377&quot; data-origin-height=&quot;76&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vIr4A/btr9nIJ3sFn/vzbDoYwMO5sWNIZn2Phtk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vIr4A/btr9nIJ3sFn/vzbDoYwMO5sWNIZn2Phtk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vIr4A/btr9nIJ3sFn/vzbDoYwMO5sWNIZn2Phtk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvIr4A%2Fbtr9nIJ3sFn%2FvzbDoYwMO5sWNIZn2Phtk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;377&quot; height=&quot;76&quot; data-filename=&quot;스크린샷 2023-04-11 오전 9.00.55.png&quot; data-origin-width=&quot;377&quot; data-origin-height=&quot;76&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.apple.com/documentation/webkit/wkwebview/4111163-isinspectable&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://developer.apple.com/documentation/webkit/wkwebview/4111163-isinspectable&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1681171390004&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;isInspectable | Apple Developer Documentation&quot; data-og-description=&quot;There's never been a better time to develop for Apple platforms.&quot; data-og-host=&quot;developer.apple.com&quot; data-og-source-url=&quot;https://developer.apple.com/documentation/webkit/wkwebview/4111163-isinspectable&quot; data-og-url=&quot;https://docs.developer.apple.com/documentation/webkit/wkwebview/4111163-isinspectable&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/d14iB5/hySeXh2Cuc/Gi0h5x8n8W2IBgKjBfJarK/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/rCSA1/hySeZz8RE5/k7pyJgjiIYPNVhdP8FSF0K/img.jpg?width=1024&amp;amp;height=512&amp;amp;face=0_0_1024_512&quot;&gt;&lt;a href=&quot;https://developer.apple.com/documentation/webkit/wkwebview/4111163-isinspectable&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.apple.com/documentation/webkit/wkwebview/4111163-isinspectable&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/d14iB5/hySeXh2Cuc/Gi0h5x8n8W2IBgKjBfJarK/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/rCSA1/hySeZz8RE5/k7pyJgjiIYPNVhdP8FSF0K/img.jpg?width=1024&amp;amp;height=512&amp;amp;face=0_0_1024_512');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;isInspectable | Apple Developer Documentation&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;There's never been a better time to develop for Apple platforms.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developer.apple.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;해결화면.png&quot; data-origin-width=&quot;1686&quot; data-origin-height=&quot;816&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EdZYp/btr9mhzCY9H/f6J1fpIPWy4syRoQg8y8g0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EdZYp/btr9mhzCY9H/f6J1fpIPWy4syRoQg8y8g0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EdZYp/btr9mhzCY9H/f6J1fpIPWy4syRoQg8y8g0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEdZYp%2Fbtr9mhzCY9H%2Ff6J1fpIPWy4syRoQg8y8g0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1686&quot; height=&quot;816&quot; data-filename=&quot;해결화면.png&quot; data-origin-width=&quot;1686&quot; data-origin-height=&quot;816&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>SWIFT/(SWIFT || Xcode)Error</category>
      <category>available</category>
      <category>debug</category>
      <category>IOS</category>
      <category>IOS 16.4</category>
      <category>iOS 개발자</category>
      <category>iPhone</category>
      <category>isInspectable</category>
      <category>Safari</category>
      <category>SWIFT</category>
      <category>wkwebview</category>
      <author>HiroDaegu</author>
      <guid isPermaLink="true">https://hirodaegu.tistory.com/569</guid>
      <comments>https://hirodaegu.tistory.com/569#entry569comment</comments>
      <pubDate>Tue, 11 Apr 2023 08:57:42 +0900</pubDate>
    </item>
    <item>
      <title>WKWebView OverScroll Disable Setting</title>
      <link>https://hirodaegu.tistory.com/566</link>
      <description>&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&amp;lt;1안&amp;gt;&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1678861280206&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var isScrolling = false
...

let preferences = WKPreferences()
preferences.javaScriptCanOpenWindowsAutomatically = true

...

let contentController = WKUserContentController()

...

let configuration = WKWebViewConfiguration()
configuration.preferences = preferences
configuration.userContentController = contentController

...

webView = WKWebView(frame: self.view.bounds, configuration: configuration)

...

webView.scrollView.delegate = self

...

webView.scrollView.alwaysBounceVertical = false
webView.scrollView.bounces = false

...

extension ViewController: UIScrollViewDelegate {
    
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        guard !isScrolling else { return }
        isScrolling = true
        
        if scrollView.contentOffset.y &amp;lt;= 0 {
            scrollView.contentOffset = CGPoint.zero
        }
        if scrollView.contentOffset.y &amp;gt;= scrollView.contentSize.height - scrollView.bounds.size.height {
            let offset = CGPoint(x: scrollView.contentOffset.x, y: scrollView.contentSize.height - scrollView.bounds.size.height)
            scrollView.setContentOffset(offset, animated: false)
        }
        
        isScrolling = false
    }
    
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&amp;lt;2안&amp;gt;&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1682034117831&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;...

let preferences = WKPreferences()
preferences.javaScriptCanOpenWindowsAutomatically = true

...

let contentController = WKUserContentController()

...

let configuration = WKWebViewConfiguration()
configuration.preferences = preferences
configuration.userContentController = contentController

...

webView = WKWebView(frame: self.view.bounds, configuration: configuration)

...

webView.scrollView.delegate = self

...

webView.scrollView.alwaysBounceVertical = false
webView.scrollView.bounces = false
if #available(iOS 11.0, *) {
    webView.scrollView.contentInsetAdjustmentBehavior = .never
} else {
    automaticallyAdjustsScrollViewInsets = false
}

...&lt;/code&gt;&lt;/pre&gt;</description>
      <category>SWIFT</category>
      <category>IOS</category>
      <category>iOS 개발자</category>
      <category>ipad</category>
      <category>iPhone</category>
      <category>MAC</category>
      <category>scroll</category>
      <category>SWIFT</category>
      <category>webview</category>
      <category>wkwebview</category>
      <category>비전공 개발자</category>
      <author>HiroDaegu</author>
      <guid isPermaLink="true">https://hirodaegu.tistory.com/566</guid>
      <comments>https://hirodaegu.tistory.com/566#entry566comment</comments>
      <pubDate>Wed, 15 Mar 2023 15:21:26 +0900</pubDate>
    </item>
    <item>
      <title>Swift WKWebView Debugging with Safari</title>
      <link>https://hirodaegu.tistory.com/565</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;1. Xcode에서 Simulator 또는 USB로 연결한 실제기기를 Cmd + R(빌드)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;2. Safari Open 후 개발자용 메뉴 선택&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-03-09 오후 4.18.44.png&quot; data-origin-width=&quot;1517&quot; data-origin-height=&quot;487&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzIJ93/btr2PUcWxJR/fXSXSyEpi0i5ipxd83Uv31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzIJ93/btr2PUcWxJR/fXSXSyEpi0i5ipxd83Uv31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzIJ93/btr2PUcWxJR/fXSXSyEpi0i5ipxd83Uv31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzIJ93%2Fbtr2PUcWxJR%2FfXSXSyEpi0i5ipxd83Uv31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1517&quot; height=&quot;487&quot; data-filename=&quot;스크린샷 2023-03-09 오후 4.18.44.png&quot; data-origin-width=&quot;1517&quot; data-origin-height=&quot;487&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;개발자용 메뉴가 없을 경우&lt;/span&gt;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1.&amp;nbsp; Mac Safari Setting&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-03-09 오후 4.23.35.png&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;431&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/T35NL/btr2YaeVdHX/ypbFOK2LscY6VRmLkNxxXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/T35NL/btr2YaeVdHX/ypbFOK2LscY6VRmLkNxxXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/T35NL/btr2YaeVdHX/ypbFOK2LscY6VRmLkNxxXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FT35NL%2Fbtr2YaeVdHX%2FypbFOK2LscY6VRmLkNxxXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;733&quot; height=&quot;431&quot; data-filename=&quot;스크린샷 2023-03-09 오후 4.23.35.png&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;431&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2.&amp;nbsp; iPhone Safari Setting&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;EAB04F43-E7F8-4D69-9754-C9BA83BACD6B.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1792&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNoZft/btr2ZTqdcu2/kksbmxUNW5Td0mnrkkeKzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNoZft/btr2ZTqdcu2/kksbmxUNW5Td0mnrkkeKzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNoZft/btr2ZTqdcu2/kksbmxUNW5Td0mnrkkeKzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNoZft%2Fbtr2ZTqdcu2%2FkksbmxUNW5Td0mnrkkeKzK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;828&quot; height=&quot;1792&quot; data-filename=&quot;EAB04F43-E7F8-4D69-9754-C9BA83BACD6B.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1792&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;3.&amp;nbsp; 해당 웹페에지 클릭&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-03-09 오후 4.19.15.png&quot; data-origin-width=&quot;574&quot; data-origin-height=&quot;848&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Fj7GZ/btr2Py8ZjS7/6NlkB6qCjzibrTkk7hjEi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Fj7GZ/btr2Py8ZjS7/6NlkB6qCjzibrTkk7hjEi1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Fj7GZ/btr2Py8ZjS7/6NlkB6qCjzibrTkk7hjEi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFj7GZ%2Fbtr2Py8ZjS7%2F6NlkB6qCjzibrTkk7hjEi1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;574&quot; height=&quot;848&quot; data-filename=&quot;스크린샷 2023-03-09 오후 4.19.15.png&quot; data-origin-width=&quot;574&quot; data-origin-height=&quot;848&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;4. 웹 속성 확인&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-03-09 오후 4.21.18.png&quot; data-origin-width=&quot;995&quot; data-origin-height=&quot;602&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eauHYH/btr2PynDJ1d/4vlO5HKQRefzHj3sL24lLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eauHYH/btr2PynDJ1d/4vlO5HKQRefzHj3sL24lLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eauHYH/btr2PynDJ1d/4vlO5HKQRefzHj3sL24lLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeauHYH%2Fbtr2PynDJ1d%2F4vlO5HKQRefzHj3sL24lLk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;995&quot; height=&quot;602&quot; data-filename=&quot;스크린샷 2023-03-09 오후 4.21.18.png&quot; data-origin-width=&quot;995&quot; data-origin-height=&quot;602&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>SWIFT</category>
      <category>IOS</category>
      <category>iOS 개발자</category>
      <category>ipad</category>
      <category>iPhone</category>
      <category>mac os</category>
      <category>Safari</category>
      <category>SWIFT</category>
      <category>webview</category>
      <category>wkwebview</category>
      <category>비전공 개발자</category>
      <author>HiroDaegu</author>
      <guid isPermaLink="true">https://hirodaegu.tistory.com/565</guid>
      <comments>https://hirodaegu.tistory.com/565#entry565comment</comments>
      <pubDate>Thu, 9 Mar 2023 16:28:24 +0900</pubDate>
    </item>
  </channel>
</rss>