<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>개발노트! 머리를 믿지 말고 정리하자</title>
    <link>https://evst.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Mon, 24 Aug 2026 04:12:42 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>하악생</managingEditor>
    <image>
      <title>개발노트! 머리를 믿지 말고 정리하자</title>
      <url>https://tistory1.daumcdn.net/tistory/2906399/attach/fec15ce2b1fa48cf99c3607ead4f3d3e</url>
      <link>https://evst.tistory.com</link>
    </image>
    <item>
      <title>[Spring boot] JPA test</title>
      <link>https://evst.tistory.com/53</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;SpringBootTest 어노테이션을 통해서 EntityManager를 Autowired하고 데이터를 조회하는 방법도 있지만,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 Beans를 스캔하는 방식을 사용하고 있기 때문에 &lt;span&gt;프로젝트가 무거워질수록&lt;span&gt; 테스트 시간이 오래 걸릴 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;원하는 부분에 대해서만 쿼리 테스트를 진행하고싶다면, DataJpaTest 어노테이션으로 데이터베이스 관련해서만 테스트해볼 수 있다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;하지만.. 원격 DB를 가리키는 경우 드라마틱한 수행시간 차이는 느낄 수가 없었다.&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;JUnit5 기준 JPA(+ QueryDSL)만 테스트하고 싶은 경우 다음 어노테이션을 추가한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(JUnit4는 @RunWith(SpringRunner.class)까지 추가)&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;1. &lt;b&gt;AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;-&amp;gt; NONE : 데이터베이스의 소스를 프로젝트 Active Profiles에 정의되어있는 데이터베이스로 가리키도록 하는 옵션&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. &lt;b&gt;DataJpaTest&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;-&amp;gt; JPA 테스트 명시&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;다음은 테스트용 풀 코드! TestEntity라는 Entity가 있다고 가정한다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1673277094935&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@DataJpaTest
public class JPATests {

    @Autowired
    private TestEntityManager testEntityManager;

    @Test
    @Rollback(value = false)
    public void testEntityCreator() throws Exception {
        EntityManager em = testEntityManager.getEntityManager();
        TestEntity testEntity = new TestEntity();
        testEntity.setValue1(&quot;test!&quot;);

        em.persist(testEntity);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;@Rollback(value = false) : 테스트 진행 시 롤백을 하지 않도록 (기본적으로는 모든 테스트 작업은 rollback이 진행되도록 되어있음)&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Spring Boot</category>
      <author>하악생</author>
      <guid isPermaLink="true">https://evst.tistory.com/53</guid>
      <comments>https://evst.tistory.com/53#entry53comment</comments>
      <pubDate>Tue, 10 Jan 2023 00:20:11 +0900</pubDate>
    </item>
    <item>
      <title>[AWS] EB에 SpringBoot 올리기</title>
      <link>https://evst.tistory.com/52</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;SpringBoot 프로젝트에서 Elastic BeansTalk에 올릴 때 고려사항&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. BootJar Gradle Task를 돌려서 XXXX.jar 파일을 올리기 (plain.jar로 올리면 안됨! / Springboot 2.5.0 이상에 해당 됨)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. application.yml에서의 SERVER PORT는 5000으로 시작하도록 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. (DB연결 없이 배포하는 경우) &lt;i&gt;@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)&lt;/i&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;BootJar Gradle Task를 돌려서 XXXX.jar 파일을 올리기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;XXX-plain.jar 파일은 의존성 모듈들이 포함되어있지 않은 순수 java파일들만으로 압축한 것이므로, 실제 운영을 할 때는 돌아가지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇기 때문에 jar Gradle task를 돌려서 나오는 XXX-plain.jar로 배포하지 말고, BootJar Task를 돌려 추출되는 XXX.jar파일을 통해 배포하도록 한다!&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;&lt;b&gt;application.yml에서의 SERVER PORT는 5000으로 시작하도록 설정&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Elastic BeansTalk (EB)에서 기본적으로 찾아 들어가는 어플리케이션의 로컬 포트는 5000이므로, 서버 구성 시 5000번 포트로 구성하도록 구성하면 된다!&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;&lt;b&gt;&lt;i&gt;@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)&lt;/i&gt;&amp;nbsp;어노테이션에 추가&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스트를 위해 DB연결 없이 일단 배포를 진행해보려는 경우, SpringBootApplication 어노테이션에 다음과 같은 Class를 막도록 추가하여야 동작한다!&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;exclude = DataSourceAutoConfiguration.class&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Spring Boot</category>
      <author>하악생</author>
      <guid isPermaLink="true">https://evst.tistory.com/52</guid>
      <comments>https://evst.tistory.com/52#entry52comment</comments>
      <pubDate>Mon, 12 Sep 2022 19:05:15 +0900</pubDate>
    </item>
    <item>
      <title>[Spring Boot] Cause: invalid source release: 11</title>
      <link>https://evst.tistory.com/51</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;SpringBoot 프로젝트를 유지보수, 추가 개발만 했지 생생부터 배포까지 진행해보는 것은 처음이다!&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1418&quot; data-origin-height=&quot;1182&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mXXqJ/btrLSthSPgB/ISUtLxKbKRnz70A678ugfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mXXqJ/btrLSthSPgB/ISUtLxKbKRnz70A678ugfK/img.png&quot; data-alt=&quot;Spring boot Initializer( https://start.spring.io/ )로부터 이렇게 세팅했다!&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mXXqJ/btrLSthSPgB/ISUtLxKbKRnz70A678ugfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmXXqJ%2FbtrLSthSPgB%2FISUtLxKbKRnz70A678ugfK%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;437&quot; height=&quot;1182&quot; data-origin-width=&quot;1418&quot; data-origin-height=&quot;1182&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Spring boot Initializer( https://start.spring.io/ )로부터 이렇게 세팅했다!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제 발생 1.&lt;/b&gt; SpringBoot Initializer(&lt;span style=&quot;color: #777777;&quot;&gt;&lt;a href=&quot;https://start.spring.io/&quot;&gt;https://start.spring.io/&lt;/a&gt;)&lt;/span&gt;에서 이런 값을 설정한 후 initializer프로젝트를 내려받고 바로 실행하니 다음과 같이 에러 발생!&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;186&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4K2BT/btrLVXQl4Q8/hS54w7CPndndkYoYSLLjO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4K2BT/btrLVXQl4Q8/hS54w7CPndndkYoYSLLjO1/img.png&quot; data-alt=&quot;Cause: invalid source relase : 11&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4K2BT/btrLVXQl4Q8/hS54w7CPndndkYoYSLLjO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4K2BT%2FbtrLVXQl4Q8%2FhS54w7CPndndkYoYSLLjO1%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;606&quot; height=&quot;186&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;186&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Cause: invalid source relase : 11&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;Gradle 세팅에서 Gradle JVM 버전(JDK)을 11버전으로 사용하겠다고 명시를 해야 하는데, 1.8버전을 가리키고 있기 때문에 발생한 문제였다! Preference (Command + , )창을 열어 Gradle - Gradle JVM 부분에 1.8 JDK를 가리키는 부분을 11버전으로 변경 -&amp;gt; Apply&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;1962&quot; data-origin-height=&quot;1428&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dftSad/btrLR7zatOr/D9qapk2gPCKKgS1zTmnjek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dftSad/btrLR7zatOr/D9qapk2gPCKKgS1zTmnjek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dftSad/btrLR7zatOr/D9qapk2gPCKKgS1zTmnjek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdftSad%2FbtrLR7zatOr%2FD9qapk2gPCKKgS1zTmnjek%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;1962&quot; height=&quot;1428&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;1962&quot; data-origin-height=&quot;1428&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1144&quot; data-origin-height=&quot;178&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cB9QGc/btrLR9cI7fK/xTerslhgDpXidev6hGWKu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cB9QGc/btrLR9cI7fK/xTerslhgDpXidev6hGWKu0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cB9QGc/btrLR9cI7fK/xTerslhgDpXidev6hGWKu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcB9QGc%2FbtrLR9cI7fK%2FxTerslhgDpXidev6hGWKu0%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;1144&quot; height=&quot;178&quot; data-origin-width=&quot;1144&quot; data-origin-height=&quot;178&quot;/&gt;&lt;/span&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;b&gt;문제 발생 2.&lt;/b&gt; xxx has beean compiled by a more recent version of the java Runtime. this version of the Jav Runtime only recognizes class file versions up to 52.0 오류 발생&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;626&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q5snn/btrLSuVnVNl/VYkTNQ7YOsBBJUGYJ4PWl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q5snn/btrLSuVnVNl/VYkTNQ7YOsBBJUGYJ4PWl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q5snn/btrLSuVnVNl/VYkTNQ7YOsBBJUGYJ4PWl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq5snn%2FbtrLSuVnVNl%2FVYkTNQ7YOsBBJUGYJ4PWl1%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;3000&quot; height=&quot;626&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;626&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;아까와는 다르게 Project 단위에서의 Java 버전 이슈로 인한 메시지.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;55.0 = Java 11, 52.0 = Java 1.8&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;Project Structre (Command + ;)창을 열어 Proejct - SDK를 1.8 -&amp;gt; 11로 변경 -&amp;gt; apply&amp;nbsp;&lt;/p&gt;</description>
      <category>Spring Boot</category>
      <author>하악생</author>
      <guid isPermaLink="true">https://evst.tistory.com/51</guid>
      <comments>https://evst.tistory.com/51#entry51comment</comments>
      <pubDate>Mon, 12 Sep 2022 17:07:48 +0900</pubDate>
    </item>
    <item>
      <title>[MAC/JetBrain] 맥 업데이트 이후(Monterey) 터미널에서 'idea', 'studio' 등 command가 먹히지 않는다.</title>
      <link>https://evst.tistory.com/49</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;intelliJ idea는 2017.3.7 빌드 버전을 사용하고있었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;22.08.03 추가 - 2022.02 빌드 버전으로 업데이트 이후 다시 Tools -&amp;gt; Create Command-line Launcher 메뉴로 생성하니 정상적으로 구동 된다! &lt;/b&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;기존에 잘만 쓰던 command가 맥 OS 업데이트 (Monterery / 12.5)이후 python을 찾을 수 없다는 메시지만 뱉고 실행이 되지 않았다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;574&quot; data-origin-height=&quot;80&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u5Xdt/btrIGyspBjJ/Cq9Lho8rhGBRmCf7p6A2j1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u5Xdt/btrIGyspBjJ/Cq9Lho8rhGBRmCf7p6A2j1/img.png&quot; data-alt=&quot;Android Studio를 실행하기 위한 'studio'명령까지.. 동일한 증상&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u5Xdt/btrIGyspBjJ/Cq9Lho8rhGBRmCf7p6A2j1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu5Xdt%2FbtrIGyspBjJ%2FCq9Lho8rhGBRmCf7p6A2j1%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;80&quot; data-origin-width=&quot;574&quot; data-origin-height=&quot;80&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Android Studio를 실행하기 위한 'studio'명령까지.. 동일한 증상&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;idea 명령이 실행되는 디렉토리가 어딘지 찾아보았고, /usr/local/bin 아래에 명령어들이 정의되어있는 것을 확인했다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1504&quot; data-origin-height=&quot;372&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lU2RB/btrIzFfusyT/gK1DVc9bKpKffkIyK5HjjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lU2RB/btrIzFfusyT/gK1DVc9bKpKffkIyK5HjjK/img.png&quot; data-alt=&quot;해당 경로에 command-line으로 실행될 수 있는 명령어들이 정의되어있다. idea도 찾을 수 있다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lU2RB/btrIzFfusyT/gK1DVc9bKpKffkIyK5HjjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlU2RB%2FbtrIzFfusyT%2FgK1DVc9bKpKffkIyK5HjjK%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;1504&quot; height=&quot;372&quot; data-origin-width=&quot;1504&quot; data-origin-height=&quot;372&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;해당 경로에 command-line으로 실행될 수 있는 명령어들이 정의되어있다. idea도 찾을 수 있다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;$nano /usr/local/bin/idea&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령어를 통해 idea 파일을 열어보았고, 해당  스크립트 파일에서는 다음과 같은 코드가 있었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;374&quot; data-origin-height=&quot;254&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGa6uN/btrIEXMKK7Y/PGgguq30hhjTXPVp9tywIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGa6uN/btrIEXMKK7Y/PGgguq30hhjTXPVp9tywIK/img.png&quot; data-alt=&quot;최상단 #! /usr/bin/env python 라인이 있다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGa6uN/btrIEXMKK7Y/PGgguq30hhjTXPVp9tywIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGa6uN%2FbtrIEXMKK7Y%2FPGgguq30hhjTXPVp9tywIK%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;374&quot; height=&quot;254&quot; data-origin-width=&quot;374&quot; data-origin-height=&quot;254&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;최상단 #! /usr/bin/env python 라인이 있다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;python 기반으로 되어있었고, python이 있어야 실행될 수 있는 스크립트였다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 맥에는 python이 설치되어있었다. 그런데, python 명령어는 터미널에서 동작하지 않았다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;456&quot; data-origin-height=&quot;82&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XoW0f/btrIC0pDmSG/ZsARuiedXDddjudAhpZ6vK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XoW0f/btrIC0pDmSG/ZsARuiedXDddjudAhpZ6vK/img.png&quot; data-alt=&quot;python으로 이것저것 한 기억이 있는데 왜 없다고 그러지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XoW0f/btrIC0pDmSG/ZsARuiedXDddjudAhpZ6vK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXoW0f%2FbtrIC0pDmSG%2FZsARuiedXDddjudAhpZ6vK%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;456&quot; height=&quot;82&quot; data-origin-width=&quot;456&quot; data-origin-height=&quot;82&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;python으로 이것저것 한 기억이 있는데 왜 없다고 그러지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치되어있는 것은 python3.9였고, 3 버전 대의 명령어는 python3인것을 확인했다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1018&quot; data-origin-height=&quot;188&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Twt20/btrIA1bxqcO/dfq0sEAYbM1SahxjEWPu50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Twt20/btrIA1bxqcO/dfq0sEAYbM1SahxjEWPu50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Twt20/btrIA1bxqcO/dfq0sEAYbM1SahxjEWPu50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTwt20%2FbtrIA1bxqcO%2Fdfq0sEAYbM1SahxjEWPu50%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;1018&quot; height=&quot;188&quot; data-origin-width=&quot;1018&quot; data-origin-height=&quot;188&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 /usr/local/bin/idea 스크립트의 python을 &lt;b&gt;python3&lt;/b&gt;로 변경해주도록 하자.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;360&quot; data-origin-height=&quot;270&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/O4wOz/btrIy97Zyp5/cMtGKeLVMSAyrCnBxrV8Wk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/O4wOz/btrIy97Zyp5/cMtGKeLVMSAyrCnBxrV8Wk/img.png&quot; data-alt=&quot;최상단 python -&amp;amp;gt; python3&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/O4wOz/btrIy97Zyp5/cMtGKeLVMSAyrCnBxrV8Wk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FO4wOz%2FbtrIy97Zyp5%2FcMtGKeLVMSAyrCnBxrV8Wk%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;360&quot; height=&quot;270&quot; data-origin-width=&quot;360&quot; data-origin-height=&quot;270&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;최상단 python -&amp;gt; python3&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 $idea 명령어로 프로젝트가 정상적으로 열리는것을 확인할 수 있다.&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>12.5</category>
      <category>env: python</category>
      <category>idea</category>
      <category>idea command</category>
      <category>mac command</category>
      <category>Monterey</category>
      <author>하악생</author>
      <guid isPermaLink="true">https://evst.tistory.com/49</guid>
      <comments>https://evst.tistory.com/49#entry49comment</comments>
      <pubDate>Sun, 31 Jul 2022 22:58:45 +0900</pubDate>
    </item>
    <item>
      <title>[Postgresql] 여러개의 컬럼을 Like(%X%)로 조회를 어떻게 할 수 있을까.. (미해결)</title>
      <link>https://evst.tistory.com/48</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;이슈&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;모든 컬럼을 OR 절로 like 거는 방법이 비효율적이라 판단하여 이런식으로 해결해보기로 했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;예를 들어 Member의 Row 하나의 값이 다음과 같을 때&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;Member : {&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;id : 1,&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;age: 25,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;name: &quot;테스트&quot;,&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;description: &quot;안녕하세요&quot;,&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;phone_number: &quot;01000000000&quot;,&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;}&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&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;하지만 %가 앞에 위치하는 like %XXXX 쿼리는 무조건 Full Table Scan이 이루어지기 때문에 컬럼의 개수만큼 DB에 부하가 생긴다고 판단하였다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;그래서 컬럼의 개수를 줄이는 방법으로 대안을 마련해보려 한다.&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;내가 생각한 방안&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Member: {&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;id : 1,&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;age: 25,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;name: &quot;테스트&quot;,&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;description: &quot;안녕하세요A&quot;,&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;phone_number: &quot;01000000000&quot;,&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&amp;nbsp;search_text: &quot;25테스트안녕하세요a01000000000&quot;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;}&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;단점은 컬럼 중 하나라도 변경이 되는경우 Sync를 해주어야 하는 부분과, 이후 추가적으로 검색이 되어야 하는 컬럼이 생기면 마이그레이션 작업이 필요하다는 부분이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>하악생</author>
      <guid isPermaLink="true">https://evst.tistory.com/48</guid>
      <comments>https://evst.tistory.com/48#entry48comment</comments>
      <pubDate>Fri, 15 Jul 2022 15:21:29 +0900</pubDate>
    </item>
    <item>
      <title>[Android] 플레이스토어에서 설치한 앱이 Signed APK로 업데이트가 안되는 이유</title>
      <link>https://evst.tistory.com/47</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;개요&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;lsquo;Google Play 스토어'를 통해 설치된 앱이 있는 경우에도 APK파일을 통해 업데이트를 하려고 했지만 &amp;lsquo;패키지가 기존 패키지와 충돌하여 앱이 설치되지 않았습니다&amp;rsquo; 라며 설치가 정상적으로 되지 않는 증상&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;과정&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;# adb install -r [apk파일 이름] 명령어를 통해서 연결 된 디바이스에 앱을 설치할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존 설치된 패키지의 versionCode가 동일하거나 versionName이 동일한 경우 발생한다는 얘기가 있어서 버전을 모두 올린 후에 시도 &amp;rarr; 해결 안 됨&lt;/li&gt;
&lt;li&gt;Google Console에서 기존 배포된 APK(배포 APK와 원본 APK 중 배포 APK 선택)를 다운로드 받아서 먼저 설치 후 새로운 APK 설치 시도 &amp;rarr; 해결 안 됨&lt;/li&gt;
&lt;li&gt;Google Console에서 기존 배포된 원본 APK를 다운로드 받아서 설치 후 새로운 APK 설치 시도 &amp;rarr; 해결&lt;/li&gt;
&lt;/ol&gt;
&lt;pre id=&quot;code_1656478099801&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Performing Streamed Install
adb: failed to install test.apk: Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package [co.kr.test] signatures do not match the previously installed version; ignoring!]&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;i&gt;[터미널에서 출력되는 메시지]&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;원인&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원본 APK &amp;rarr; 새로운 APK로는 업데이트가 되는데, 배포 APK &amp;rarr; 새로운 APK로는 안되는 것을 봤을 때 배포 APK는 구글의 별도 추가 서명이 들어가있는 파일로 보인다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;해결&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구글 플레이스토어를 통해 이미 설치된 앱은 추가 APK파일로 바로 업데이트가 어렵다는 것을 확인했다. 이런 경우는 구글 플레이스토어를 통해서 업데이트가 불가피할 것으로 보인다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>안드로이드</category>
      <author>하악생</author>
      <guid isPermaLink="true">https://evst.tistory.com/47</guid>
      <comments>https://evst.tistory.com/47#entry47comment</comments>
      <pubDate>Wed, 29 Jun 2022 13:24:05 +0900</pubDate>
    </item>
    <item>
      <title>XCode Unable to prepare &amp;lt;device_name&amp;gt; for development</title>
      <link>https://evst.tistory.com/46</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;Please check the connection to the device, and review all errors in the Devices and Simulators window.&quot;&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;XCode가 &lt;span&gt;iOS 버전을 지원하지 않아서 발생되는 메시지.&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;span&gt;맥 App store에서 XCode 업데이트 후 재빌드!&amp;nbsp;&lt;/span&gt;&lt;/p&gt;</description>
      <category>IOS</category>
      <author>하악생</author>
      <guid isPermaLink="true">https://evst.tistory.com/46</guid>
      <comments>https://evst.tistory.com/46#entry46comment</comments>
      <pubDate>Fri, 4 Mar 2022 14:35:56 +0900</pubDate>
    </item>
    <item>
      <title>[React]특정 디렉토리 기준으로 import 경로 설정하기</title>
      <link>https://evst.tistory.com/45</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;루트에 jsconfig.json 파일 생성&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1642346646605&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
    &quot;compilerOptions&quot;: {
        &quot;baseUrl&quot;: &quot;src&quot;
    },
    &quot;include&quot;: [&quot;src&quot;]
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같이 설정 후 서버 다시 빌드 하면 ( npm start )&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1642346683961&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import AppRouter from '../components/Router';&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에서&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1642346695341&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import AppRouter from 'components/Router';&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;src 디렉토리를 기준으로 절대경로로 표시할 수 있게 됨.&lt;/p&gt;</description>
      <category>RN</category>
      <author>하악생</author>
      <guid isPermaLink="true">https://evst.tistory.com/45</guid>
      <comments>https://evst.tistory.com/45#entry45comment</comments>
      <pubDate>Mon, 17 Jan 2022 00:25:27 +0900</pubDate>
    </item>
    <item>
      <title>iOS 14 - 이미지 렌더링이 되지 않는 증상</title>
      <link>https://evst.tistory.com/44</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/facebook/react-native/issues/29279#issuecomment-657201709&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/facebook/react-native/issues/29279#issuecomment-657201709&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1632903452456&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;Image cannot show image in iOS 14 &amp;middot; Issue #29279 &amp;middot; facebook/react-native&quot; data-og-description=&quot;Image cannot show image in iOS 14, but can show location, like: &amp;lt;Image source={ require('./images/add_scan_images.png') } /&amp;gt; Environment: Xcode Version 12.0 beta (12A6159) Simulator: ...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/facebook/react-native/issues/29279#issuecomment-657201709&quot; data-og-url=&quot;https://github.com/facebook/react-native/issues/29279&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bImaV5/hyLNfoSGNT/kP6BspAq94MheG8T7YMJfk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/facebook/react-native/issues/29279#issuecomment-657201709&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/facebook/react-native/issues/29279#issuecomment-657201709&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bImaV5/hyLNfoSGNT/kP6BspAq94MheG8T7YMJfk/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;Image cannot show image in iOS 14 &amp;middot; Issue #29279 &amp;middot; facebook/react-native&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Image cannot show image in iOS 14, but can show location, like: &lt;/p&gt;
&lt;img /&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt; Environment: Xcode Version 12.0 beta (12A6159) Simulator: ...&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>RN</category>
      <author>하악생</author>
      <guid isPermaLink="true">https://evst.tistory.com/44</guid>
      <comments>https://evst.tistory.com/44#entry44comment</comments>
      <pubDate>Wed, 29 Sep 2021 17:19:59 +0900</pubDate>
    </item>
    <item>
      <title>[React Native] deep link 설정 및 핸들링</title>
      <link>https://evst.tistory.com/43</link>
      <description>&lt;p&gt;설정 방법 (url 스키마는 &quot;testmyapp&quot;이라는 이름을 예시로 하겠음)&lt;/p&gt;
&lt;p&gt;ios&lt;/p&gt;
&lt;p&gt;1. AppDelegate.m에 다음 내용을 추가&lt;/p&gt;
&lt;pre id=&quot;code_1611723814216&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#import &amp;lt;React/RCTLinkingManager.h&amp;gt; // 파일 상단에 추가

...

// Add this above `@end`:
- (BOOL)application:(UIApplication *)application
   openURL:(NSURL *)url
   options:(NSDictionary&amp;lt;UIApplicationOpenURLOptionsKey,id&amp;gt; *)options
{
  return [RCTLinkingManager application:application openURL:url options:options];
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2. 프로젝트 - targets - 타겟 프로젝트 - info탭 - URL Types에 + 버튼을 누른 후 Identifier와 URL Schemes란에 허용할 이름 입력 &amp;amp; 빌드&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oiMKF/btqUWtzV1jS/W2UkUUSnKm3ylCoSTNPsq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oiMKF/btqUWtzV1jS/W2UkUUSnKm3ylCoSTNPsq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oiMKF/btqUWtzV1jS/W2UkUUSnKm3ylCoSTNPsq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoiMKF%2FbtqUWtzV1jS%2FW2UkUUSnKm3ylCoSTNPsq1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;android - AndroidManifest.xml 파일에 다음 내용을 추가 &amp;amp; 빌드&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611724008225&quot; class=&quot;html xml&quot; style=&quot;display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;activity 
  ... &amp;gt;
	// activity 블록 안에 추가 
  &amp;lt;intent-filter&amp;gt;
    &amp;lt;action android:name=&quot;android.intent.action.VIEW&quot; /&amp;gt;
    &amp;lt;category android:name=&quot;android.intent.category.DEFAULT&quot; /&amp;gt;
    &amp;lt;category android:name=&quot;android.intent.category.BROWSABLE&quot; /&amp;gt;
    &amp;lt;data android:scheme=&quot;testmyapp&quot; /&amp;gt;
  &amp;lt;/intent-filter&amp;gt;  
&amp;lt;/activity&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;reacxt-native - 다음 내용의 TestScreen.js 파일 추가&lt;/p&gt;
&lt;pre id=&quot;code_1611713927281&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import React, {useEffect} from 'react';
import {Linking, Alert} from 'react-native';

const TestScreen = (props) =&amp;gt; {

	useEffect(() =&amp;gt; {
     	Linking.getInitialURL()			// 최초 실행 시에 Universal link 또는 URL scheme요청이 있었을 때 여기서 찾을 수 있음 
     		.then(value =&amp;gt; {
       			Alert.alert('getInitialURL', value);
     	})
        
         Linking.addEventListener('url', (e) =&amp;gt; {		// 앱이 실행되어있는 상태에서 요청이 왔을 때 처리하는 이벤트 등록
      		const route = e.url.replace(/.*?:\/\//g, '');
      		Alert.alert('add e.url', e.url);
    	});

    	return () =&amp;gt; {	
      			Linking.removeEventListener('url', (e) =&amp;gt; {		// 이벤트 해제
          		Alert.alert('remove e.url', e.url);
      		});
    	};
    })
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;에뮬레이터 상에서 테스트!&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;android: $&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;npx uri-scheme open testmyapp://paremeter=239193 --android&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;ios: $&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;npx uri-scheme open testmyapp://paremeter=239193 --ios&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;ezgif.com-gif-maker.gif&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;785&quot; width=&quot;328&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lCUlh/btqUTl3vuCu/I2XP42xU5Gck4dZVkxFQr0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lCUlh/btqUTl3vuCu/I2XP42xU5Gck4dZVkxFQr0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lCUlh/btqUTl3vuCu/I2XP42xU5Gck4dZVkxFQr0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/lCUlh/btqUTl3vuCu/I2XP42xU5Gck4dZVkxFQr0/img.gif&quot; data-filename=&quot;ezgif.com-gif-maker.gif&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;785&quot; width=&quot;328&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>RN</category>
      <author>하악생</author>
      <guid isPermaLink="true">https://evst.tistory.com/43</guid>
      <comments>https://evst.tistory.com/43#entry43comment</comments>
      <pubDate>Wed, 27 Jan 2021 11:18:53 +0900</pubDate>
    </item>
  </channel>
</rss>