<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>0-0Blog</title>
    <link>https://0u0s.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Tue, 4 Aug 2026 01:29:35 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>adnin</managingEditor>
    <image>
      <title>0-0Blog</title>
      <url>https://tistory1.daumcdn.net/tistory/6343491/attach/3d18e87d93e34274bf81fe1ee775c6b1</url>
      <link>https://0u0s.tistory.com</link>
    </image>
    <item>
      <title>Windows Server Docker 설치</title>
      <link>https://0u0s.tistory.com/10</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스에 도커설치는 참 쉬운데..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우는 조금 귀찮은것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 그냥 윈도우10이라면 도커 데스크탑 설치하면 되는거 같은데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버는 powershall을 통해 설치를 해야한다나 뭐라나..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;환경은 window server 2019다.&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;/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;Powershell을 관리자 권한을 실행후 아래를 1줄씩 입력후 재부팅&lt;/p&gt;
&lt;pre id=&quot;code_1712124054946&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

Install-PackageProvider -Name NuGet

Install-Module -Name DockerMsftProvider

Install-package -name docker -providername DockerMsftProvider -Verbose -Force&lt;/code&gt;&lt;/pre&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;/p&gt;
&lt;pre id=&quot;code_1712124151639&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;PS C:\Users\Administrator&amp;gt; Install-Package -Name docker -ProviderName DockerMsftProvider
WARNING: Cannot find path
'C:\Users\ADMINI~1\AppData\Local\Temp\2\DockerMsftProvider\DockerDefault_DockerSearchIndex.json' because it does not
exist.
WARNING: Cannot bind argument to parameter 'downloadURL' because it is an empty string.
WARNING: The property 'AbsoluteUri' cannot be found on this object. Verify that the property exists.
WARNING: The property 'RequestMessage' cannot be found on this object. Verify that the property exists.
Install-Package : No match was found for the specified search criteria and package name 'docker'. Try
Get-PackageSource to see all available registered package sources.
At line:1 char:1
+ Install-Package -Name docker -ProviderName DockerMsftProvider
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 + CategoryInfo : ObjectNotFound: (Microsoft.Power....InstallPackage:InstallPackage) [Install-Package], Ex
 ception
 + FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackage&lt;/code&gt;&lt;/pre&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 찾아본 결과..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같은 명령어로 쓰면 된다고 하더라&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;똑같이 Powershall을 관리자 권한으로 실행하고 그저 명령어를 입력했다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;/p&gt;
&lt;pre id=&quot;code_1712124225380&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Install-WindowsFeature -Name Containers


Enable-WindowsOptionalFeature -Online -FeatureName containers -All


Install-Module -Name DockerMsftProvider -Repository PSGallery -Force


Invoke-WebRequest -UseBasicParsing &quot;https://raw.githubusercontent.com/microsoft/Windows-Containers/Main/helpful_tools/Install-DockerCE/install-docker-ce.ps1&quot; -o install-docker-ce.ps1
.\install-docker-ce.ps1


Invoke-WebRequest &quot;https://github.com/docker/compose/releases/latest/download/docker-compose-darwin-x86_64&quot; -UseBasicParsing -OutFile $env:SystemDirectory\docker-compose.exe&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;설치해두면 프로그램 설치가 짱쉬워지는 docker님을 윈도우에 설치하였다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;414&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E2NES/btsGlXOwxcL/FqjvVCUWgWkV0ydkJj1a51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E2NES/btsGlXOwxcL/FqjvVCUWgWkV0ydkJj1a51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E2NES/btsGlXOwxcL/FqjvVCUWgWkV0ydkJj1a51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE2NES%2FbtsGlXOwxcL%2FFqjvVCUWgWkV0ydkJj1a51%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;414&quot; height=&quot;128&quot; data-origin-width=&quot;414&quot; data-origin-height=&quot;128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>SERVER</category>
      <author>adnin</author>
      <guid isPermaLink="true">https://0u0s.tistory.com/10</guid>
      <comments>https://0u0s.tistory.com/10#entry10comment</comments>
      <pubDate>Wed, 3 Apr 2024 15:07:58 +0900</pubDate>
    </item>
    <item>
      <title>이모지 선택을 간편하게! 이모티콘 선택기 javascript 라이브러리 활용하기</title>
      <link>https://0u0s.tistory.com/9</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;커뮤니티 웹사이트나 채팅 앱에 적용하기위해 아래와 같이&amp;nbsp;&lt;/span&gt;이모티콘을 선택하는 기능이 필요했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-06-06 오후 10.02.14.png&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;796&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1zJQa/btsiOf63zCq/rbVkKblaxJot7iZKlEPjE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1zJQa/btsiOf63zCq/rbVkKblaxJot7iZKlEPjE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1zJQa/btsiOf63zCq/rbVkKblaxJot7iZKlEPjE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1zJQa%2FbtsiOf63zCq%2FrbVkKblaxJot7iZKlEPjE0%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;270&quot; height=&quot;290&quot; data-filename=&quot;스크린샷 2023-06-06 오후 10.02.14.png&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;796&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데, 저 수많은 이모지들을 하드코딩하거나 DB에 저장하여 불러오는 것은 좀 아닌거 같단 느낌이 들었다.&lt;br /&gt;&lt;br /&gt;이를위해&amp;nbsp; 이모지를 표시해주고 선택하는 라이브러리를 찾았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이&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;이 라이브러리를 사용하는 방법은 매우 간단하다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. CDN&amp;nbsp;&lt;/h4&gt;
&lt;pre id=&quot;code_1686056768713&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script src=&quot;
https://cdn.jsdelivr.net/npm/@joeattardi/emoji-button@4.6.4/dist/index.min.js
&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;2. 코드 예시&lt;/h4&gt;
&lt;pre id=&quot;code_1686056867172&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;button id=&quot;emoji_btn&quot;&amp;gt;이모지_입력&amp;lt;/button&amp;gt;
&amp;lt;input type=&quot;text&quot; id=&quot;message&quot;&amp;gt;

&amp;lt;script src=&quot;
https://cdn.jsdelivr.net/npm/@joeattardi/emoji-button@4.6.4/dist/index.min.js
&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script&amp;gt;  
  const button = document.querySelector('#emoji-button');
  const picker = new EmojiButton({
  	/*옵션입력*/
  });

  picker.on('emoji', emoji =&amp;gt; {
    document.querySelector('input').value += emoji;
  });

  button.addEventListener('click', () =&amp;gt; {
    picker.togglePicker(button);
  });
 &amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;간단한 코드로 이모지 목록을 불러오고 내용을 입력받을 수 있다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;3. 옵션&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자세한 옵션은 아래 제작한 사람의 github를 보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &lt;code&gt;position&lt;/code&gt; &lt;span style=&quot;background-color: #ffffff; color: #292c32; text-align: start;&quot;&gt;요소를 기준으로 선택기를 표시할 위치&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp;&lt;code&gt;zIndex&lt;/code&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt; z-index, 요소의 우선 순위&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp;&lt;code&gt;i18n&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;다국어로 표시할때 (아래 코드로 사용)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1686057150268&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;i18n: {
  search: 'Search emojis...',
  categories: {
    recents: 'Recent Emojis',
    smileys: 'Smileys &amp;amp; Emotion',
    people: 'People &amp;amp; Body',
    animals: 'Animals &amp;amp; Nature',
    food: 'Food &amp;amp; Drink',
    activities: 'Activities',
    travel: 'Travel &amp;amp; Places',
    objects: 'Objects',
    symbols: 'Symbols',
    flags: 'Flags'
  },
  notFound: 'No emojis found'
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;적용하면서..&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;탬플릿이 문제인지 몰라도 zIndex를 아무리 사용해줘도 이녀석의 div뒤에 숨어있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 이모지 셀렉터 표시해주는 버튼을 클릭했을때 javascirpt 코드를 추가해줬다.&lt;/p&gt;
&lt;pre id=&quot;code_1686057428618&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  button.addEventListener('click', () =&amp;gt; {
    picker.togglePicker(button);
    document.querySelector('.emoji-picker.light').parentNode.style=&quot;position: absolute; right: 0; bottom: 0; z-index:9999&quot;;
  });&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버튼을 눌러서 이모지 셀렉터가 표시될&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;.wrapper&lt;/code&gt; div 안에&amp;nbsp; &lt;code&gt;.emoji-picker .light&lt;/code&gt;라는 div가 생긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;.wrapper&lt;/code&gt;에 직접 &lt;code&gt;z-index&lt;/code&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;&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;자세한 내용은 제작자의 gitHub페이지를 참고하자!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/MJRomka/emoji-button&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/MJRomka/emoji-button&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1686057774704&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - MJRomka/emoji-button: Vanilla JavaScript emoji picker component&quot; data-og-description=&quot;Vanilla JavaScript emoji picker component. Contribute to MJRomka/emoji-button development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/MJRomka/emoji-button&quot; data-og-url=&quot;https://github.com/MJRomka/emoji-button&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cIZ5Yd/hySTPxA01u/dPeBPLslLWioDHdechZgG1/img.png?width=1200&amp;amp;height=600&amp;amp;face=928_101_1108_281&quot;&gt;&lt;a href=&quot;https://github.com/MJRomka/emoji-button&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/MJRomka/emoji-button&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cIZ5Yd/hySTPxA01u/dPeBPLslLWioDHdechZgG1/img.png?width=1200&amp;amp;height=600&amp;amp;face=928_101_1108_281');&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;GitHub - MJRomka/emoji-button: Vanilla JavaScript emoji picker component&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Vanilla JavaScript emoji picker component. Contribute to MJRomka/emoji-button development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Javascript/VanilaJS</category>
      <category>Javascript</category>
      <category>이모지</category>
      <category>이모지 선택기</category>
      <category>이모티콘</category>
      <category>이모티콘 선택기</category>
      <author>adnin</author>
      <guid isPermaLink="true">https://0u0s.tistory.com/9</guid>
      <comments>https://0u0s.tistory.com/9#entry9comment</comments>
      <pubDate>Tue, 6 Jun 2023 22:19:47 +0900</pubDate>
    </item>
    <item>
      <title>SVG기반의 WEB/APP 아이콘</title>
      <link>https://0u0s.tistory.com/8</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;사람들이 많이 쓰는 웹 아이콘 하나인 Font Awesome이 있는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근 발견한 괜찮은 아이콘 팩이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 아이콘 팩은 JavaScript는 물론 React, React Native, Vue, Flutter 등 다양한 웹과 앱 Framework에서 사용할 수 있다.&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;아래는 lucide의 공식 홈페이지다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자세한 사용법은 홈페이지에 들어가서 살펴보자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://lucide.dev/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://lucide.dev/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1685885446960&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;Lucide&quot; data-og-description=&quot;&quot; data-og-host=&quot;lucide.dev&quot; data-og-source-url=&quot;https://lucide.dev/&quot; data-og-url=&quot;https://lucide.dev/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://lucide.dev/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://lucide.dev/&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;Lucide&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;lucide.dev&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;아무튼 fontawesome은 폰트 기반이지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;lucide는 SVG로 출력되어서 조금 더 유연성이 있다.&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;순수 javascript 사용시에는 아래와 같이 쓸 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1685885516204&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;body&amp;gt;
  &amp;lt;i icon-name=&quot;volume-2&quot; class=&quot;my-class&quot;&amp;gt;&amp;lt;/i&amp;gt;
  &amp;lt;i icon-name=&quot;x&quot;&amp;gt;&amp;lt;/i&amp;gt;
  &amp;lt;i icon-name=&quot;menu&quot;&amp;gt;&amp;lt;/i&amp;gt;

  &amp;lt;script src=&quot;https://unpkg.com/lucide@latest&quot;&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;script&amp;gt;
    lucide.createIcons();
  &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;&lt;/code&gt;&lt;/pre&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;lucide.createIcons(); 를 쓰면 svg형식으로 바꿔주는것으로 보인다.&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;물론 루시드 아이콘 팩이 Font Awesome의 다양한 아이콘 수보다는 적지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹과 Flutter, React Native에서도 사용할 수 있는 큰 장점이 있으며,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;스크린샷 2023-06-04 오후 10.33.55.png&quot; data-origin-width=&quot;2102&quot; data-origin-height=&quot;1022&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/No3bg/btsitUoV7d0/XWcbSNAD8C3U4AkmhnpvC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/No3bg/btsitUoV7d0/XWcbSNAD8C3U4AkmhnpvC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/No3bg/btsitUoV7d0/XWcbSNAD8C3U4AkmhnpvC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNo3bg%2FbtsitUoV7d0%2FXWcbSNAD8C3U4AkmhnpvC0%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;2102&quot; height=&quot;1022&quot; data-filename=&quot;스크린샷 2023-06-04 오후 10.33.55.png&quot; data-origin-width=&quot;2102&quot; data-origin-height=&quot;1022&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>WEB&amp;amp;APP</category>
      <author>adnin</author>
      <guid isPermaLink="true">https://0u0s.tistory.com/8</guid>
      <comments>https://0u0s.tistory.com/8#entry8comment</comments>
      <pubDate>Sun, 4 Jun 2023 22:34:38 +0900</pubDate>
    </item>
    <item>
      <title>프로그레시브 웹 앱 (PWA, Progressive Web Apps) 핵심 요약</title>
      <link>https://0u0s.tistory.com/6</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;제일 핵심적인 요약&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;장점&lt;/b&gt; : 플레이스토어나 앱 스토어 없이도 앱 형태로 다운로드 받을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;단점&lt;/b&gt; : 아이폰에서는 푸시 알림을 받을 수 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;핵심적인&amp;nbsp;특징&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;응답성&lt;/b&gt; : 모든 기기에 적합하게 동작하며, 빠른 응답성을 보입니다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;오프라인&amp;nbsp;사용&lt;/b&gt;:&amp;nbsp;서비스&amp;nbsp;워커(service&amp;nbsp;worker)와&amp;nbsp;캐시를&amp;nbsp;이용해&amp;nbsp;오프라인에서도&amp;nbsp;동작할&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;앱스토어&amp;nbsp;없이&amp;nbsp;설치&lt;/b&gt;:&amp;nbsp;사용자는&amp;nbsp;웹사이트를&amp;nbsp;방문하는&amp;nbsp;것만으로도&amp;nbsp;PWA를&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;br /&gt;&lt;br /&gt;&lt;b&gt;푸시&amp;nbsp;알림&lt;/b&gt;: 웹 앱이 백그라운드에 있어도 사용자에게 푸시 알림을 보낼 수 있습니다. (안드로이드 한정)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;안전&lt;/b&gt;:&amp;nbsp;HTTPS를&amp;nbsp;통해서만 제공되어&amp;nbsp;정보를&amp;nbsp;안전하게&amp;nbsp;보호합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;PWA을 위해 필요한 것&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;manifest.json&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;service-worker.js&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;https&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;PWA기술이 적용된 대표적인 사이트&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;unnamed.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cX6sGG/btsiuKr4AA3/ZOpgpfEmXqIBgt7AheoQsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cX6sGG/btsiuKr4AA3/ZOpgpfEmXqIBgt7AheoQsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cX6sGG/btsiuKr4AA3/ZOpgpfEmXqIBgt7AheoQsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcX6sGG%2FbtsiuKr4AA3%2FZOpgpfEmXqIBgt7AheoQsk%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;170&quot; height=&quot;170&quot; data-filename=&quot;unnamed.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Twitter&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;twitter Lite를 통해 다운로드 받을 수 있다.&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;unnamed (1).png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcbLME/btsivhpCoEQ/4osDakCLaYPLS5ETry5WN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcbLME/btsivhpCoEQ/4osDakCLaYPLS5ETry5WN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcbLME/btsivhpCoEQ/4osDakCLaYPLS5ETry5WN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcbLME%2FbtsivhpCoEQ%2F4osDakCLaYPLS5ETry5WN0%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;170&quot; height=&quot;170&quot; data-filename=&quot;unnamed (1).png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Pinterest&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;핀터레스트 또한 PWA로 앱을 다운로드 받을 수 있다.&lt;/p&gt;</description>
      <category>WEB&amp;amp;APP</category>
      <author>adnin</author>
      <guid isPermaLink="true">https://0u0s.tistory.com/6</guid>
      <comments>https://0u0s.tistory.com/6#entry6comment</comments>
      <pubDate>Sat, 3 Jun 2023 22:19:05 +0900</pubDate>
    </item>
    <item>
      <title>애플 앱스토어 심사 거부 사례 및 대응 정리</title>
      <link>https://0u0s.tistory.com/5</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;iOS 앱을 올리기 위해 심사를 하다보면 많은 이유로 심사 거부 당한다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;다음은 ionic3로 ios앱 개발하며 내가 당한 리젝 내용과 대처 방법, 그리고 다른 사람들이 리젝 당한 사례를 작성한 내용이니, ionic3로 ios 개발할때 참조하면 특히 더 좋습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;다른 프레임워크로 개발한다해도 리젝 당하는것은 마찬가지니.. 한번쯤 보면 좋을듯&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 커뮤니티 기능 ( 유저가 글 작성이 가능하며 모두에게 공개됨 ) 존재 시&lt;/b&gt;&lt;br /&gt;&lt;b&gt;게시자 차단 및 신고 기능 필요&lt;/b&gt;&lt;/h3&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;리젝 내용&lt;/h4&gt;
&lt;pre id=&quot;code_1685533663183&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Guideline 1.2 - Safety - User Generated Content

Your app enables the display of user-generated content but does not have the proper precautions in place.

Next Steps

To resolve this issue, please revise your app to implement all of the following precautions:

- Require that users agree to terms (EULA) and these terms must make it clear that there is no tolerance for objectionable content or abusive users

- A method for filtering objectionable content
- A mechanism for users to flag objectionable content
- A mechanism for users to block abusive users

- The developer must act on objectionable content reports within 24 hours by removing the content and ejecting the user who provided the offending content&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt;* 각 게시글에 대한 신고기능과 유저를 차단 및 차단해제하는 기능을 넣으니 통과됨&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt;유저 신고 기능이 필요 없는 경우 =&amp;gt; 운영자만 글을 작성할 수 있음&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt;유저가 댓글 작성만 가능한 경우에는 신고/차단 없어도 넘어가는 경우도 있다고 함&lt;/span&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 이벤트 존재 시 상품 지급 내용 시 주의&lt;/b&gt;&lt;/h3&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;리젝 내용&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1685533726295&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Guideline 5.3.2 - Legal - Gaming, Gambling, and Lotteries

Your app includes a contest or sweepstakes but it does not:

- Include official rules for the 오픈 이벤트 within the app, which is required.
- Indicate that Apple is not involved in any way with the contest or sweepstakes.
- Enforce an app age rating of 17+.

Next Steps
It is necessary to:
- Include official rules of the contest or sweepstakes in the app and ensure the rules are available to users at all times.
- Include an explicit statement in the contest or sweepstakes rules specifying that Apple is not a sponsor.
- Enforce an age rating of 17+.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;* 리젝 당시에는 이벤트 기간 내 회원가입 시, 스타벅스 기프티콘 증정하는 이벤트였음.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;이벤트 상품 지급 자체를 금지하지 않으나, 앱 연령을 17세 이상으로 높여야하고,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;본 이벤트가 애플과 관련이 없다는 내용을 넣어야 한다. &amp;nbsp;( 17세 이상 올리기엔 적철치 않아, 그냥 심사기간에 이벤트 내용 지우고 재심사 요청하였음. )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. SNS로그인 존재 시, Apple로 로그인 필수&lt;/b&gt;&lt;/h3&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;리젝 내용&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1685533771813&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Guideline 4.8 - Design - Sign in with Apple

Your app uses a third-party login service, but does not offer Sign in with Apple. Apps that use a third-party login service for account authentication need to offer Sign in with Apple to users as an equivalent option.

Next Steps

Please revise your app to offer Sign in with Apple as an equivalent option for account authentication.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;** 애플 로그인 가이드라인을 지키지 않아도 리젝된다.&lt;br /&gt;(&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://developer.apple.com/design/human-interface-guidelines/sign-in-with-apple/overview/introduction/&quot;&gt;https://developer.apple.com/design/human-interface-guidelines/sign-in-with-apple/overview/introduction/&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;)&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;** 텍스트는 아래와 같이 꼭 들어가야한다. 안그러면 리젝됨&lt;br /&gt;영문의 경우 :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Sign in with Apple&lt;/b&gt;&lt;br /&gt;한글의 경우 :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Apple로 로그인&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;또는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Apple로 계속하기&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;** 애플 로그인이 있다면 본인인증 기능을 넣을 수 없다.&lt;br /&gt;( 애플로그인+본인인증을 경우에 따라 넣으면 승인될 수 있지만, 절차가 복잡한 것 같다.&amp;nbsp; 어떤 커뮤니티 글에 따르면, 전동킥보드 앱에 애플 로그인을 넣고, 운전면허 확인을 위해 PASS앱으로 본인인증 기능을 넣었더니 관련법령까지 요구했다고 하니, 중요한거 아닌 이상 본인인증 삭제 추천 )&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;** 가입화면에서 애플 계정정보&lt;br /&gt;( 이름, 이메일(선택)) 입력 값이 화면에 보이면 안되는듯한데.. 잘 모르겠다.&lt;br /&gt;나 같은 경우에는 자동으로 입력되있게끔 하고 그냥 화면에 보여주기만 했는데 심사 거절됐다.)&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 이메일은 공개안하기 설정할 수 있는데 비공개시 원래 eamil@apple-privacy.com 식으로 불러온다는데 ionic3의 플러그인에선 안불러와져서 그냥 이메일 필수값으로 안하고, 애플 로그인 시 이메일 주소 안보이게 수정&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 카메라, 블루투스, 위치권한 등 해당 기능을 사용하는 이유를&lt;/b&gt;&lt;br /&gt;&lt;b&gt;사용자에게 알려줘야한다.&lt;/b&gt;&lt;/h3&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;리젝 내용&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1685533826752&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage

We noticed that your app requests the user&amp;rsquo;s consent to access the camera, but doesn&amp;rsquo;t sufficiently explain the use of the camera in the purpose string.

To help users make informed decisions about how their data is used, all permission request alerts need to specify how your app will use the requested information.

Next Steps

Please revise the relevant purpose string in your app&amp;rsquo;s Info.plist file to specify why your app needs access to the user's camera.

You can modify your app's Info.plist file using the property list editor in Xcode.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;plist 수정해야하는데 ionic ios빌드 시 plist파일이 다시 작성된다&lt;br /&gt;그래서 config.xml에서 plist 파일이 수정되도록 해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;* 아래의 명령어 참고&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;* 플러그인 추가&lt;br /&gt;$ cordova plugin add cordova-custom-config&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;* config.xml에 ios 플랫폼쪽에 추가 / parent는 plist파일을 참고한다.&lt;/p&gt;
&lt;pre id=&quot;code_1685533848315&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;   &amp;lt;!-- Set message displayed when app requests constant location updates --&amp;gt;
&amp;lt;custom-config-file platform=&quot;ios&quot; target=&quot;*-Info.plist&quot; parent=&quot;NSLocationAlwaysUsageDescription&quot;&amp;gt;
&amp;lt;string&amp;gt;This app requires constant access to your location in order to track your position, even when the screen is off.&amp;lt;/string&amp;gt;
&amp;lt;/custom-config-file&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/dpa99c/cordova-custom-config&quot;&gt;https://github.com/dpa99c/cordova-custom-config&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1685533864846&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - dpa99c/cordova-custom-config: Cordova/Phonegap plugin to update platform configuration files based on preferences and c&quot; data-og-description=&quot;Cordova/Phonegap plugin to update platform configuration files based on preferences and config-file data defined in config.xml - GitHub - dpa99c/cordova-custom-config: Cordova/Phonegap plugin to up...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/dpa99c/cordova-custom-config&quot; data-og-url=&quot;https://github.com/dpa99c/cordova-custom-config&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bEq2Lc/hySPfJ9a5w/ZD63zJtxQKKffhyycQdcgK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/dpa99c/cordova-custom-config&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/dpa99c/cordova-custom-config&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bEq2Lc/hySPfJ9a5w/ZD63zJtxQKKffhyycQdcgK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;GitHub - dpa99c/cordova-custom-config: Cordova/Phonegap plugin to update platform configuration files based on preferences and c&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Cordova/Phonegap plugin to update platform configuration files based on preferences and config-file data defined in config.xml - GitHub - dpa99c/cordova-custom-config: Cordova/Phonegap plugin to up...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5. 기타 찾은 사례&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. 회원가입 시 리워드 지급 금지 (쿠폰/포인트 등)&lt;br /&gt;2. 초대 이벤트 금지&lt;br /&gt;3. 게시글이 아무것도 없으면 리젝될 수 있음&lt;br /&gt;4. 게시글에 테스트 게시글이 있음 리젝될 수 있음&lt;br /&gt;5. 개인정보 (성별/주소)가 필수값이여도 리젝될 수 있음&lt;br /&gt;6. 타사 기기, 플랫폼 언급시 리젝될 수 있음&lt;/p&gt;</description>
      <category>WEB&amp;amp;APP</category>
      <author>adnin</author>
      <guid isPermaLink="true">https://0u0s.tistory.com/5</guid>
      <comments>https://0u0s.tistory.com/5#entry5comment</comments>
      <pubDate>Wed, 31 May 2023 20:51:25 +0900</pubDate>
    </item>
    <item>
      <title>자주 사용할 수 있는 Docker 명령어 간단 정리</title>
      <link>https://0u0s.tistory.com/4</link>
      <description>&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;Docker 명령어 정리를 했습니다.&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;컨테이너 실행하고 컨테이너 정보, 이미지 빌드 등을 가장 많이 쓰겠지요..&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;여기서서는 자세한 언급은 없지만 docker-compose를 쓰면 더욱 편한 작업이 됩니다.&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;docker&amp;nbsp;container&amp;nbsp;run&amp;nbsp;&amp;lt;Docker&amp;nbsp;이미지&amp;nbsp;이름&amp;gt;&amp;nbsp;&amp;lt;실행할&amp;nbsp;명령&amp;gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;ndash;&amp;nbsp;docker&amp;nbsp;container&amp;nbsp;run&amp;nbsp;:&amp;nbsp;컨테이너를&amp;nbsp;작성&amp;nbsp;및&amp;nbsp;실행&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;도커 시스템 정보&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;ndash;&amp;nbsp;container&amp;nbsp;수,&amp;nbsp;도커&amp;nbsp;버전,&amp;nbsp;스토리지&amp;nbsp;드라이버&amp;nbsp;종류등을&amp;nbsp;알&amp;nbsp;수&amp;nbsp;있음&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;도커 시스템 df&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;ndash;&amp;nbsp;docker가&amp;nbsp;사용하고&amp;nbsp;있는&amp;nbsp;디스크의&amp;nbsp;이용&amp;nbsp;상황&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;​&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;도커 이미지 ls&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;ndash;&amp;nbsp;도커&amp;nbsp;이미지&amp;nbsp;목록&amp;nbsp;(ls&amp;nbsp;생략가능)&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;docker container run &amp;ndash;name &amp;lt;이름&amp;gt; -p &amp;lt;포트번호&amp;gt;:&amp;lt;포트번호&amp;gt; &amp;lt;이미지 이름&amp;gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;ndash;&amp;nbsp;&amp;nbsp;&amp;nbsp;-d&amp;nbsp;:&amp;nbsp;detach&amp;nbsp;백그라운드에서&amp;nbsp;실행&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;ndash;&amp;nbsp;&amp;nbsp;&amp;nbsp;-h&amp;nbsp;:&amp;nbsp;hostname&amp;nbsp;호스트&amp;nbsp;이름&amp;nbsp;설정&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;ndash;&amp;nbsp;&amp;nbsp;&amp;nbsp;-e&amp;nbsp;:&amp;nbsp;env&amp;nbsp;컨테이너에&amp;nbsp;환경&amp;nbsp;변수&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;ndash;&amp;nbsp;&amp;nbsp;-m&amp;nbsp;:&amp;nbsp;memory&amp;nbsp;메모리&amp;nbsp;한계&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;* docker-compose&amp;nbsp; 사용하면 위 속성을 docker-compose.yml파일에 저장해서 사용할 수 있다.&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;도커 컨테이너 ps&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;ndash;&amp;nbsp;도커&amp;nbsp;컨테이너&amp;nbsp;목록&amp;nbsp;(container&amp;nbsp;생략&amp;nbsp;가능)&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;docker&amp;nbsp;container&amp;nbsp;status&amp;nbsp;&amp;lt;컨테이너&amp;nbsp;이름&amp;gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;ndash;&amp;nbsp;컨테이너의&amp;nbsp;상태&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;docker stop&amp;nbsp;&amp;nbsp;&amp;lt;컨테이너 이름&amp;gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;docker&amp;nbsp;start&amp;nbsp;&amp;lt;컨테이너&amp;nbsp;이름&amp;gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;docker image inspect &amp;lt;이미지 이름&amp;gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;이미지&amp;nbsp;상세&amp;nbsp;정보&amp;nbsp;확인&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;docker images rm &amp;lt;이미지 이름&amp;gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;ndash;&amp;nbsp;&amp;nbsp;&amp;nbsp;-f,&amp;nbsp;-force&amp;nbsp;:&amp;nbsp;강제&amp;nbsp;삭제&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;도커 이미지 정리&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;사용하지 않는 이미지를 삭제합니다.&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;ndash;&amp;nbsp;&amp;nbsp;&amp;nbsp;-a : 사용하지 않는 이미지를 모두 삭제&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;ndash;&amp;nbsp;&amp;nbsp;&amp;nbsp;-f&amp;nbsp;:&amp;nbsp;강제&amp;nbsp;삭제&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-article-id=&quot;1586&quot;&gt;&amp;nbsp;&lt;/div&gt;</description>
      <category>SERVER</category>
      <author>adnin</author>
      <guid isPermaLink="true">https://0u0s.tistory.com/4</guid>
      <comments>https://0u0s.tistory.com/4#entry4comment</comments>
      <pubDate>Wed, 31 May 2023 20:43:07 +0900</pubDate>
    </item>
    <item>
      <title>iOS,아이폰 CSS 마크업시 고려해야할 사항</title>
      <link>https://0u0s.tistory.com/3</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;퍼블리싱 하다보면 안드로이드에서는 잘 작동하였으나 아이폰에서만 문제가 발생한적이 있었습니다. 아래의 문제들은 어쩌면 최신 iOS에서는 따로 적용을 안해도 잘 작동할지도 모릅니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;하지만, 좋은 퍼블리싱을 만들기 위해서는 구형 아이폰에서도 잘 적용이 되어야겠지요.. 그래서 이전부터 퍼블리싱하면서 나왔던 문제와 사용한 코드를 작성하였습니다.&lt;/span&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;/b&gt;. 가로스크롤&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;테이블 같은 경우 가로 스크롤을 주는 경우가 많습니다.&lt;br /&gt;overflow-x:scroll를 주면 따로 스크립트 없이 가로 스크롤이 잘 적용되긴 하지만 iPhone에서는 스크롤이 부드럽지 못하고 뚝뚝 끊기는 느낌으로 스크롤이 되는 현상이 발생하였습니다. overflow 속성 준곳에 -webkit-overflow-scrolling: touch 를 추가하면 정상적으로 작동합니다.&lt;br /&gt;* 스크롤을 디자인하고, 스크롤에 효과를 준다면&amp;nbsp; iscroll 사용을 추천드립니다.&lt;/p&gt;
&lt;pre id=&quot;code_1685532745960&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; .box {
  overflow: hidden;
  overflow-y: hidden;
  overflow-x: scroll;
  -webkit-overflow-scrolling: touch;
}
.box .inbox {
  width: auto;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;두번째&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;. 터치 효과&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;버튼을 클릭하거나 마우스 오버 시 색상 변경과 같은 간단한 효과를 줄 수 있는건 잘 아시는 부분일겁니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;모바일 기기에서도 버튼 터치 시 색상이 변경되길 원하는 클라이언트도 있었습니다. 안드로이드 기기에서는 :hover나 :active를 하면 버튼 클릭시 PC와 같이 버튼 색상이 바뀌게 할 수 있지만 아이폰에서는 해당 셀렉터로는 작동하지 않았습니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;이 경우에는 -webkit-tap-highlight-color에 rgba로 색상을 주는것이 좋습니다. 최신 안드로이드 폰에서도 지원하지만 구형 안드로이드폰은 지원하지 않는 경우도 있는 것 같으므로 :active 셀렉터도 같이 추가하면 좋습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1685532844040&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.btn {
    background: #353535;
    -moz-tap-highlight-color:rgba(64, 64, 64, 0.3);
    -webkit-tap-highlight-color:rgba(64, 64, 64, 0.3);
}
.btn:active {
    background: #000;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;세번째&lt;/b&gt;. Safe Area&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Web이 아닌 Ionic과 같은 하이브리드 앱을 만들때 필요합니다. 노치로 인하여 이 설정을 안하면 버튼이 노치나 하단 제스처 영역(?)과 겹쳐서 원할하게 사용할 수 없습니다.&lt;br /&gt;safe-area-inset-top이 노치, bottom이 하단영역입니다.&lt;br /&gt;padding과 calc 속성을 잘 섞어서 사용하는게 좋을듯합니다&lt;/p&gt;
&lt;pre id=&quot;code_1685532873706&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/ iOS 10
constant(safe-area-inset-top)
constant(safe-area-inset-right)
constant(safe-area-inset-bottom)
constant(safe-area-inset-left)
// iOS 11 이상
env(safe-area-inset-top)
env(safe-area-inset-right)
env(safe-area-inset-bottom)
env(safe-area-inset-left)&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1685532911708&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.btn {
    padding-bottom: calc(constant(safe-area-inset-bottom) + 10px);
    padding-bottom: calc(env(safe-area-inset-bottom) + 10px);
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>WEB&amp;amp;APP</category>
      <author>adnin</author>
      <guid isPermaLink="true">https://0u0s.tistory.com/3</guid>
      <comments>https://0u0s.tistory.com/3#entry3comment</comments>
      <pubDate>Wed, 31 May 2023 20:35:20 +0900</pubDate>
    </item>
  </channel>
</rss>