<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4658374557354851090</id><updated>2026-01-23T00:31:22.732-08:00</updated><category term="안드로이드"/><category term="아이폰"/><title type='text'>Mobile App programming</title><subtitle type='html'>안드로이드 &amp;amp; 아이폰 Application 개발</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>114</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-7623647574043167618</id><published>2025-05-26T23:01:00.000-07:00</published><updated>2025-05-26T23:01:45.629-07:00</updated><title type='text'>서버 모니터링시 유용한 Linux 명령어</title><content type='html'>&lt;p&gt;&amp;nbsp;ps aux --sort=-%mem | head -n 10&lt;/p&gt;&lt;p&gt;메모리 사용량 높은 순서대로 돌고 있는 프로세스 보여주기 (상위 10개만 보여주기)&lt;/p&gt;&lt;p&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;cat var/log/syslog&lt;/code&gt; (Debian/Ubuntu) 또는 &lt;code&gt;/var/log/messages&lt;/code&gt;&lt;/p&gt;&lt;p&gt;시스템 로그 보여주기&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;systemctl list-units --&lt;span class=&quot;hljs-built_in&quot;&gt;type&lt;/span&gt;=service --state=running&lt;/p&gt;&lt;p&gt;실행중인 모든 서비스 보기&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;ps aux | grep streamli&lt;/p&gt;&lt;p&gt;streamlit(서비스 명) 상태 보기&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;free -m&lt;/p&gt;&lt;p&gt;메모리 사용 용량&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;df -h&lt;/p&gt;&lt;p&gt;디스크 사용 용량&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;top, htop&lt;/p&gt;&lt;p&gt;시스템 프로세스 및 리소스 사용량&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/7623647574043167618/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2025/05/linux.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/7623647574043167618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/7623647574043167618'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2025/05/linux.html' title='서버 모니터링시 유용한 Linux 명령어'/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-4978540347893210580</id><published>2024-07-24T18:39:00.000-07:00</published><updated>2024-07-24T18:39:58.238-07:00</updated><title type='text'>console.log 에서는 같은 값이 찍히는데, 값이 다른 경우(fs로 파일이나 폴더 이름 가져올때 발생)</title><content type='html'>&lt;p&gt;&amp;nbsp;fs 라이브러리로 외부의 파일이나 폴더 이름 등을 read 할때, 유니코드 encoding이 달라서, 콘솔에 찍히는 값은 동일한데, 다르게 인식하는 경우가 있음. (매우 당황스러움)&lt;/p&gt;&lt;p&gt;이런 경우는 nomalize 함수를 이용해서 유니코드 인코딩 값을 통일 시켜줌.&lt;/p&gt;&lt;p&gt;normalize(&#39;NFC&#39;) 해주면 유니코드 인코딩 값을 정규화 해줌.&lt;/p&gt;&lt;p&gt;names_to_match 값이 외부 파일 이름을 가져온 배열인데, 아마도 유니코드가 다른 방식으로 인코딩이 되었나 보다.&lt;/p&gt;&lt;div style=&quot;background-color: #212121; color: #eeffff; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; line-height: 18px; white-space: pre;&quot;&gt;&lt;span style=&quot;color: #f07178;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;let&lt;/span&gt;&lt;span style=&quot;color: #f07178;&quot;&gt; &lt;/span&gt;resultUpdate&lt;span style=&quot;color: #f07178;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #89ddff;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #f07178;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #89ddff; font-style: italic;&quot;&gt;await&lt;/span&gt;&lt;span style=&quot;color: #f07178;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #89ddff;&quot;&gt;this.&lt;/span&gt;users&lt;span style=&quot;color: #89ddff;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;findOne&lt;/span&gt;&lt;span style=&quot;color: #f07178;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #89ddff;&quot;&gt;{&lt;/span&gt;where&lt;span style=&quot;color: #89ddff;&quot;&gt;:{&lt;/span&gt;name&lt;span style=&quot;color: #89ddff;&quot;&gt;:&lt;/span&gt;names_to_match&lt;span style=&quot;color: #f07178;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f07178;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #89ddff;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;normalize&lt;/span&gt;&lt;span style=&quot;color: #f07178;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #89ddff;&quot;&gt;&#39;&lt;/span&gt;&lt;span style=&quot;color: #c3e88d;&quot;&gt;NFC&lt;/span&gt;&lt;span style=&quot;color: #89ddff;&quot;&gt;&#39;&lt;/span&gt;&lt;span style=&quot;color: #f07178;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #89ddff;&quot;&gt;}}&lt;/span&gt;&lt;span style=&quot;color: #f07178;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #89ddff;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background-color: #212121; color: #eeffff; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; line-height: 18px; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/4978540347893210580/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2024/07/consolelog-fs.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/4978540347893210580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/4978540347893210580'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2024/07/consolelog-fs.html' title='console.log 에서는 같은 값이 찍히는데, 값이 다른 경우(fs로 파일이나 폴더 이름 가져올때 발생)'/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-2989562382319153873</id><published>2024-01-17T12:01:00.000-08:00</published><updated>2024-02-18T21:04:07.184-08:00</updated><title type='text'>postgresql 에서 id 시작 값 재 설정 </title><content type='html'>&lt;p&gt;&amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;hljs-keyword&quot; color=&quot;var(--highlight-keyword)&quot; style=&quot;--theme-background-attachment: auto; --theme-background-color: var(--white); --theme-background-position: top left; --theme-background-repeat: repeat; --theme-background-size: auto; --theme-base-primary-color-h: 27; --theme-base-primary-color-l: 48%; --theme-base-primary-color-s: 89%; --theme-body-font-color: var(--black-600); --theme-body-font-family: var(--ff-sans); --theme-button-active-background-color: initial; --theme-button-color: initial; --theme-button-hover-background-color: initial; --theme-button-hover-color: initial; --theme-button-outlined-border-color: initial; --theme-button-outlined-selected-border-color: initial; --theme-button-primary-active-background-color: initial; --theme-button-primary-active-color: initial; --theme-button-primary-background-color: initial; --theme-button-primary-color: initial; --theme-button-primary-hover-background-color: initial; --theme-button-primary-hover-color: initial; --theme-button-primary-selected-background-color: initial; --theme-button-primary-selected-color: initial; --theme-button-selected-background-color: initial; --theme-button-selected-color: initial; --theme-content-background-color: var(--white); --theme-content-border-color: var(--black-225); --theme-footer-background-border-top: 0; --theme-footer-background-color: hsl(210,8%,5%); --theme-footer-background-position: top left; --theme-footer-background-repeat: no-repeat; --theme-footer-background-size: auto; --theme-footer-divider-color: var(--black-500); --theme-footer-link-color-hover: var(--black-200); --theme-footer-link-color: var(--black-300); --theme-footer-padding-bottom: 0; --theme-footer-padding-top: 0; --theme-footer-text-color: var(--black-300); --theme-footer-title-color: var(--black-250); --theme-header-background-border-bottom: 0; --theme-header-background-color: var(--theme-primary); --theme-header-background-position: center left; --theme-header-background-repeat: repeat; --theme-header-background-size: auto; --theme-header-foreground-color: transparent; --theme-header-foreground-position: bottom right; --theme-header-foreground-repeat: no-repeat; --theme-header-foreground-size: auto; --theme-header-link-color: var(--theme-primary); --theme-header-sponsored-color: hsla(0,0%,100%,0.4); --theme-link-color-hover: initial; --theme-link-color-visited: initial; --theme-link-color: initial; --theme-post-body-font-family: var(--ff-sans); --theme-post-owner-background-color: var(--theme-secondary-100); --theme-post-owner-new-background-color: var(--theme-secondary-200); --theme-post-title-color-hover: var(--theme-link-color-hover); --theme-post-title-color-visited: var(--theme-link-color-visited); --theme-post-title-color: var(--theme-link-color); --theme-post-title-font-family: var(--ff-sans); --theme-primary-custom-100: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .9))); --theme-primary-custom-200: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .75))); --theme-primary-custom-300: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .5))); --theme-primary-custom-400: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), var(--theme-base-primary-color-l)); --theme-primary-custom-500: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.3))); --theme-primary-custom-600: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.6))); --theme-primary-custom: var(--theme-primary-custom-400); --theme-tag-background-color: initial; --theme-tag-border-color: initial; --theme-tag-color: initial; --theme-tag-hover-background-color: initial; --theme-tag-hover-border-color: initial; --theme-tag-hover-color: initial; --theme-tag-required-background-color: var(--theme-secondary-500); --theme-tag-required-border-color: transparent; --theme-tag-required-color: var(--white); --theme-tag-required-hover-background-color: var(--theme-secondary-400); --theme-tag-required-hover-border-color: transparent; --theme-tag-required-hover-color: var(--white); --theme-topbar-bottom-border: 1px solid var(--black-225); border: 0px; box-sizing: inherit; font-family: inherit; font-feature-settings: inherit; font-kerning: inherit; font-optical-sizing: inherit; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-variation-settings: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;color: #0c0d0e; font-family: inherit; font-size: var(--_pr-code-fs); font-style: inherit; font-variant-caps: inherit; font-variant-ligatures: inherit; font-weight: inherit; white-space: inherit;&quot;&gt; setval(&lt;/span&gt;&lt;span class=&quot;hljs-string&quot; color=&quot;var(--highlight-variable)&quot; style=&quot;--theme-background-attachment: auto; --theme-background-color: var(--white); --theme-background-position: top left; --theme-background-repeat: repeat; --theme-background-size: auto; --theme-base-primary-color-h: 27; --theme-base-primary-color-l: 48%; --theme-base-primary-color-s: 89%; --theme-body-font-color: var(--black-600); --theme-body-font-family: var(--ff-sans); --theme-button-active-background-color: initial; --theme-button-color: initial; --theme-button-hover-background-color: initial; --theme-button-hover-color: initial; --theme-button-outlined-border-color: initial; --theme-button-outlined-selected-border-color: initial; --theme-button-primary-active-background-color: initial; --theme-button-primary-active-color: initial; --theme-button-primary-background-color: initial; --theme-button-primary-color: initial; --theme-button-primary-hover-background-color: initial; --theme-button-primary-hover-color: initial; --theme-button-primary-selected-background-color: initial; --theme-button-primary-selected-color: initial; --theme-button-selected-background-color: initial; --theme-button-selected-color: initial; --theme-content-background-color: var(--white); --theme-content-border-color: var(--black-225); --theme-footer-background-border-top: 0; --theme-footer-background-color: hsl(210,8%,5%); --theme-footer-background-position: top left; --theme-footer-background-repeat: no-repeat; --theme-footer-background-size: auto; --theme-footer-divider-color: var(--black-500); --theme-footer-link-color-hover: var(--black-200); --theme-footer-link-color: var(--black-300); --theme-footer-padding-bottom: 0; --theme-footer-padding-top: 0; --theme-footer-text-color: var(--black-300); --theme-footer-title-color: var(--black-250); --theme-header-background-border-bottom: 0; --theme-header-background-color: var(--theme-primary); --theme-header-background-position: center left; --theme-header-background-repeat: repeat; --theme-header-background-size: auto; --theme-header-foreground-color: transparent; --theme-header-foreground-position: bottom right; --theme-header-foreground-repeat: no-repeat; --theme-header-foreground-size: auto; --theme-header-link-color: var(--theme-primary); --theme-header-sponsored-color: hsla(0,0%,100%,0.4); --theme-link-color-hover: initial; --theme-link-color-visited: initial; --theme-link-color: initial; --theme-post-body-font-family: var(--ff-sans); --theme-post-owner-background-color: var(--theme-secondary-100); --theme-post-owner-new-background-color: var(--theme-secondary-200); --theme-post-title-color-hover: var(--theme-link-color-hover); --theme-post-title-color-visited: var(--theme-link-color-visited); --theme-post-title-color: var(--theme-link-color); --theme-post-title-font-family: var(--ff-sans); --theme-primary-custom-100: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .9))); --theme-primary-custom-200: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .75))); --theme-primary-custom-300: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .5))); --theme-primary-custom-400: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), var(--theme-base-primary-color-l)); --theme-primary-custom-500: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.3))); --theme-primary-custom-600: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.6))); --theme-primary-custom: var(--theme-primary-custom-400); --theme-tag-background-color: initial; --theme-tag-border-color: initial; --theme-tag-color: initial; --theme-tag-hover-background-color: initial; --theme-tag-hover-border-color: initial; --theme-tag-hover-color: initial; --theme-tag-required-background-color: var(--theme-secondary-500); --theme-tag-required-border-color: transparent; --theme-tag-required-color: var(--white); --theme-tag-required-hover-background-color: var(--theme-secondary-400); --theme-tag-required-hover-border-color: transparent; --theme-tag-required-hover-color: var(--white); --theme-topbar-bottom-border: 1px solid var(--black-225); border: 0px; box-sizing: inherit; font-family: inherit; font-feature-settings: inherit; font-kerning: inherit; font-optical-sizing: inherit; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-variation-settings: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;&quot;&gt;&#39;user_id_seq&#39;&lt;/span&gt;&lt;span style=&quot;color: #0c0d0e; font-family: inherit; font-size: var(--_pr-code-fs); font-style: inherit; font-variant-caps: inherit; font-variant-ligatures: inherit; font-weight: inherit; white-space: inherit;&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;hljs-number&quot; color=&quot;var(--highlight-namespace)&quot; style=&quot;--theme-background-attachment: auto; --theme-background-color: var(--white); --theme-background-position: top left; --theme-background-repeat: repeat; --theme-background-size: auto; --theme-base-primary-color-h: 27; --theme-base-primary-color-l: 48%; --theme-base-primary-color-s: 89%; --theme-body-font-color: var(--black-600); --theme-body-font-family: var(--ff-sans); --theme-button-active-background-color: initial; --theme-button-color: initial; --theme-button-hover-background-color: initial; --theme-button-hover-color: initial; --theme-button-outlined-border-color: initial; --theme-button-outlined-selected-border-color: initial; --theme-button-primary-active-background-color: initial; --theme-button-primary-active-color: initial; --theme-button-primary-background-color: initial; --theme-button-primary-color: initial; --theme-button-primary-hover-background-color: initial; --theme-button-primary-hover-color: initial; --theme-button-primary-selected-background-color: initial; --theme-button-primary-selected-color: initial; --theme-button-selected-background-color: initial; --theme-button-selected-color: initial; --theme-content-background-color: var(--white); --theme-content-border-color: var(--black-225); --theme-footer-background-border-top: 0; --theme-footer-background-color: hsl(210,8%,5%); --theme-footer-background-position: top left; --theme-footer-background-repeat: no-repeat; --theme-footer-background-size: auto; --theme-footer-divider-color: var(--black-500); --theme-footer-link-color-hover: var(--black-200); --theme-footer-link-color: var(--black-300); --theme-footer-padding-bottom: 0; --theme-footer-padding-top: 0; --theme-footer-text-color: var(--black-300); --theme-footer-title-color: var(--black-250); --theme-header-background-border-bottom: 0; --theme-header-background-color: var(--theme-primary); --theme-header-background-position: center left; --theme-header-background-repeat: repeat; --theme-header-background-size: auto; --theme-header-foreground-color: transparent; --theme-header-foreground-position: bottom right; --theme-header-foreground-repeat: no-repeat; --theme-header-foreground-size: auto; --theme-header-link-color: var(--theme-primary); --theme-header-sponsored-color: hsla(0,0%,100%,0.4); --theme-link-color-hover: initial; --theme-link-color-visited: initial; --theme-link-color: initial; --theme-post-body-font-family: var(--ff-sans); --theme-post-owner-background-color: var(--theme-secondary-100); --theme-post-owner-new-background-color: var(--theme-secondary-200); --theme-post-title-color-hover: var(--theme-link-color-hover); --theme-post-title-color-visited: var(--theme-link-color-visited); --theme-post-title-color: var(--theme-link-color); --theme-post-title-font-family: var(--ff-sans); --theme-primary-custom-100: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .9))); --theme-primary-custom-200: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .75))); --theme-primary-custom-300: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .5))); --theme-primary-custom-400: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), var(--theme-base-primary-color-l)); --theme-primary-custom-500: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.3))); --theme-primary-custom-600: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.6))); --theme-primary-custom: var(--theme-primary-custom-400); --theme-tag-background-color: initial; --theme-tag-border-color: initial; --theme-tag-color: initial; --theme-tag-hover-background-color: initial; --theme-tag-hover-border-color: initial; --theme-tag-hover-color: initial; --theme-tag-required-background-color: var(--theme-secondary-500); --theme-tag-required-border-color: transparent; --theme-tag-required-color: var(--white); --theme-tag-required-hover-background-color: var(--theme-secondary-400); --theme-tag-required-hover-border-color: transparent; --theme-tag-required-hover-color: var(--white); --theme-topbar-bottom-border: 1px solid var(--black-225); border: 0px; box-sizing: inherit; font-family: inherit; font-feature-settings: inherit; font-kerning: inherit; font-optical-sizing: inherit; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-variation-settings: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;&quot;&gt;21&lt;/span&gt;&lt;span style=&quot;color: #0c0d0e; font-family: inherit; font-size: var(--_pr-code-fs); font-style: inherit; font-variant-caps: inherit; font-variant-ligatures: inherit; font-weight: inherit; white-space: inherit;&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;hljs-literal&quot; color=&quot;var(--highlight-literal)&quot; style=&quot;--theme-background-attachment: auto; --theme-background-color: var(--white); --theme-background-position: top left; --theme-background-repeat: repeat; --theme-background-size: auto; --theme-base-primary-color-h: 27; --theme-base-primary-color-l: 48%; --theme-base-primary-color-s: 89%; --theme-body-font-color: var(--black-600); --theme-body-font-family: var(--ff-sans); --theme-button-active-background-color: initial; --theme-button-color: initial; --theme-button-hover-background-color: initial; --theme-button-hover-color: initial; --theme-button-outlined-border-color: initial; --theme-button-outlined-selected-border-color: initial; --theme-button-primary-active-background-color: initial; --theme-button-primary-active-color: initial; --theme-button-primary-background-color: initial; --theme-button-primary-color: initial; --theme-button-primary-hover-background-color: initial; --theme-button-primary-hover-color: initial; --theme-button-primary-selected-background-color: initial; --theme-button-primary-selected-color: initial; --theme-button-selected-background-color: initial; --theme-button-selected-color: initial; --theme-content-background-color: var(--white); --theme-content-border-color: var(--black-225); --theme-footer-background-border-top: 0; --theme-footer-background-color: hsl(210,8%,5%); --theme-footer-background-position: top left; --theme-footer-background-repeat: no-repeat; --theme-footer-background-size: auto; --theme-footer-divider-color: var(--black-500); --theme-footer-link-color-hover: var(--black-200); --theme-footer-link-color: var(--black-300); --theme-footer-padding-bottom: 0; --theme-footer-padding-top: 0; --theme-footer-text-color: var(--black-300); --theme-footer-title-color: var(--black-250); --theme-header-background-border-bottom: 0; --theme-header-background-color: var(--theme-primary); --theme-header-background-position: center left; --theme-header-background-repeat: repeat; --theme-header-background-size: auto; --theme-header-foreground-color: transparent; --theme-header-foreground-position: bottom right; --theme-header-foreground-repeat: no-repeat; --theme-header-foreground-size: auto; --theme-header-link-color: var(--theme-primary); --theme-header-sponsored-color: hsla(0,0%,100%,0.4); --theme-link-color-hover: initial; --theme-link-color-visited: initial; --theme-link-color: initial; --theme-post-body-font-family: var(--ff-sans); --theme-post-owner-background-color: var(--theme-secondary-100); --theme-post-owner-new-background-color: var(--theme-secondary-200); --theme-post-title-color-hover: var(--theme-link-color-hover); --theme-post-title-color-visited: var(--theme-link-color-visited); --theme-post-title-color: var(--theme-link-color); --theme-post-title-font-family: var(--ff-sans); --theme-primary-custom-100: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .9))); --theme-primary-custom-200: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .75))); --theme-primary-custom-300: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .5))); --theme-primary-custom-400: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), var(--theme-base-primary-color-l)); --theme-primary-custom-500: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.3))); --theme-primary-custom-600: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.6))); --theme-primary-custom: var(--theme-primary-custom-400); --theme-tag-background-color: initial; --theme-tag-border-color: initial; --theme-tag-color: initial; --theme-tag-hover-background-color: initial; --theme-tag-hover-border-color: initial; --theme-tag-hover-color: initial; --theme-tag-required-background-color: var(--theme-secondary-500); --theme-tag-required-border-color: transparent; --theme-tag-required-color: var(--white); --theme-tag-required-hover-background-color: var(--theme-secondary-400); --theme-tag-required-hover-border-color: transparent; --theme-tag-required-hover-color: var(--white); --theme-topbar-bottom-border: 1px solid var(--black-225); border: 0px; box-sizing: inherit; font-family: inherit; font-feature-settings: inherit; font-kerning: inherit; font-optical-sizing: inherit; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-variation-settings: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #0c0d0e; font-family: inherit; font-size: var(--_pr-code-fs); font-style: inherit; font-variant-caps: inherit; font-variant-ligatures: inherit; font-weight: inherit; white-space: inherit;&quot;&gt;);  &lt;/span&gt;&lt;span class=&quot;hljs-comment&quot; color=&quot;var(--highlight-comment)&quot; style=&quot;--theme-background-attachment: auto; --theme-background-color: var(--white); --theme-background-position: top left; --theme-background-repeat: repeat; --theme-background-size: auto; --theme-base-primary-color-h: 27; --theme-base-primary-color-l: 48%; --theme-base-primary-color-s: 89%; --theme-body-font-color: var(--black-600); --theme-body-font-family: var(--ff-sans); --theme-button-active-background-color: initial; --theme-button-color: initial; --theme-button-hover-background-color: initial; --theme-button-hover-color: initial; --theme-button-outlined-border-color: initial; --theme-button-outlined-selected-border-color: initial; --theme-button-primary-active-background-color: initial; --theme-button-primary-active-color: initial; --theme-button-primary-background-color: initial; --theme-button-primary-color: initial; --theme-button-primary-hover-background-color: initial; --theme-button-primary-hover-color: initial; --theme-button-primary-selected-background-color: initial; --theme-button-primary-selected-color: initial; --theme-button-selected-background-color: initial; --theme-button-selected-color: initial; --theme-content-background-color: var(--white); --theme-content-border-color: var(--black-225); --theme-footer-background-border-top: 0; --theme-footer-background-color: hsl(210,8%,5%); --theme-footer-background-position: top left; --theme-footer-background-repeat: no-repeat; --theme-footer-background-size: auto; --theme-footer-divider-color: var(--black-500); --theme-footer-link-color-hover: var(--black-200); --theme-footer-link-color: var(--black-300); --theme-footer-padding-bottom: 0; --theme-footer-padding-top: 0; --theme-footer-text-color: var(--black-300); --theme-footer-title-color: var(--black-250); --theme-header-background-border-bottom: 0; --theme-header-background-color: var(--theme-primary); --theme-header-background-position: center left; --theme-header-background-repeat: repeat; --theme-header-background-size: auto; --theme-header-foreground-color: transparent; --theme-header-foreground-position: bottom right; --theme-header-foreground-repeat: no-repeat; --theme-header-foreground-size: auto; --theme-header-link-color: var(--theme-primary); --theme-header-sponsored-color: hsla(0,0%,100%,0.4); --theme-link-color-hover: initial; --theme-link-color-visited: initial; --theme-link-color: initial; --theme-post-body-font-family: var(--ff-sans); --theme-post-owner-background-color: var(--theme-secondary-100); --theme-post-owner-new-background-color: var(--theme-secondary-200); --theme-post-title-color-hover: var(--theme-link-color-hover); --theme-post-title-color-visited: var(--theme-link-color-visited); --theme-post-title-color: var(--theme-link-color); --theme-post-title-font-family: var(--ff-sans); --theme-primary-custom-100: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .9))); --theme-primary-custom-200: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .75))); --theme-primary-custom-300: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + ((100% - var(--theme-base-primary-color-l)) * .5))); --theme-primary-custom-400: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), var(--theme-base-primary-color-l)); --theme-primary-custom-500: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.3))); --theme-primary-custom-600: hsl(var(--theme-base-primary-color-h), var(--theme-base-primary-color-s), calc(var(--theme-base-primary-color-l) + (var(--theme-base-primary-color-l) * -.6))); --theme-primary-custom: var(--theme-primary-custom-400); --theme-tag-background-color: initial; --theme-tag-border-color: initial; --theme-tag-color: initial; --theme-tag-hover-background-color: initial; --theme-tag-hover-border-color: initial; --theme-tag-hover-color: initial; --theme-tag-required-background-color: var(--theme-secondary-500); --theme-tag-required-border-color: transparent; --theme-tag-required-color: var(--white); --theme-tag-required-hover-background-color: var(--theme-secondary-400); --theme-tag-required-hover-border-color: transparent; --theme-tag-required-hover-color: var(--white); --theme-topbar-bottom-border: 1px solid var(--black-225); border: 0px; box-sizing: inherit; font-family: inherit; font-feature-settings: inherit; font-kerning: inherit; font-optical-sizing: inherit; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-variation-settings: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;&quot;&gt;-- next value will be 22&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjf1q8iYfSuD1pz13diunpu025TDlfbtOlB3vzX6RtZRXx8jIj74K61CwuXRJcIwneSirmrYiECtERFwJSSfyGXRzwj5VgR59tyFyegkYztv7y38FsHX5BEqhYDuPXkBK9IqVC_2AaOSQAZhguO_Y303nLEWiPN3gVL7Yhvs5Qb2rCh3l5ulWCJTmLS6kk&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1224&quot; data-original-width=&quot;959&quot; height=&quot;908&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjf1q8iYfSuD1pz13diunpu025TDlfbtOlB3vzX6RtZRXx8jIj74K61CwuXRJcIwneSirmrYiECtERFwJSSfyGXRzwj5VgR59tyFyegkYztv7y38FsHX5BEqhYDuPXkBK9IqVC_2AaOSQAZhguO_Y303nLEWiPN3gVL7Yhvs5Qb2rCh3l5ulWCJTmLS6kk=w653-h908&quot; width=&quot;653&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/2989562382319153873/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2024/01/postgresql-id.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/2989562382319153873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/2989562382319153873'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2024/01/postgresql-id.html' title='postgresql 에서 id 시작 값 재 설정 '/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjf1q8iYfSuD1pz13diunpu025TDlfbtOlB3vzX6RtZRXx8jIj74K61CwuXRJcIwneSirmrYiECtERFwJSSfyGXRzwj5VgR59tyFyegkYztv7y38FsHX5BEqhYDuPXkBK9IqVC_2AaOSQAZhguO_Y303nLEWiPN3gVL7Yhvs5Qb2rCh3l5ulWCJTmLS6kk=s72-w653-h908-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-8685428342046629388</id><published>2023-10-11T00:41:00.006-07:00</published><updated>2023-10-11T00:41:58.776-07:00</updated><title type='text'>Dbeaver Data Export, import 할때, 필드명 대문자 인식 못하는 문제</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;설정에서 바꿔줘야 한다.&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Dbeaver &amp;gt; Setting &amp;gt; 연결 &amp;gt; 메타데이터 ---&amp;gt; Use case-sensitive names in DDL statements&amp;nbsp; 체크!&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkEqd8iX_iFZwPPhk8HiN6_s54J7q-bTQbMvGMdAC2l3sBSFTBGupNCCG6n90_P4wP3Fjs1F7t-8Sqb1ID3e9_wxQl9OmGh6nNY9fHoxdzuVSyj40P9qm1rxx-UL7OAeBDty9Tx9IVs2tHNzZ3Op1jb80qcqQIOIKGHTzNEMVPaKwWWH98_2hwWCh0lZ8/s2026/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202023-10-11%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%204.37.40.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1404&quot; data-original-width=&quot;2026&quot; height=&quot;437&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkEqd8iX_iFZwPPhk8HiN6_s54J7q-bTQbMvGMdAC2l3sBSFTBGupNCCG6n90_P4wP3Fjs1F7t-8Sqb1ID3e9_wxQl9OmGh6nNY9fHoxdzuVSyj40P9qm1rxx-UL7OAeBDty9Tx9IVs2tHNzZ3Op1jb80qcqQIOIKGHTzNEMVPaKwWWH98_2hwWCh0lZ8/w629-h437/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202023-10-11%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%204.37.40.png&quot; width=&quot;629&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/8685428342046629388/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2023/10/dbeaver-data-export-import.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/8685428342046629388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/8685428342046629388'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2023/10/dbeaver-data-export-import.html' title='Dbeaver Data Export, import 할때, 필드명 대문자 인식 못하는 문제'/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkEqd8iX_iFZwPPhk8HiN6_s54J7q-bTQbMvGMdAC2l3sBSFTBGupNCCG6n90_P4wP3Fjs1F7t-8Sqb1ID3e9_wxQl9OmGh6nNY9fHoxdzuVSyj40P9qm1rxx-UL7OAeBDty9Tx9IVs2tHNzZ3Op1jb80qcqQIOIKGHTzNEMVPaKwWWH98_2hwWCh0lZ8/s72-w629-h437-c/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202023-10-11%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%204.37.40.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-8873643817541952714</id><published>2020-11-17T23:39:00.000-08:00</published><updated>2020-11-17T23:39:01.264-08:00</updated><title type='text'>Android 프로덕션 빌드(플레이스토어 앱 출시) 는 왠만함 app bundle 로 해야됨..  구 방식의 apk로 하게 되면 오만가지의 이유로 안되는 경우가 많음  </title><content type='html'>&lt;p&gt;&amp;nbsp;Android 프로덕션 release 빌드(플레이스토어 앱 출시)는 왠만함 app bundle 로 해야됨... 구 방식의 apk로 하게 되면 오만가지의 이유로 안되는 경우가 많음&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;각종 경고와 오류가 뜸&amp;nbsp;&lt;/p&gt;&lt;p&gt;ex) 버전이 맞지 않습니다.(아무리 버젼 맞춰도 안됨) 등등&amp;nbsp;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/8873643817541952714/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2020/11/android-app-bundle-apk.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/8873643817541952714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/8873643817541952714'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2020/11/android-app-bundle-apk.html' title='Android 프로덕션 빌드(플레이스토어 앱 출시) 는 왠만함 app bundle 로 해야됨..  구 방식의 apk로 하게 되면 오만가지의 이유로 안되는 경우가 많음  '/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-9074567110469218744</id><published>2020-02-10T00:12:00.000-08:00</published><updated>2020-02-10T00:17:28.810-08:00</updated><title type='text'>매번 할때 마다 해매는 설정 (1) : VS(Visual Studio) Code Remote SSH 설정</title><content type='html'>1. VS Code 확장 플러그인은 Remote Development 이걸 그냥 받자. 생각하지 말구&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Remote Development config 파일 구성&lt;br /&gt;
&lt;br /&gt;
Host vcm&lt;br /&gt;
&amp;nbsp; HostName ec2-13-209-68-67.ap-northeast-2.compute.amazonaws.com&lt;br /&gt;
&amp;nbsp; User ubuntu&lt;br /&gt;
&amp;nbsp; IdentityFile C:\Users\memeo\.ssh\id_rsa&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
1) IdentityFile 에서 퍼블릭키(.pub)로 설정하는 실수 하지 말자.. 프라이빗 키로 당연 설정을 해야한다. 퍼블릭키는 서버에 넣지 않았는가!&lt;/div&gt;
&lt;div&gt;
2) HostName 에서 http:// 는 빼고 순수 호스트 이름만 넣자&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
3.&amp;nbsp; rsa 키 만들기&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;-&amp;gt; 헛갈릴것 없다.&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot; id=&quot;code_1561715170092&quot; style=&quot;background-color: #eeeeee; overflow-wrap: break-word; overflow: auto; padding: 20px; white-space: pre-wrap; word-break: break-all;&quot;&gt;&lt;code style=&quot;background-color: #e8e8e8; border-radius: 4px; border: 1px solid rgb(208, 209, 213); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif; line-height: 1.8571; margin: 0px; padding: 0px;&quot;&gt;ssh-keygen -t rsa -b 4096&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot; id=&quot;code_1561715170092&quot; style=&quot;background-color: #eeeeee; overflow-wrap: break-word; overflow: auto; padding: 20px; white-space: pre-wrap; word-break: break-all;&quot;&gt;&lt;code style=&quot;background-color: #e8e8e8; border-radius: 4px; border: 1px solid rgb(208, 209, 213); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif; line-height: 1.8571; margin: 0px; padding: 0px;&quot;&gt;위 명렁어를 콘솔에 치면, &lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot; id=&quot;code_1561715170092&quot; style=&quot;background-color: #eeeeee; overflow-wrap: break-word; overflow: auto; padding: 20px; white-space: pre-wrap; word-break: break-all;&quot;&gt;&lt;code style=&quot;background-color: #e8e8e8; border-radius: 4px; border: 1px solid rgb(208, 209, 213); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif; line-height: 1.8571; margin: 0px; padding: 0px;&quot;&gt;id_rsa(개인키), id_rsa.pub(공개키) 두개가 홈폴더(Users/memeoo/) 의 .ssh 폴더에 자동으로 생성된다.&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot; id=&quot;code_1561715170092&quot; style=&quot;background-color: #eeeeee; overflow-wrap: break-word; overflow: auto; padding: 20px; white-space: pre-wrap; word-break: break-all;&quot;&gt;&lt;code style=&quot;background-color: #e8e8e8; border-radius: 4px; border: 1px solid rgb(208, 209, 213); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif; line-height: 1.8571; margin: 0px; padding: 0px;&quot;&gt;해당 폴더(홈폴더/.ssh)로 가서 , cat id_rsa.pub 해서 공개키를 디스플레이 함.&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot; id=&quot;code_1561715170092&quot; style=&quot;background-color: #eeeeee; overflow-wrap: break-word; overflow: auto; padding: 20px; white-space: pre-wrap; word-break: break-all;&quot;&gt;&lt;code style=&quot;background-color: #e8e8e8; border-radius: 4px; border: 1px solid rgb(208, 209, 213); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif; line-height: 1.8571; margin: 0px; padding: 0px;&quot;&gt;그걸 그대로 복사함. &lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot; id=&quot;code_1561715170092&quot; style=&quot;background-color: #eeeeee; overflow-wrap: break-word; overflow: auto; padding: 20px; white-space: pre-wrap; word-break: break-all;&quot;&gt;&lt;code style=&quot;background-color: #e8e8e8; border-radius: 4px; border: 1px solid rgb(208, 209, 213); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif; line-height: 1.8571; margin: 0px; padding: 0px;&quot;&gt;서버에 가서 역시 홈폴더(~/)의 .ssh 폴더에 가면, authorized_keys 라는 파일이 있음.&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot; id=&quot;code_1561715170092&quot; style=&quot;background-color: #eeeeee; overflow-wrap: break-word; overflow: auto; padding: 20px; white-space: pre-wrap; word-break: break-all;&quot;&gt;&lt;code style=&quot;background-color: #e8e8e8; border-radius: 4px; border: 1px solid rgb(208, 209, 213); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif; line-height: 1.8571; margin: 0px; padding: 0px;&quot;&gt;이 파일을 sudo vim authorized_keys 로 열음.&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot; id=&quot;code_1561715170092&quot; style=&quot;background-color: #eeeeee; overflow-wrap: break-word; overflow: auto; padding: 20px; white-space: pre-wrap; word-break: break-all;&quot;&gt;&lt;code style=&quot;background-color: #e8e8e8; border-radius: 4px; border: 1px solid rgb(208, 209, 213); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif; line-height: 1.8571; margin: 0px; padding: 0px;&quot;&gt;연다음, 카피한 걸 맨끝에 붙여넣음.&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot; id=&quot;code_1561715170092&quot; style=&quot;background-color: #eeeeee; overflow-wrap: break-word; overflow: auto; padding: 20px; white-space: pre-wrap; word-break: break-all;&quot;&gt;&lt;code style=&quot;background-color: #e8e8e8; border-radius: 4px; border: 1px solid rgb(208, 209, 213); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif; line-height: 1.8571; margin: 0px; padding: 0px;&quot;&gt;헛갈리는 이유가 원리를 모르고 해서 그럼 :&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot; id=&quot;code_1561715170092&quot; style=&quot;background-color: #eeeeee; overflow-wrap: break-word; overflow: auto; padding: 20px; white-space: pre-wrap; word-break: break-all;&quot;&gt;&lt;code style=&quot;background-color: #e8e8e8; border-radius: 4px; border: 1px solid rgb(208, 209, 213); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif; line-height: 1.8571; margin: 0px; padding: 0px;&quot;&gt;ssh-keygen 을 하면 로컬의 개인키와 매핑되는 서버의 공개키가 한쌍으로 생성됨.&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot; id=&quot;code_1561715170092&quot; style=&quot;background-color: #eeeeee; overflow-wrap: break-word; overflow: auto; padding: 20px; white-space: pre-wrap; word-break: break-all;&quot;&gt;&lt;code style=&quot;background-color: #e8e8e8; border-radius: 4px; border: 1px solid rgb(208, 209, 213); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif; line-height: 1.8571; margin: 0px; padding: 0px;&quot;&gt;로컬에서 접속할때는 당연히 개인키를 가지고 (IdentityFile) 서버의 authorized_keys라는 곳에 개인키에 매핑되는 공개키를 넣어 주면 짝짝궁이 맞아 들어가는 구조.  당연히 authorized_keys 에는 여러 로컬(노트북 1, PC1, 노트북2, ...)에서 설정한 공개키 들이 저장되어 있을것이다.&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot; id=&quot;code_1561715170092&quot; style=&quot;background-color: #eeeeee; overflow-wrap: break-word; overflow: auto; padding: 20px; white-space: pre-wrap; word-break: break-all;&quot;&gt;&lt;code style=&quot;background-color: #e8e8e8; border-radius: 4px; border: 1px solid rgb(208, 209, 213); font-family: &amp;quot;Noto Sans KR&amp;quot;, sans-serif; line-height: 1.8571; margin: 0px; padding: 0px;&quot;&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/9074567110469218744/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2020/02/1-vsvisual-studio-code-remote-ssh.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/9074567110469218744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/9074567110469218744'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2020/02/1-vsvisual-studio-code-remote-ssh.html' title='매번 할때 마다 해매는 설정 (1) : VS(Visual Studio) Code Remote SSH 설정'/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-4614967762527014875</id><published>2019-12-21T00:00:00.005-08:00</published><updated>2020-04-17T23:09:02.407-07:00</updated><title type='text'>React Native의 끔찍한 버그</title><content type='html'>React Native로 개발 시, 여러 잔 버그 때문에 많이 고생해 보았는데, 이것 만큼 끔찍했던건 없었던 듯 하다.&lt;br /&gt;
&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;Render 함수 내의 에러(즉, JSX에러)는 React Native 에서 잡아 주지 않는 것이 있다.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;==&amp;gt;&amp;nbsp;&lt;i&gt;React Native Debugger 로그에도 안뜨고, Metro Bundler 에러 메세지도 없으며, 그냥 앱이 픽 죽어 버리면서 화면이 닫힘..(심지어는 폰 자체에 뻘겋게 뜨는 에러 창에도 안나옴... ;;)&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;개발을 하다가 이런 증세가 있음, Render 함수 내의 JSX에 뭔가 잘못 넣은게 있는지 확인하는게 정신 건강에 좋다. (ex, 스타일시트에서 width: 240 인데, width:&#39;240&#39; 으로 했는지...)&lt;br /&gt;
(진짜 이런거 한번 걸리면 멘탈 터짐)&lt;br /&gt;
하이브리드 모바일 개발에 있어 React Native 의 위상이나 인기가 개인적으로는 거품이거나 지나친 고평가 된게 아닌가 싶다. 기존에 Angular 기반의 Ionic 프레임워크로 개발시에는 프레임워크 내의 잔버그가 하나도 없었다. (정말 1도 없었다.)&lt;br /&gt;
&amp;nbsp;리액트 네이티브로 개발 시, 정말 수많은 짜잘한 프레임워크 내 버그와 싸웠던 기억으로 인해 스스로 내가&amp;nbsp; 만든 앱의 신뢰성에 의구심이 들 정도다.. (과연 이번엔 잘 돌아가는데, 다음에 해도 잘 돌아갈까?)&lt;br /&gt;
&amp;nbsp;React JS의 성공으로 인해 React Native가 별 검증없이 하이브리드 모바일 개발 프레임워크로 급격한 인기를 얻은 듯 싶다.&lt;br /&gt;
&amp;nbsp;만약 React Native와 Ionic 에서 무엇을 메인 개발 프레임워크로 고민하는 개발자가 있다면, 두 프레임워크로 모두 개발을 해본 사람 입장에서 아이오닉을 강하게 추천한다. 리액트 네이티브는 아이오닉에 비해 너무 지저분하다.. 안정성이 많이 떨어진다.. 스트레스로 인한 생명 감소가 느껴지는 프레임워크...ㅋ 누가 이렇게 띄어 놓은거냐...대체 ㅋ&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/4614967762527014875/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2019/12/react-native.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/4614967762527014875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/4614967762527014875'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2019/12/react-native.html' title='React Native의 끔찍한 버그'/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-6980334087557866623</id><published>2019-06-28T21:13:00.001-07:00</published><updated>2019-07-21T18:46:26.798-07:00</updated><title type='text'></title><content type='html'>&lt;div style=&quot;color: rgba(0, 0, 0, 0.87); font-size: 32px; line-height: 1.33; margin: 24px 0px; padding: 0px;&quot;&gt;
[react-native] 안드로이드 signed apk 만드는 방법&amp;nbsp;(안드로이드 배포 막바지 단계)&lt;/div&gt;
&lt;div&gt;
* 퍼옴: 출처 -&amp;nbsp;&lt;a href=&quot;https://iam.holy.kiwi/6&quot;&gt;https://iam.holy.kiwi/6&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
react-native 개발이 웬만큼 끝났다면!! 이제 배포를 해야한다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
안드로이드 apk 파일을 플레이스토어에 배포하기 위해서는 고유한 키스토어를 생성해서 다른 사람이 자신의 앱을 올리지 못하도록 해야한다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
안드로이드 signed apk를 만드는 방법을 알아보자!&lt;/div&gt;
&lt;div style=&quot;padding-bottom: 0px !important; padding-left: 0px; padding-right: 0px; padding-top: 0px !important;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;color: rgba(0, 0, 0, 0.87); font-size: 20px; line-height: 1.4; margin: 24px 0px; padding: 0px;&quot;&gt;
1. 키스토어 생성&lt;/h3&gt;
&lt;div style=&quot;padding-bottom: 0px !important; padding-left: 0px; padding-right: 0px; padding-top: 0px !important;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #010101; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; overflow: auto; position: relative !important;&quot;&gt;
&lt;div class=&quot;table-overflow&quot; style=&quot;overflow-x: auto;&quot;&gt;
&lt;div class=&quot;table-overflow&quot; style=&quot;overflow-x: auto;&quot;&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;colorscripter-code-table&quot; style=&quot;background-color: #fafafa; border-collapse: collapse; border-radius: 4px; border: none; color: #333333; font-family: &amp;quot;Apple SD Gothic Neo&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, &amp;quot;맑은 고딕&amp;quot;, Dotum, 돋움, &amp;quot;Noto Sans KR&amp;quot;, &amp;quot;Nanum Gothic&amp;quot;, Lato, Helvetica, sans-serif; font-size: 14px; margin: 0px; padding: 0px;&quot;&gt;&lt;tbody&gt;
&lt;tr style=&quot;border-bottom: 1px solid rgb(218, 220, 224);&quot;&gt;&lt;td style=&quot;border-left: 1px solid rgb(218, 220, 224); border-right: 2px solid rgb(229, 229, 229); margin: 0px; padding: 6px;&quot;&gt;&lt;div style=&quot;color: #666666; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; line-height: 18.2px; margin: 0px; padding: 0px; text-align: right; word-break: normal;&quot;&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
1&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-left: 1px solid rgb(218, 220, 224); margin: 0px; padding: 6px 0px;&quot;&gt;&lt;div style=&quot;color: #010101; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; line-height: 18.2px; margin: 0px; padding: 0px;&quot;&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
keytool&amp;nbsp;&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;genkey&amp;nbsp;&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;v&amp;nbsp;&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;keystore&amp;nbsp;&amp;lt;YOUR_KEYSTORE_NAME&amp;gt;.keystore&amp;nbsp;&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #066de2;&quot;&gt;alias&lt;/span&gt;&amp;nbsp;my&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;key&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #066de2;&quot;&gt;alias&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;keyalg&amp;nbsp;RSA&amp;nbsp;&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;keysize&amp;nbsp;&lt;span style=&quot;color: #0099cc;&quot;&gt;2048&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;validity&amp;nbsp;&lt;span style=&quot;color: #0099cc;&quot;&gt;10000&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
&lt;span style=&quot;color: #0099cc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-left: 1px solid rgb(218, 220, 224); margin: 0px; padding: 0px 2px 4px 0px; vertical-align: bottom;&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; style=&quot;color: white;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;background-color: #e5e5e5; border-radius: 10px; font-size: 9px; padding: 1px; word-break: normal;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;padding-bottom: 0px !important; padding-left: 0px; padding-right: 0px; padding-top: 0px !important;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;padding-bottom: 0px !important; padding-left: 0px; padding-right: 0px; padding-top: 0px !important;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;color: rgba(0, 0, 0, 0.87); font-size: 20px; line-height: 1.4; margin: 24px 0px; padding: 0px;&quot;&gt;
2. 생성된 키스토어 파일을 android/app 경로 내에 넣음&lt;/h3&gt;
&lt;div style=&quot;padding-bottom: 0px !important; padding-left: 0px; padding-right: 0px; padding-top: 0px !important;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;padding-bottom: 0px !important; padding-left: 0px; padding-right: 0px; padding-top: 0px !important;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;color: rgba(0, 0, 0, 0.87); font-size: 20px; line-height: 1.4; margin: 24px 0px; padding: 0px;&quot;&gt;
3. gradles.properties에 다음 코드를 넣음&lt;/h3&gt;
&lt;div style=&quot;padding-bottom: 0px !important; padding-left: 0px; padding-right: 0px; padding-top: 0px !important;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #010101; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; overflow: auto; position: relative !important;&quot;&gt;
&lt;div class=&quot;table-overflow&quot; style=&quot;overflow-x: auto;&quot;&gt;
&lt;div class=&quot;table-overflow&quot; style=&quot;overflow-x: auto;&quot;&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;colorscripter-code-table&quot; style=&quot;background-color: #fafafa; border-collapse: collapse; border-radius: 4px; border: none; color: #333333; font-family: &amp;quot;Apple SD Gothic Neo&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, &amp;quot;맑은 고딕&amp;quot;, Dotum, 돋움, &amp;quot;Noto Sans KR&amp;quot;, &amp;quot;Nanum Gothic&amp;quot;, Lato, Helvetica, sans-serif; font-size: 14px; margin: 0px; padding: 0px;&quot;&gt;&lt;tbody&gt;
&lt;tr style=&quot;border-bottom: 1px solid rgb(218, 220, 224);&quot;&gt;&lt;td style=&quot;border-left: 1px solid rgb(218, 220, 224); border-right: 2px solid rgb(229, 229, 229); margin: 0px; padding: 6px;&quot;&gt;&lt;div style=&quot;color: #666666; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; line-height: 18.2px; margin: 0px; padding: 0px; text-align: right; word-break: normal;&quot;&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
1&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
2&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
3&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
4&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-left: 1px solid rgb(218, 220, 224); margin: 0px; padding: 6px 0px;&quot;&gt;&lt;div style=&quot;color: #010101; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; line-height: 18.2px; margin: 0px; padding: 0px;&quot;&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
MYAPP_RELEASE_STORE_FILE&lt;span style=&quot;color: #a71d5d;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #a71d5d;&quot;&gt;&amp;lt;&lt;/span&gt;YOUR_KEYSTORE_NAME&lt;span style=&quot;color: #a71d5d;&quot;&gt;&amp;gt;&lt;/span&gt;.keystore&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
MYAPP_RELEASE_KEY_ALIAS&lt;span style=&quot;color: #a71d5d;&quot;&gt;=&lt;/span&gt;my&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;key&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;alias&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
MYAPP_RELEASE_STORE_PASSWORD&lt;span style=&quot;color: #a71d5d;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #a71d5d;&quot;&gt;&amp;lt;&lt;/span&gt;YOUR_PASSWORD&lt;span style=&quot;color: #a71d5d;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
MYAPP_RELEASE_KEY_PASSWORD&lt;span style=&quot;color: #a71d5d;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #a71d5d;&quot;&gt;&amp;lt;&lt;/span&gt;YOUR_PASSWORD&lt;span style=&quot;color: #a71d5d;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-left: 1px solid rgb(218, 220, 224); margin: 0px; padding: 0px 2px 4px 0px; vertical-align: bottom;&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; style=&quot;color: white;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;background-color: #e5e5e5; border-radius: 10px; font-size: 9px; padding: 1px; word-break: normal;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;padding-bottom: 0px !important; padding-left: 0px; padding-right: 0px; padding-top: 0px !important;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;padding-bottom: 0px !important; padding-left: 0px; padding-right: 0px; padding-top: 0px !important;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;color: rgba(0, 0, 0, 0.87); font-size: 20px; line-height: 1.4; margin: 24px 0px; padding: 0px;&quot;&gt;
4. app/build.gradle에 다음 코드를 넣음&lt;/h3&gt;
&lt;div style=&quot;padding-bottom: 0px !important; padding-left: 0px; padding-right: 0px; padding-top: 0px !important;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #010101; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; overflow: auto; position: relative !important;&quot;&gt;
&lt;div class=&quot;table-overflow&quot; style=&quot;overflow-x: auto;&quot;&gt;
&lt;div class=&quot;table-overflow&quot; style=&quot;overflow-x: auto;&quot;&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;colorscripter-code-table&quot; style=&quot;background-color: #fafafa; border-collapse: collapse; border-radius: 4px; border: none; color: #333333; font-family: &amp;quot;Apple SD Gothic Neo&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, &amp;quot;맑은 고딕&amp;quot;, Dotum, 돋움, &amp;quot;Noto Sans KR&amp;quot;, &amp;quot;Nanum Gothic&amp;quot;, Lato, Helvetica, sans-serif; font-size: 14px; margin: 0px; padding: 0px;&quot;&gt;&lt;tbody&gt;
&lt;tr style=&quot;border-bottom: 1px solid rgb(218, 220, 224);&quot;&gt;&lt;td style=&quot;border-left: 1px solid rgb(218, 220, 224); border-right: 2px solid rgb(229, 229, 229); margin: 0px; padding: 6px;&quot;&gt;&lt;div style=&quot;color: #666666; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; line-height: 18.2px; margin: 0px; padding: 0px; text-align: right; word-break: normal;&quot;&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
1&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
2&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
3&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
4&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
5&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
6&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
7&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
8&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
9&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
10&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
11&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
12&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
13&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
14&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
15&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
16&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
17&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
18&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
19&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
20&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
21&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
22&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-left: 1px solid rgb(218, 220, 224); margin: 0px; padding: 6px 0px;&quot;&gt;&lt;div style=&quot;color: #010101; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; line-height: 18.2px; margin: 0px; padding: 0px;&quot;&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
...&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
android&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;defaultConfig&amp;nbsp;{&amp;nbsp;...&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;signingConfigs&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;release&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #a71d5d;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(project.hasProperty(&lt;span style=&quot;color: #63a35c;&quot;&gt;&#39;MYAPP_RELEASE_STORE_FILE&#39;&lt;/span&gt;))&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;storeFile&amp;nbsp;file(MYAPP_RELEASE_STORE_FILE)&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;storePassword&amp;nbsp;MYAPP_RELEASE_STORE_PASSWORD&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;keyAlias&amp;nbsp;MYAPP_RELEASE_KEY_ALIAS&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;keyPassword&amp;nbsp;MYAPP_RELEASE_KEY_PASSWORD&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buildTypes&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;release&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;signingConfig&amp;nbsp;signingConfigs.release&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
}&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
...&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;font-size: 9px; font-style: italic; margin-right: 5px; margin-top: -13px; text-align: right;&quot;&gt;
&lt;a href=&quot;http://colorscripter.com/info#e&quot; style=&quot;color: #e5e5e5;&quot; target=&quot;_blank&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-left: 1px solid rgb(218, 220, 224); margin: 0px; padding: 0px 2px 4px 0px; vertical-align: bottom;&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; style=&quot;color: white;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;background-color: #e5e5e5; border-radius: 10px; font-size: 9px; padding: 1px; word-break: normal;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;padding-bottom: 0px !important; padding-left: 0px; padding-right: 0px; padding-top: 0px !important;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;padding-bottom: 0px !important; padding-left: 0px; padding-right: 0px; padding-top: 0px !important;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;padding-bottom: 0px !important; padding-left: 0px; padding-right: 0px; padding-top: 0px !important;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;color: rgba(0, 0, 0, 0.87); font-size: 20px; line-height: 1.4; margin: 24px 0px; padding: 0px;&quot;&gt;
5. 다음 명령어를 통해 개발자 모드를 끈다. (이 작업은 프로젝트 루트 폴더에서 해야 한다. - 다른 곳에서 안됨, 그리고 이 작업을 안하면 만든 apk가 정작 실행이 안됨..;; )&lt;/h3&gt;
&lt;div style=&quot;padding-bottom: 0px !important; padding-left: 0px; padding-right: 0px; padding-top: 0px !important;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #010101; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; overflow: auto; position: relative !important;&quot;&gt;
&lt;div class=&quot;table-overflow&quot; style=&quot;overflow-x: auto;&quot;&gt;
&lt;div class=&quot;table-overflow&quot; style=&quot;overflow-x: auto;&quot;&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;colorscripter-code-table&quot; style=&quot;background-color: #fafafa; border-collapse: collapse; border-radius: 4px; border: none; color: #333333; font-family: &amp;quot;Apple SD Gothic Neo&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, &amp;quot;맑은 고딕&amp;quot;, Dotum, 돋움, &amp;quot;Noto Sans KR&amp;quot;, &amp;quot;Nanum Gothic&amp;quot;, Lato, Helvetica, sans-serif; font-size: 14px; margin: 0px; padding: 0px;&quot;&gt;&lt;tbody&gt;
&lt;tr style=&quot;border-bottom: 1px solid rgb(218, 220, 224);&quot;&gt;&lt;td style=&quot;border-left: 1px solid rgb(218, 220, 224); border-right: 2px solid rgb(229, 229, 229); margin: 0px; padding: 6px;&quot;&gt;&lt;div style=&quot;color: #666666; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; line-height: 18.2px; margin: 0px; padding: 0px; text-align: right; word-break: normal;&quot;&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
1&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
2&lt;/div&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
3&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-left: 1px solid rgb(218, 220, 224); margin: 0px; padding: 6px 0px;&quot;&gt;&lt;div style=&quot;color: #010101; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; line-height: 18.2px; margin: 0px; padding: 0px;&quot;&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
react&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;native&amp;nbsp;bundle&amp;nbsp;&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;platform&amp;nbsp;android&amp;nbsp;&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;dev&amp;nbsp;&lt;span style=&quot;color: #0099cc;&quot;&gt;false&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;entry&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;file&amp;nbsp;index.js&amp;nbsp;&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;bundle&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;output&amp;nbsp;android&lt;span style=&quot;color: #a71d5d;&quot;&gt;/&lt;/span&gt;app&lt;span style=&quot;color: #a71d5d;&quot;&gt;/&lt;/span&gt;src&lt;span style=&quot;color: #a71d5d;&quot;&gt;/&lt;/span&gt;main&lt;span style=&quot;color: #a71d5d;&quot;&gt;/&lt;/span&gt;assets&lt;span style=&quot;color: #a71d5d;&quot;&gt;/&lt;/span&gt;index.android.bundle&amp;nbsp;&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;assets&lt;span style=&quot;color: #a71d5d;&quot;&gt;-&lt;/span&gt;dest&amp;nbsp;android&lt;span style=&quot;color: #a71d5d;&quot;&gt;/&lt;/span&gt;app&lt;span style=&quot;color: #a71d5d;&quot;&gt;/&lt;/span&gt;src&lt;span style=&quot;color: #a71d5d;&quot;&gt;/&lt;/span&gt;main&lt;span style=&quot;color: #a71d5d;&quot;&gt;/&lt;/span&gt;res&lt;span style=&quot;color: #a71d5d;&quot;&gt;/&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;font-size: 9px; font-style: italic; margin-right: 5px; margin-top: -13px; text-align: right;&quot;&gt;
&lt;a href=&quot;http://colorscripter.com/info#e&quot; style=&quot;color: #e5e5e5;&quot; target=&quot;_blank&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-left: 1px solid rgb(218, 220, 224); margin: 0px; padding: 0px 2px 4px 0px; vertical-align: bottom;&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; style=&quot;color: white;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;background-color: #e5e5e5; border-radius: 10px; font-size: 9px; padding: 1px; word-break: normal;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #010101; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; overflow: auto; position: relative !important;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;color: rgba(0, 0, 0, 0.87); font-size: 20px; line-height: 1.4; margin: 24px 0px; padding: 0px;&quot;&gt;
6. 다음 명령어를 통해 release apk를 빌드한다.&lt;/h3&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #010101; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; overflow: auto; position: relative !important;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;overflow: auto; position: relative !important;&quot;&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #010101; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; overflow: auto; position: relative !important;&quot;&gt;
&lt;div class=&quot;table-overflow&quot; style=&quot;overflow-x: auto;&quot;&gt;
&lt;div class=&quot;table-overflow&quot; style=&quot;overflow-x: auto;&quot;&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;colorscripter-code-table&quot; style=&quot;background-color: #fafafa; border-collapse: collapse; border-radius: 4px; border: none; color: #333333; font-family: &amp;quot;Apple SD Gothic Neo&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, &amp;quot;맑은 고딕&amp;quot;, Dotum, 돋움, &amp;quot;Noto Sans KR&amp;quot;, &amp;quot;Nanum Gothic&amp;quot;, Lato, Helvetica, sans-serif; font-size: 14px; margin: 0px; padding: 0px;&quot;&gt;&lt;tbody&gt;
&lt;tr style=&quot;border-bottom: 1px solid rgb(218, 220, 224);&quot;&gt;&lt;td style=&quot;border-left: 1px solid rgb(218, 220, 224); border-right: 2px solid rgb(229, 229, 229); margin: 0px; padding: 6px;&quot;&gt;&lt;div style=&quot;color: #666666; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; line-height: 18.2px; margin: 0px; padding: 0px; text-align: right; word-break: normal;&quot;&gt;
&lt;div style=&quot;line-height: 18.2px;&quot;&gt;
1&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-left: 1px solid rgb(218, 220, 224); margin: 0px; padding: 6px 0px;&quot;&gt;&lt;div style=&quot;color: #010101; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; line-height: 18.2px; margin: 0px; padding: 0px;&quot;&gt;
&lt;div style=&quot;line-height: 18.2px; padding: 0px 6px; white-space: pre;&quot;&gt;
cd&amp;nbsp;android&amp;nbsp;&lt;span style=&quot;color: #a71d5d;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #a71d5d;&quot;&gt;&amp;amp;&lt;/span&gt;&amp;nbsp;.&lt;span style=&quot;color: #a71d5d;&quot;&gt;/&lt;/span&gt;gradlew&amp;nbsp;assembleRelease&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;border-left: 1px solid rgb(218, 220, 224); margin: 0px; padding: 0px 2px 4px 0px; vertical-align: bottom;&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; style=&quot;color: white;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;background-color: #e5e5e5; border-radius: 10px; font-size: 9px; padding: 1px; word-break: normal;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #010101; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; overflow: auto; position: relative !important;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;color: rgba(0, 0, 0, 0.87); font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; font-size: 20px; line-height: 1.4; margin: 24px 0px; padding: 0px;&quot;&gt;
7. app-release.apk 파일은 android/app/build/outputs/apk/release 경로에서 찾을 수 있다.&lt;/h3&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #010101; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; overflow: auto; position: relative !important;&quot;&gt;
&lt;h4&gt;
&lt;b&gt;8. 이런 Error 가 나오는 경우가 있음&lt;/b&gt;&lt;/h4&gt;
&lt;h4&gt;
&lt;span style=&quot;color: #010101; font-family: &amp;quot;consolas&amp;quot; , &amp;quot;liberation mono&amp;quot; , &amp;quot;menlo&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;b&gt;Execution failed for task &#39;:app:mergeReleaseResources&#39;.&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #010101; font-family: &amp;quot;consolas&amp;quot; , &amp;quot;liberation mono&amp;quot; , &amp;quot;menlo&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;b&gt;Error: Duplicate resources&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;h4&gt;
&lt;span style=&quot;color: #010101; font-family: &amp;quot;consolas&amp;quot; , &amp;quot;liberation mono&amp;quot; , &amp;quot;menlo&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;b&gt;--&amp;gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;a href=&quot;https://stackoverflow.com/questions/53239705/react-native-error-duplicate-resources-android&quot;&gt;https://stackoverflow.com/questions/53239705/react-native-error-duplicate-resources-android&lt;/a&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;h4&gt;
&lt;b&gt;&amp;nbsp;그 중 첫 번째 이게 답임&lt;/b&gt;&lt;/h4&gt;
&lt;h4&gt;
&lt;b&gt;--&amp;gt;&amp;nbsp;&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;background-color: white; color: #242729; font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 15px;&quot;&gt;After bundling delete the&amp;nbsp;&lt;/span&gt;&lt;code style=&quot;background-color: #eff0f1; border: 0px; box-sizing: inherit; color: #242729; font-family: Consolas, Menlo, Monaco, &amp;quot;Lucida Console&amp;quot;, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;DejaVu Sans Mono&amp;quot;, &amp;quot;Bitstream Vera Sans Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace, sans-serif; font-size: 13px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: inherit; margin: 0px; padding: 1px 5px; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;drawable&lt;/code&gt;&lt;span style=&quot;background-color: white; color: #242729; font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 15px;&quot;&gt;&amp;nbsp;folder from&amp;nbsp;&lt;/span&gt;&lt;code style=&quot;background-color: #eff0f1; border: 0px; box-sizing: inherit; color: #242729; font-family: Consolas, Menlo, Monaco, &amp;quot;Lucida Console&amp;quot;, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;DejaVu Sans Mono&amp;quot;, &amp;quot;Bitstream Vera Sans Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace, sans-serif; font-size: 13px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: inherit; margin: 0px; padding: 1px 5px; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Android Studio&lt;/code&gt;&lt;span style=&quot;background-color: white; color: #242729; font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 15px;&quot;&gt;. You could find this in&amp;nbsp;&lt;/span&gt;&lt;code style=&quot;background-color: #eff0f1; border: 0px; box-sizing: inherit; color: #242729; font-family: Consolas, Menlo, Monaco, &amp;quot;Lucida Console&amp;quot;, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;DejaVu Sans Mono&amp;quot;, &amp;quot;Bitstream Vera Sans Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace, sans-serif; font-size: 13px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: inherit; margin: 0px; padding: 1px 5px; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;android/app/src/main/res/drawable&lt;/code&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;h4&gt;
&lt;b&gt;안드로이드 스트디오까지 갈것 없고 그냥 찾아서 지워주면 됨.&amp;nbsp;&lt;/b&gt;&lt;b&gt;drawable 어쩌구 폴더를 전부 다 지워주면 됨.&lt;/b&gt;&lt;/h4&gt;
&lt;h4&gt;
&lt;/h4&gt;
&lt;/div&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #010101; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; overflow: auto; position: relative !important;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/6980334087557866623/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2019/06/react-native-signed-apk-httpsiam.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/6980334087557866623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/6980334087557866623'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2019/06/react-native-signed-apk-httpsiam.html' title=''/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-7692750124115189536</id><published>2018-10-15T20:28:00.001-07:00</published><updated>2021-02-03T17:40:29.945-08:00</updated><title type='text'>Promise 의 이해 </title><content type='html'>Promise는 JavaScript의 비동기 처리를 위해 탄생했기 때문에 Java나 C++ 등의 동기형 객체지향 프로그래머들이 이해하기 여간 까다로운 개념이 아님.&lt;br /&gt;
&lt;br /&gt;
자바 스크립트는 &lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;함수를 인자로 &lt;/span&gt;&lt;/b&gt;받을 수 있다. 이 점을 잘 인식해야 한다. 여기서 모든 헛갈림이 시작된다.&lt;br /&gt;
&lt;br /&gt;
아래는 인자를 함수로 받는 함수의 정의(선언)&lt;br /&gt;
Ex)&lt;br /&gt;
function getData(&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;callbackFunc&lt;/span&gt;&lt;/b&gt;) {&lt;br /&gt;
&amp;nbsp; $.get(&#39;url 주소/products/1&#39;, function (response) {&lt;br /&gt;
&lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;if(response){&lt;br /&gt;
&lt;span style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;callbackFunc(response)&lt;/span&gt;&lt;/b&gt;; // 서버에서 받은 데이터 response를 callbackFunc() 함수에 넘겨줌&lt;br /&gt;
&lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;br /&gt;
&amp;nbsp; });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
이렇게 인자를 함수로 받은 함수를 사용(호출) 할 때 인자로 전달된 함수를 정의(선언) 해서 쓴다.&lt;br /&gt;
&lt;br /&gt;
getData(function(tableData){&lt;br /&gt;
&lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;console.log(tableData);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
즉, callbackFunc = function(tableData){&lt;br /&gt;
&lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;console.log(tableData);&lt;br /&gt;
} 이 되는 셈.&lt;br /&gt;
&lt;br /&gt;
프로미스를 쓰면, 이렇게 함수를 정의한다.&lt;br /&gt;
function getData() {&lt;br /&gt;
&lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;return new Promise(function(resolve, reject){&lt;br /&gt;
&lt;span style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&lt;b&gt;$.get(&#39;url 주소/products/1&#39;, function(response){&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;if(response){&lt;br /&gt;
&lt;span style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;resolve(response);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;}&lt;br /&gt;
&lt;span style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;reject(new Error(&quot;Request is failed&quot;));&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;white-space: pre;&quot;&gt; &lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;b&gt;});&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
즉 promise 라는 객체를 생성 시키는 방법은 function(resolve, reject)함수를 생성자 인자로 던져 주면 된다.&lt;br /&gt;
여기서 promise를 return 하는 이유는 return을 함으로써 getData() 함수 밖에 쓸 수(즉 콜백 지옥을 벗어날 수)있기 때문이다.&lt;br /&gt;
&lt;br /&gt;
그리고 promise 의 생성자 인자로 던져진 함수 내부에 시간이 걸리는(즉, 비동기 처리에 원인이 되는- 볼드체 부분) 코드를 넣으면 된다.&lt;br /&gt;
그리고 나서 resolve() 함수에 비동기 처리된 결과 값(response)를 넘겨준다.&lt;br /&gt;
&lt;br /&gt;
getData().then(function(data){&lt;br /&gt;
&lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;console.log(data);&lt;br /&gt;
})&lt;br /&gt;
&lt;br /&gt;
그러면 위와 같이 then() 안에 인자로서 resolve(reponse)를 실제 어떤 동작을 하는지 정의(선언) 해주면 된다.&lt;br /&gt;
즉, resolve(reponse)는 맨 위의 callbackFunc(response)와 똑같은 역할을 한다.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;getData().then(&lt;span style=&quot;color: blue;&quot;&gt;function(data){&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;console.log(data);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;}&lt;/span&gt;).catch(&lt;span style=&quot;color: red;&quot;&gt;function(err){&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;console.log(err);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;}&lt;/span&gt;);&lt;br /&gt;
&lt;br /&gt;
에러처리는 위와 같이 catch()를 이용한다.&lt;br /&gt;
간단히 말해, &lt;b&gt;&lt;u&gt;then에 들어가는 인자는 resolve()를 함수로서 구체화 하는 코드&lt;/u&gt;&lt;/b&gt;가 들어가고,&lt;br /&gt;
&lt;b&gt;&lt;u&gt;catch에 들어가는 인자는 reject()를 함수로서 구체화 하는 코드&lt;/u&gt;&lt;/b&gt;가 들어가면 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/7692750124115189536/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2018/10/promise.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/7692750124115189536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/7692750124115189536'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2018/10/promise.html' title='Promise 의 이해 '/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-8275463890124788806</id><published>2018-06-22T19:32:00.003-07:00</published><updated>2018-06-22T19:32:49.104-07:00</updated><title type='text'>ionic 데이터를 객체 형태로 뷰로 넘길 때 발생하는 undefined(null)</title><content type='html'>ionic에서 viewDidLoad() 에서 데이터를 set 했는데, View단에서 그 데이터를 못 가져오는 경우가 있다.&lt;br /&gt;
이런 경우는 View 단에 Data를 넘길때 객체(Object) 형태로 넘겨서, 뷰단에서 그 값을 빼서(fetch) 표시하는 경우 자주 발생한다. 뷰단에 넘기는 데이터는 string이나 number 처럼 primitive 형태의 데이터를 넘기는 것이 안전하다. 코드단에서 전부 가공을 마치고 말 그대로 뷰(View)단에서는 최종적으로 유저에게 보여지(viewed)는 data만을 넘긴다.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/8275463890124788806/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2018/06/ionic-undefinednull.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/8275463890124788806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/8275463890124788806'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2018/06/ionic-undefinednull.html' title='ionic 데이터를 객체 형태로 뷰로 넘길 때 발생하는 undefined(null)'/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-447843020990111340</id><published>2017-12-12T21:37:00.000-08:00</published><updated>2017-12-12T21:37:04.180-08:00</updated><title type='text'></title><content type='html'>전역 변수를 사용했을시 직면할 수 있는 버그&lt;br /&gt;
&amp;nbsp;=&amp;gt; 데이터가 리프레쉬가 안되는 현상.&lt;br /&gt;
&amp;nbsp;변수의 데이터가 계속 쌓이면서 초기화가 안되는 문제가 있을때 자신이 전역변수를 사용하고 있지 않는지 체크해 볼 필요가 있다.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/447843020990111340/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2017/12/blog-post.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/447843020990111340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/447843020990111340'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2017/12/blog-post.html' title=''/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-6281586335782051345</id><published>2017-12-01T01:08:00.000-08:00</published><updated>2017-12-06T01:11:18.882-08:00</updated><title type='text'>JSON Doc 에서 Array나 Object를 못 가져올 때 (Unable to get access Array or Object from JSON in Javascript)</title><content type='html'>답은 JSON.stringfy() 로 doc을 읽어 들인 후 ==&amp;gt; JSON.parse()로 다시 바꿔줘야 한다.&lt;br /&gt;
Express 등에서 디비에서 떨궈서 받은 Json 데이터 안에 Array나 객체에 접근 못하는 경우가 종종 있다. 콘솔이나 로그에는 명확히 찍히기 때문에 매우 당황 스럽다.&lt;br /&gt;
&amp;nbsp;이는 JavaScript 의 JSON 이 우리가 흔히 말하는 JSON 포맷과 다르기 때문에 발생한다. 즉 자바스크립 버젼의 JSON을 JSON 인터페이스 포맷으로 바꿔야 한다. 그 후 다시 JSON.parse()로 바꿔 줌.&lt;br /&gt;
방법은&lt;br /&gt;
let originalJson = JSON.stringfy(javaScriptJson)&lt;br /&gt;
let parsedJson = JSON.parse(originalJson);&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/6281586335782051345/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2017/12/json-doc-array-object.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/6281586335782051345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/6281586335782051345'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2017/12/json-doc-array-object.html' title='JSON Doc 에서 Array나 Object를 못 가져올 때 (Unable to get access Array or Object from JSON in Javascript)'/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-1442705068494780289</id><published>2017-11-28T18:44:00.000-08:00</published><updated>2018-03-18T03:06:12.501-07:00</updated><title type='text'>ionic2 Android build and Release</title><content type='html'>&lt;pre class=&quot;highlight&quot; style=&quot;background: rgb(255, 255, 255); border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: rgb(215, 219, 228); border-left-style: solid; border-radius: 2px; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: initial; border-width: 0px 0px 0px 4px; box-sizing: border-box; color: #333333; font-family: Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;우선 프로젝트 루트 폴더의 config.xml 파일에서 widget id와 버전(version)을 체크하고 변경해 준다. (이게 같으면 나중에 다 해놓구 플레이 스토어에 안올라감... ;;)&lt;/pre&gt;
&lt;pre class=&quot;highlight&quot; style=&quot;background: rgb(255, 255, 255); border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: rgb(215, 219, 228); border-left-style: solid; border-radius: 2px; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: initial; border-width: 0px 0px 0px 4px; box-sizing: border-box; color: #333333; font-family: Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;그리고 해당 프로젝트 루트 폴더에서 CLI로 다음과 같이 입력&lt;/pre&gt;
&lt;pre class=&quot;highlight&quot; style=&quot;background: rgb(255, 255, 255); border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: rgb(215, 219, 228); border-left-style: solid; border-radius: 2px; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: initial; border-width: 0px 0px 0px 4px; box-sizing: border-box; color: #333333; font-family: Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;code style=&quot;background-color: transparent; border-radius: 2px; border: 0px; box-sizing: border-box; color: inherit; font-family: Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: inherit; margin-left: 3px; margin-right: 3px; padding: 0px;&quot;&gt;&lt;span class=&quot;gp&quot; style=&quot;box-sizing: border-box; color: #555555;&quot;&gt;$ &lt;/span&gt;ionic cordova build --release android&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;highlight&quot; style=&quot;background: rgb(255, 255, 255); border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: rgb(215, 219, 228); border-left-style: solid; border-radius: 2px; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: initial; border-width: 0px 0px 0px 4px; box-sizing: border-box; color: #333333; font-family: Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;code style=&quot;background-color: transparent; border-radius: 2px; border: 0px; box-sizing: border-box; color: inherit; font-family: Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: inherit; margin-left: 3px; margin-right: 3px; padding: 0px;&quot;&gt;그러면 android-relase-unsigned.apk 가 나온다.&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;highlight&quot; style=&quot;background: rgb(255, 255, 255); border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: rgb(215, 219, 228); border-left-style: solid; border-radius: 2px; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: initial; border-width: 0px 0px 0px 4px; box-sizing: border-box; color: #333333; font-family: Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;(이 apk 파일은 프로젝트폴더\platforms\android\build\outputs\apk\ 에 생성되니 헤메지 말자)&lt;/pre&gt;
&lt;pre class=&quot;highlight&quot; style=&quot;background: rgb(255, 255, 255); border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: rgb(215, 219, 228); border-left-style: solid; border-radius: 2px; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: initial; border-width: 0px 0px 0px 4px; box-sizing: border-box; color: #333333; font-family: Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;code style=&quot;background-color: transparent; border-radius: 2px; border: 0px; box-sizing: border-box; color: inherit; font-family: Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: inherit; margin-left: 3px; margin-right: 3px; padding: 0px;&quot;&gt;이 녀석을 Sign해 줘야한다.&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;highlight&quot; style=&quot;background: rgb(255, 255, 255); border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: rgb(215, 219, 228); border-left-style: solid; border-radius: 2px; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: initial; border-width: 0px 0px 0px 4px; box-sizing: border-box; color: #333333; font-family: Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;code style=&quot;background-color: transparent; border-radius: 2px; border: 0px; box-sizing: border-box; color: inherit; font-family: Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: inherit; margin-left: 3px; margin-right: 3px; padding: 0px;&quot;&gt;따라서 Keytool 이라는 명령어(JDK)를 이용해서 사인을 할 key를 만들어줘야 한다. (이미 key가 있으면 이 과정은 생략하고 jarsigner를 이용해 sign을 하면 된다.)&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;highlight&quot; style=&quot;background: rgb(255, 255, 255); border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: rgb(215, 219, 228); border-left-style: solid; border-radius: 2px; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: initial; border-width: 0px 0px 0px 4px; box-sizing: border-box; color: #333333; font-family: Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;code style=&quot;background-color: transparent; border-radius: 2px; border: 0px; box-sizing: border-box; color: inherit; font-family: Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: inherit; margin-left: 3px; margin-right: 3px; padding: 0px;&quot;&gt;keytool은 JDK 명령어 이므로, Java path(&lt;/code&gt;C:\Program Files\Java\jdk1.8.0_152\bin)를 시스템 환경 변수에 잡아 줘야 정신건강에 이롭다.&lt;/pre&gt;
&lt;pre class=&quot;highlight&quot; style=&quot;background: rgb(255, 255, 255); border-bottom-width: 0px; border-left: 4px solid rgb(215, 219, 228); border-radius: 2px; border-right-width: 0px; border-top-width: 0px; box-sizing: border-box; font-family: monaco, menlo, consolas, &amp;quot;courier new&amp;quot;, monospace; font-size: 14px; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;pre class=&quot;highlight&quot; style=&quot;border-bottom-width: 0px; border-left: 4px solid rgb(215, 219, 228); border-radius: 2px; border-right-width: 0px; border-top-width: 0px; box-sizing: border-box; color: #333333; font-family: monaco, menlo, consolas, &amp;quot;courier new&amp;quot;, monospace; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;code style=&quot;background-color: transparent; border-radius: 2px; border: 0px; box-sizing: border-box; color: inherit; font-family: Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: inherit; margin-left: 3px; margin-right: 3px; padding: 0px;&quot;&gt;keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000&lt;/code&gt;&lt;/pre&gt;
&lt;span style=&quot;color: #333333;&quot;&gt;
&lt;/span&gt;&lt;pre class=&quot;highlight&quot; style=&quot;border-bottom-width: 0px; border-left: 4px solid rgb(215, 219, 228); border-radius: 2px; border-right-width: 0px; border-top-width: 0px; box-sizing: border-box; color: #333333; font-family: monaco, menlo, consolas, &amp;quot;courier new&amp;quot;, monospace; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;code style=&quot;background-color: transparent; border-radius: 2px; border: 0px; box-sizing: border-box; color: inherit; font-family: Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: inherit; margin-left: 3px; margin-right: 3px; padding: 0px;&quot;&gt;위의 명령어를 이용해서 사인키를 만들었으면, my-release-key.keystore 라는 파일이 현재의 폴더에 생성될거임&lt;/code&gt;&lt;/pre&gt;
&lt;span style=&quot;color: #333333;&quot;&gt;
&lt;/span&gt;&lt;pre class=&quot;highlight&quot; style=&quot;border-bottom-width: 0px; border-left: 4px solid rgb(215, 219, 228); border-radius: 2px; border-right-width: 0px; border-top-width: 0px; box-sizing: border-box; color: #333333; font-family: monaco, menlo, consolas, &amp;quot;courier new&amp;quot;, monospace; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;code style=&quot;background-color: transparent; border-radius: 2px; border: 0px; box-sizing: border-box; color: inherit; font-family: Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: inherit; margin-left: 3px; margin-right: 3px; padding: 0px;&quot;&gt;그럼 역시 JDK 명령어인 jarsigner를 이용해서 다음과 같이 사인해줌.(즉 키가 이미 있음위의 keytool 과정은 생략해도 됨)&lt;/code&gt;&lt;/pre&gt;
&lt;span style=&quot;color: #333333;&quot;&gt;
&lt;/span&gt;&lt;pre class=&quot;highlight&quot; style=&quot;border-bottom-width: 0px; border-left: 4px solid rgb(215, 219, 228); border-radius: 2px; border-right-width: 0px; border-top-width: 0px; box-sizing: border-box; color: #333333; font-family: monaco, menlo, consolas, &amp;quot;courier new&amp;quot;, monospace; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore android-release-unsigned.apk alias_name&lt;/pre&gt;
&lt;span style=&quot;color: #333333;&quot;&gt;
&lt;/span&gt;&lt;pre class=&quot;highlight&quot; style=&quot;border-bottom-width: 0px; border-left: 4px solid rgb(215, 219, 228); border-radius: 2px; border-right-width: 0px; border-top-width: 0px; box-sizing: border-box; color: #333333; font-family: monaco, menlo, consolas, &amp;quot;courier new&amp;quot;, monospace; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;당연히 alias_name에 바꾸고 싶은 이름을 넣어야 함. 근데 주의할건 이 alias_name 이 keytool 명령어에서 사용했던 alias_name 이랑 일치해야 함. &lt;/pre&gt;
&lt;pre class=&quot;highlight&quot; style=&quot;border-bottom-width: 0px; border-left: 4px solid rgb(215, 219, 228); border-radius: 2px; border-right-width: 0px; border-top-width: 0px; box-sizing: border-box; color: #333333; font-family: monaco, menlo, consolas, &amp;quot;courier new&amp;quot;, monospace; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;(이때 가끔 아래와 같이 암호를 제대로 넣었는데오 저런 재수없는 에러가 나올수 있는데, 이건 해당 폴더에 쓰기 권한 설정이 없어서 그런거임. (회사컴등으로 작업할때 나올 수 있음) 폴더에 권한을 주면 됨.&lt;/pre&gt;
&lt;pre class=&quot;highlight&quot; style=&quot;border-bottom-width: 0px; border-left: 4px solid rgb(215, 219, 228); border-radius: 2px; border-right-width: 0px; border-top-width: 0px; box-sizing: border-box; color: #333333; font-family: monaco, menlo, consolas, &amp;quot;courier new&amp;quot;, monospace; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;Enter Passphrase for keystore:&lt;/pre&gt;
&lt;pre class=&quot;highlight&quot; style=&quot;border-left-color: rgb(215, 219, 228); border-left-style: solid; border-radius: 2px; border-width: 0px 0px 0px 4px; box-sizing: border-box; font-family: monaco, menlo, consolas, &amp;quot;courier new&amp;quot;, monospace; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: red;&quot;&gt;jarsigner: unable to create: android-release-unsigned.apk.sig&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;highlight&quot; style=&quot;border-bottom-width: 0px; border-left: 4px solid rgb(215, 219, 228); border-radius: 2px; border-right-width: 0px; border-top-width: 0px; box-sizing: border-box; color: #333333; font-family: monaco, menlo, consolas, &amp;quot;courier new&amp;quot;, monospace; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;/pre&gt;
&lt;pre class=&quot;highlight&quot; style=&quot;border-bottom-width: 0px; border-left: 4px solid rgb(215, 219, 228); border-radius: 2px; border-right-width: 0px; border-top-width: 0px; box-sizing: border-box; color: #333333; font-family: monaco, menlo, consolas, &amp;quot;courier new&amp;quot;, monospace; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;그러면 그냥 똑같은 파일이름으로 android-release-unsigned.apk 가 생성되는데 사실 이건 unsigned 가 아니고 sign 된 거임. 이걸 zipalign 이라는 Android SDK 빌드툴로 압축해줘야 함. (당연히 안드로이드도 환경 변수로 잡아야 정신건강에 이로움 - 안드로이드 빌드 툴은 보통 ~Users\AppData\Local\Android\Sdk\build-tools\ 이라는 깊고 깊은 곳에 있음.)&lt;/pre&gt;
&lt;span style=&quot;color: #333333;&quot;&gt;
&lt;/span&gt;&lt;pre class=&quot;highlight&quot; style=&quot;border-bottom-width: 0px; border-left: 4px solid rgb(215, 219, 228); border-radius: 2px; border-right-width: 0px; border-top-width: 0px; box-sizing: border-box; color: #333333; font-family: monaco, menlo, consolas, &amp;quot;courier new&amp;quot;, monospace; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;zipalign -v 4 android-release-unsigned.apk HelloWorld.apk&lt;/pre&gt;
&lt;span style=&quot;color: #333333;&quot;&gt;
&lt;/span&gt;&lt;pre class=&quot;highlight&quot; style=&quot;border-bottom-width: 0px; border-left: 4px solid rgb(215, 219, 228); border-radius: 2px; border-right-width: 0px; border-top-width: 0px; box-sizing: border-box; color: #333333; font-family: monaco, menlo, consolas, &amp;quot;courier new&amp;quot;, monospace; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;이렇게 해주면 최종 Signed Release apk 가 생성됨&lt;/pre&gt;
&lt;span style=&quot;color: #333333;&quot;&gt;
&lt;/span&gt;&lt;pre class=&quot;highlight&quot; style=&quot;border-bottom-width: 0px; border-left: 4px solid rgb(215, 219, 228); border-radius: 2px; border-right-width: 0px; border-top-width: 0px; box-sizing: border-box; color: #333333; font-family: monaco, menlo, consolas, &amp;quot;courier new&amp;quot;, monospace; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;(참고: 위의 과정을 c:\signing 와 같은 정해진 폴더에 android-release-unsigned.apk, my-release-key.keystore 같은 파일들을 때려넣고, 자바와 안드로이드 패쓰를 잡고 해당 폴더에서 작업을 하는게 편함)&lt;/pre&gt;
&lt;span style=&quot;color: #333333;&quot;&gt;
&lt;/span&gt;&lt;pre class=&quot;highlight&quot; style=&quot;border-bottom-width: 0px; border-left: 4px solid rgb(215, 219, 228); border-radius: 2px; border-right-width: 0px; border-top-width: 0px; box-sizing: border-box; color: #333333; font-family: monaco, menlo, consolas, &amp;quot;courier new&amp;quot;, monospace; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;플레이스토어에서 올리는 법&lt;/pre&gt;
&lt;span style=&quot;color: #333333;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; color: #333333; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh10yh9ZuLEeZVzUvtqg9g3del6CmS9WC2zrVZUsxM5HFl_qcrztFACds0vqjBOW3JMMSCTPjhcr1lKk3BPOpLe2Adxf2RH-WS6ot0SWzp7zdnHvUMPpEHX_m3ESRYekZgWdGYe9boGgz8/s1600/Capture.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;849&quot; data-original-width=&quot;1520&quot; height=&quot;355&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh10yh9ZuLEeZVzUvtqg9g3del6CmS9WC2zrVZUsxM5HFl_qcrztFACds0vqjBOW3JMMSCTPjhcr1lKk3BPOpLe2Adxf2RH-WS6ot0SWzp7zdnHvUMPpEHX_m3ESRYekZgWdGYe9boGgz8/s640/Capture.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;color: #333333;&quot;&gt;
&lt;/span&gt;&lt;pre class=&quot;highlight&quot; style=&quot;border-bottom-width: 0px; border-left: 4px solid rgb(215, 219, 228); border-radius: 2px; border-right-width: 0px; border-top-width: 0px; box-sizing: border-box; color: #333333; font-family: monaco, menlo, consolas, &amp;quot;courier new&amp;quot;, monospace; line-height: 1.42857; margin-bottom: 10.5px; padding: 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;/pre&gt;
&lt;span style=&quot;color: #333333;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/1442705068494780289/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2017/11/ionic2-android-build-and-release.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/1442705068494780289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/1442705068494780289'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2017/11/ionic2-android-build-and-release.html' title='ionic2 Android build and Release'/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh10yh9ZuLEeZVzUvtqg9g3del6CmS9WC2zrVZUsxM5HFl_qcrztFACds0vqjBOW3JMMSCTPjhcr1lKk3BPOpLe2Adxf2RH-WS6ot0SWzp7zdnHvUMPpEHX_m3ESRYekZgWdGYe9boGgz8/s72-c/Capture.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-2555334785661940059</id><published>2016-07-04T03:46:00.003-07:00</published><updated>2016-07-04T03:46:58.856-07:00</updated><title type='text'>mean stack setting</title><content type='html'>요 페이지가 베스트 임..&lt;br /&gt;
&lt;br /&gt;
https://www.npmjs.com/package/generator-mean-stack</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/2555334785661940059/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2016/07/mean-stack-setting.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/2555334785661940059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/2555334785661940059'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2016/07/mean-stack-setting.html' title='mean stack setting'/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-8660370412607866833</id><published>2016-06-01T21:34:00.001-07:00</published><updated>2016-06-01T21:34:40.082-07:00</updated><title type='text'>Restful put 에서 파라메터로 객체를 넘겨야 한다.</title><content type='html'>말 그대로 Restful put() 에서 파라메터로 객체를 넘겨야 한다.&lt;br /&gt;
primative 값(int 등)으로 넘기면 400 에러(Not found)를 밷는다.. &lt;br /&gt;
이것 때문에 많이 헤멤...;;</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/8660370412607866833/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2016/06/restful-put.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/8660370412607866833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/8660370412607866833'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2016/06/restful-put.html' title='Restful put 에서 파라메터로 객체를 넘겨야 한다.'/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-255307731325114223</id><published>2016-02-08T03:29:00.006-08:00</published><updated>2016-03-01T20:56:19.260-08:00</updated><title type='text'>터미널에서 띄운 서버 앱이 터미널 세션 종료시 같이 죽는 문제 </title><content type='html'>&amp;nbsp;nohup &amp;nbsp;명령어를 쓰면 된다.&lt;br /&gt;
nohup은 프로세스를 백그라운드로 돌려주는 기능&lt;br /&gt;
&lt;br /&gt;
~$ nohup 명령어 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
* 보통 nohup은 /usr/bin 에 있을거임.&lt;br /&gt;
그래서, 요렇게 치면 될듯&lt;br /&gt;
예)&lt;br /&gt;
~$ /usr/bin/nohup node app.js &amp;amp;&lt;br /&gt;
&lt;br /&gt;
그 후 터미널을 나가도 잘 돌아간다~~&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
그러면 또, 강제로 죽여야 할 때도 있을 것이다.&lt;br /&gt;
그때는 &quot;ps -ef | command이름&quot; 을 이용해서 해당 프로세스 ID를 찾은다음&lt;br /&gt;
kill -9 processID 로 종료시키면 된다.&lt;br /&gt;
&lt;br /&gt;
Ex)&lt;br /&gt;
&lt;span style=&quot;color: #444444;&quot;&gt;&lt;br class=&quot;Apple-interchange-newline&quot; /&gt;//node 명령어를 사용하는 프로세스 조회&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;ubuntu@ip-172-31-13-41:~/d2dessay$ ps -ef | grep &lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;&lt;i&gt;node &amp;nbsp;&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;ubuntu &amp;nbsp; &lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;20252 &lt;/span&gt;&lt;/b&gt;&amp;nbsp; &amp;nbsp; 1&amp;nbsp; 0 Feb08 ?&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 00:00:00 &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&lt;b&gt;node&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; app.js&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;ubuntu &amp;nbsp; 21102 21018&amp;nbsp; 0 03:55 pts/0&amp;nbsp; &amp;nbsp; 00:00:00 grep --color=auto &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&lt;b&gt;node&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;span style=&quot;color: #444444;&quot;&gt;//해당 프로세스 종료시키기&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;ubuntu@ip-172-31-13-41:~/d2dessay$ kill -9 &lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: red;&quot;&gt;20252&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/255307731325114223/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2016/02/blog-post.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/255307731325114223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/255307731325114223'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2016/02/blog-post.html' title='터미널에서 띄운 서버 앱이 터미널 세션 종료시 같이 죽는 문제 '/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-6759646823123574562</id><published>2016-01-19T22:38:00.001-08:00</published><updated>2016-01-19T22:38:18.490-08:00</updated><title type='text'>SublimeText 핵심 단축키</title><content type='html'>* MAC&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Command + L : 한줄 선택&lt;/div&gt;
&lt;div&gt;
Command + D : 같은 내용 선택 --&amp;gt; 여러번 누르면 계속 같은 걸 선택하게 한다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Command + R : 요소 찾기 : JavaScript 이든 HTML, CSS 이든 다 찾아 줌..&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Command + CTRL 화살표 위아래 : 위아래로 줄을 바꿔준다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/6759646823123574562/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2016/01/sublimetext.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/6759646823123574562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/6759646823123574562'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2016/01/sublimetext.html' title='SublimeText 핵심 단축키'/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-4785670255295015513</id><published>2015-10-26T22:36:00.000-07:00</published><updated>2015-10-26T22:36:51.809-07:00</updated><title type='text'>Log 작성 시 유용한 툴: Thread 객체</title><content type='html'>&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &lt;span class=&quot;s1&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;void&lt;/span&gt; log(&lt;span class=&quot;s1&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;level&lt;/span&gt;, String &lt;span class=&quot;s2&quot;&gt;msg&lt;/span&gt;) {&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s1&quot;&gt;if&lt;/span&gt;(&lt;span class=&quot;s3&quot;&gt;DEBUG&lt;/span&gt;) {&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Thread &lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;thread&lt;/span&gt; &lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;= Thread.currentThread(); &amp;nbsp; &amp;nbsp; &amp;nbsp;// &amp;lt;- 이와같이 Thread 객체를 이용하면&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String &lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;threadName&lt;/span&gt; &lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;= &lt;span class=&quot;s2&quot;&gt;thread&lt;/span&gt;.getName(); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// 현재 Thread 이름&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String&amp;nbsp; &lt;span class=&quot;s2&quot;&gt;fileName&lt;/span&gt; &lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;= &lt;span class=&quot;s2&quot;&gt;thread&lt;/span&gt;.getStackTrace()[4].getFileName(); &amp;nbsp;// 현재 로그가 찍히는 file 이름&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s1&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;nLine&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;= &lt;span class=&quot;s2&quot;&gt;thread&lt;/span&gt;.getStackTrace()[4].getLineNumber(); &amp;nbsp; &amp;nbsp; // 현재 로그가 찍히는 줄넘버 까지 다 알수 있음.&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s1&quot;&gt;if&lt;/span&gt;(&lt;span class=&quot;s2&quot;&gt;fileName&lt;/span&gt;.length() &amp;gt; 20) {&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s2&quot;&gt;fileName&lt;/span&gt; = &lt;span class=&quot;s2&quot;&gt;fileName&lt;/span&gt;.substring(0, 20);&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String &lt;span class=&quot;s2&quot;&gt;strLog&lt;/span&gt; = String.format(&lt;span class=&quot;s4&quot;&gt;&quot;%s:%-10s[%-20s %5d]%s\n&quot;&lt;/span&gt;, &lt;span class=&quot;s3&quot;&gt;TAG&lt;/span&gt;, &lt;span class=&quot;s2&quot;&gt;threadName&lt;/span&gt;, &lt;span class=&quot;s2&quot;&gt;fileName&lt;/span&gt;, &lt;span class=&quot;s2&quot;&gt;nLine&lt;/span&gt;, &lt;span class=&quot;s2&quot;&gt;msg&lt;/span&gt;);&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s1&quot;&gt;switch&lt;/span&gt;(&lt;span class=&quot;s2&quot;&gt;level&lt;/span&gt;) {&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;s4&quot;&gt;&#39;D&#39;&lt;/span&gt;:&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Log.d(&lt;span class=&quot;s3&quot;&gt;TAG&lt;/span&gt;, &lt;span class=&quot;s2&quot;&gt;strLog&lt;/span&gt;);&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s1&quot;&gt;break&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;s4&quot;&gt;&#39;E&#39;&lt;/span&gt;:&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Log.e(&lt;span class=&quot;s3&quot;&gt;TAG&lt;/span&gt;, &lt;span class=&quot;s2&quot;&gt;strLog&lt;/span&gt;);&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s1&quot;&gt;break&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;s4&quot;&gt;&#39;W&#39;&lt;/span&gt;:&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Log.w(&lt;span class=&quot;s3&quot;&gt;TAG&lt;/span&gt;, &lt;span class=&quot;s2&quot;&gt;strLog&lt;/span&gt;);&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s1&quot;&gt;break&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;s4&quot;&gt;&#39;I&#39;&lt;/span&gt;:&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Log.i(&lt;span class=&quot;s3&quot;&gt;TAG&lt;/span&gt;, &lt;span class=&quot;s2&quot;&gt;strLog&lt;/span&gt;);&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s1&quot;&gt;break&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;s4&quot;&gt;&#39;V&#39;&lt;/span&gt;:&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Log.v(&lt;span class=&quot;s3&quot;&gt;TAG&lt;/span&gt;, &lt;span class=&quot;s2&quot;&gt;strLog&lt;/span&gt;);&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;s1&quot;&gt;break&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;}&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/4785670255295015513/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2015/10/log-thread.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/4785670255295015513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/4785670255295015513'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2015/10/log-thread.html' title='Log 작성 시 유용한 툴: Thread 객체'/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-1678610799213792189</id><published>2015-10-18T22:33:00.001-07:00</published><updated>2015-10-18T22:33:41.319-07:00</updated><title type='text'>https://docs.google.com/forms/d/1IEvueB5AySe2n8AfiRLQwEnGoZ75aIkydVb5Az2hFsQ/edit</title><content type='html'>https://docs.google.com/forms/d/1IEvueB5AySe2n8AfiRLQwEnGoZ75aIkydVb5Az2hFsQ/edit</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/1678610799213792189/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2015/10/httpsdocsgooglecomformsd1ievueb5ayse2n8.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/1678610799213792189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/1678610799213792189'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2015/10/httpsdocsgooglecomformsd1ievueb5ayse2n8.html' title='https://docs.google.com/forms/d/1IEvueB5AySe2n8AfiRLQwEnGoZ75aIkydVb5Az2hFsQ/edit'/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-8320061969364138512</id><published>2015-10-03T22:08:00.005-07:00</published><updated>2015-10-03T22:08:57.397-07:00</updated><title type='text'>안드로이드 키보드 호출 option: adjustPan, adjustResize</title><content type='html'>안드로이드 키보드 호출 시 가장 중요한 두 옵션이다. (설정은 manifest의 해당 activity에서 하면 된다.)&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Ex)&amp;nbsp;&lt;span style=&quot;background-color: white; font-family: Menlo; font-size: 12pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: navy; font-family: Menlo; font-size: 12pt; font-weight: bold;&quot;&gt;activity &lt;/span&gt;&lt;span style=&quot;color: #660e7a; font-family: Menlo; font-size: 12pt; font-weight: bold;&quot;&gt;android&lt;/span&gt;&lt;span style=&quot;color: blue; font-family: Menlo; font-size: 12pt; font-weight: bold;&quot;&gt;:name=&lt;/span&gt;&lt;span style=&quot;color: green; font-family: Menlo; font-size: 12pt; font-weight: bold;&quot;&gt;&quot;.activities.BoardActivity&quot; &lt;/span&gt;&lt;span style=&quot;color: #660e7a; font-family: Menlo; font-size: 12pt; font-weight: bold;&quot;&gt;android&lt;/span&gt;&lt;span style=&quot;color: blue; font-family: Menlo; font-size: 12pt; font-weight: bold;&quot;&gt;:windowSoftInputMode=&lt;/span&gt;&lt;span style=&quot;color: green; font-family: Menlo; font-size: 12pt; font-weight: bold;&quot;&gt;&quot;adjustPan&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: Menlo; font-size: 12pt;&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: navy; font-family: Menlo; font-size: 12pt; font-weight: bold;&quot;&gt;activity&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: Menlo; font-size: 12pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white; font-family: Menlo; font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Menlo;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;이 두 옵션의 가장 큰 차이는 한마디로 키보드의 높이만큼 올라가서 가려지는 부분을 허용하겠느냐, 말겠느냐의 차이라 볼 수 있다.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Menlo;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Menlo;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;adjustPan 은 쿨하게 가려버리라는 것이고, (즉, 가려져도 상관없다.)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Menlo;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;adjustResize 는 한마디로 &quot;리사이즈&quot; 해서라도 가려지는 부분이 없도록 다 보이게 하라는 의미이다. (가려지는 부분이 있으면 안된다.)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Menlo;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Menlo;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;따라서, pan 으로 설정하면 각 UI 컴포넌트(즉,뷰(View)들)의 사이즈 변화가 없고, Resize로 설정하면 View 들의 높이가 줄어들게 된다.(키보드의 높이만큼 뷰들이 나누어서 크기가 줄어든다고 생각하면 됨)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Menlo;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/8320061969364138512/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2015/10/option-adjustpan-adjustresize.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/8320061969364138512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/8320061969364138512'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2015/10/option-adjustpan-adjustresize.html' title='안드로이드 키보드 호출 option: adjustPan, adjustResize'/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-8848198119093595740</id><published>2015-07-24T00:45:00.003-07:00</published><updated>2015-07-24T00:48:04.841-07:00</updated><title type='text'>Android: OnClick Event 의 하위 뷰(View) 전달</title><content type='html'>&amp;nbsp;LinearLayout, RelativeLayout 등 레이아웃에 OnClickListener를 걸어, 레이아웃을 클릭했을 때 무언가 작동을 하게끔 할때가 있다. 이때 레이아웃의 클릭(터치) 이벤트는 레이아웃 아래의 하위 뷰에 전달이 되어서 그 하위 뷰의 영역만큼 레이아웃의 OnClick Event가 발생하지 않는다....&lt;br /&gt;
&lt;br /&gt;
보통 아래와 같은 case &amp;nbsp;이다..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: white; font-family: Menlo; font-size: 12pt;&quot;&gt;&amp;lt;&lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;LinearLayout&lt;/span&gt;&lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;   &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white; font-family: Menlo; font-size: 12pt;&quot;&gt;&lt;span style=&quot;color: #660e7a; font-weight: bold;&quot;&gt; android&lt;/span&gt;&lt;span style=&quot;color: blue; font-weight: bold;&quot;&gt;:layout_width=&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&quot;0dp&quot;&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;   &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white; font-family: Menlo; font-size: 12pt;&quot;&gt;&lt;span style=&quot;color: #660e7a; font-weight: bold;&quot;&gt; android&lt;/span&gt;&lt;span style=&quot;color: blue; font-weight: bold;&quot;&gt;:layout_height=&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&quot;match_parent&quot;&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;   &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white; font-family: Menlo; font-size: 12pt;&quot;&gt;&lt;span style=&quot;color: #660e7a; font-weight: bold;&quot;&gt; android&lt;/span&gt;&lt;span style=&quot;color: blue; font-weight: bold;&quot;&gt;:id=&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&quot;@+id/llimgBtnShowMenu&quot;&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;   &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white; font-family: Menlo; font-size: 12pt;&quot;&gt;&lt;span style=&quot;color: #660e7a; font-weight: bold;&quot;&gt; android&lt;/span&gt;&lt;span style=&quot;color: blue; font-weight: bold;&quot;&gt;:gravity=&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&quot;bottom|center_horizontal&quot;&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;   &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white; font-family: Menlo; font-size: 12pt;&quot;&gt;&lt;span style=&quot;color: #660e7a; font-weight: bold;&quot;&gt; android&lt;/span&gt;&lt;span style=&quot;color: blue; font-weight: bold;&quot;&gt;:layout_weight=&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&quot;1&quot;&lt;/span&gt;&amp;gt;

    &amp;lt;&lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;ImageButton&lt;/span&gt;&lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;       &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white; font-family: Menlo; font-size: 12pt;&quot;&gt;&lt;span style=&quot;color: #660e7a; font-weight: bold;&quot;&gt;      android&lt;/span&gt;&lt;span style=&quot;color: blue; font-weight: bold;&quot;&gt;:id=&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&quot;@+id/imgBtnShowMenu&quot;&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;       &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white; font-family: Menlo; font-size: 12pt;&quot;&gt;&lt;i&gt;&lt;u&gt;&lt;span style=&quot;color: #e06666;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;      android&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;:clickable=&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;/i&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;i&gt;&lt;u&gt;&lt;span style=&quot;color: #e06666;&quot;&gt;&quot;false&quot;&lt;/span&gt;&lt;/u&gt;&lt;/i&gt;&lt;span style=&quot;color: green;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;color: #660e7a; font-weight: bold;&quot;&gt;android&lt;/span&gt;&lt;span style=&quot;color: blue; font-weight: bold;&quot;&gt;:layout_width=&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&quot;13.33dp&quot;&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;       &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white; font-family: Menlo; font-size: 12pt;&quot;&gt;&lt;span style=&quot;color: #660e7a; font-weight: bold;&quot;&gt;      android&lt;/span&gt;&lt;span style=&quot;color: blue; font-weight: bold;&quot;&gt;:layout_height=&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&quot;10.67dp&quot;&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;       &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white; font-family: Menlo; font-size: 12pt;&quot;&gt;&lt;span style=&quot;color: #660e7a; font-weight: bold;&quot;&gt;      android&lt;/span&gt;&lt;span style=&quot;color: blue; font-weight: bold;&quot;&gt;:layout_marginBottom=&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&quot;18dp&quot;&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;       &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white; font-family: Menlo; font-size: 12pt;&quot;&gt;&lt;span style=&quot;color: #660e7a; font-weight: bold;&quot;&gt;      android&lt;/span&gt;&lt;span style=&quot;color: blue; font-weight: bold;&quot;&gt;:background=&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&quot;@drawable/ico_menu&quot; &lt;/span&gt;/&amp;gt;
&amp;lt;/&lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;LinearLayout&lt;/span&gt;&amp;gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white; font-family: Menlo; font-size: 12pt;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white; font-family: Menlo; font-size: 12pt;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white; font-family: Menlo; font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-family: &#39;Apple SD Gothic Neo&#39;; font-size: small; white-space: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white; font-family: Menlo; font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-family: &#39;Apple SD Gothic Neo&#39;; font-size: small; white-space: normal;&quot;&gt;&amp;nbsp; 이것을 막기 위해서는 하위 뷰의 clickable = false 로 해서 클릭 이벤트가 전달이 안되게 하면 레이아웃 전체에 무리없이 클릭 이벤트가 먹는다...&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/8848198119093595740/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2015/07/android-onclick-event-view.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/8848198119093595740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/8848198119093595740'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2015/07/android-onclick-event-view.html' title='Android: OnClick Event 의 하위 뷰(View) 전달'/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-3153851235595759383</id><published>2014-11-22T20:52:00.001-08:00</published><updated>2014-11-22T20:52:13.661-08:00</updated><title type='text'>Java 날짜 및 시간 처리</title><content type='html'>&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&lt;br /&gt;
Calendar today = Calendar.getInstance();&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;br /&gt;
int year = today.get(Calendar.YEAR);&lt;br /&gt;
int month = today.get(Calendar.MONTH);&lt;br /&gt;
int day = today.get(Calendar.DAY_OF_MONTH);&lt;br /&gt;
int hour = today.get(Calendar.HOUR_OF_DAY);&lt;br /&gt;
&lt;br /&gt;
today.setTime(new Date(System.currentTimeMillis()+ 3600000)); &lt;br /&gt;
// 지금으로부터 1시간 후로 시간 세팅 </content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/3153851235595759383/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2014/11/java_22.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/3153851235595759383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/3153851235595759383'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2014/11/java_22.html' title='Java 날짜 및 시간 처리'/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-2551882361198858306</id><published>2014-10-20T22:46:00.001-07:00</published><updated>2014-10-20T22:47:30.864-07:00</updated><title type='text'>Android Library Project 추가</title><content type='html'>&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Android 에 외부 library를 추가하는 방법은&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;1. 일반 jar 라이브러리 파일을 추가하는 법&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;2. 외부 project를 통으로 추가하는 법&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;이렇게 2가지가 있다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;이중 jar파일 추가는 아래의 방법과 같이 하고,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://ggari.tistory.com/153&quot;&gt;http://ggari.tistory.com/153&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;프로젝트를 통체로 추가하는 방법은(라이브러리 프로젝트라 한다.)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;아래와 같이 한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://ch7895.wordpress.com/2012/05/04/andorid-library-project/&quot;&gt;http://ch7895.wordpress.com/2012/05/04/andorid-library-project/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;굳이 이렇게 써 놓는 이유는 2번의 라이브러리 프로젝트를 1번의 방법으로 추가하면&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;몬가 추가된 것처럼 빌드 패쓰에는 정상적으로 잡히는 데, 결국 읽어 오지 못해 에러를 뿜는다..&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;(&lt;u&gt;&lt;span style=&quot;color: red;&quot;&gt;이러한 이유로 &quot;왜 안되지?&quot; 하면서 삽질을 반드시 하게 된다.&lt;/span&gt;&lt;/u&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;그리고 이렇게 라이브러리 프로젝트로 추가된 프로젝트 jar 는 반드시&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;이클립스의 &lt;span style=&quot;color: red;&quot;&gt;&lt;u&gt;&quot;Android Dependencies&quot;&lt;/u&gt;&lt;/span&gt; 라는 폴더 아래에 있어야 한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/2551882361198858306/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2014/10/android-library-project.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/2551882361198858306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/2551882361198858306'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2014/10/android-library-project.html' title='Android Library Project 추가'/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-3483958114665650132</id><published>2014-07-24T02:17:00.000-07:00</published><updated>2014-07-24T02:17:13.622-07:00</updated><title type='text'>SQLiteException 이 catch가 안될 때...</title><content type='html'>키 값이 같은 값은 insert 가 안되고&lt;br /&gt;
SQLiteException 발생해&lt;br /&gt;
catch 문에 handling 하는 로직을 넣으려고 하였으나...&lt;br /&gt;
왠일인지 절대 잡히지 않는다...&lt;br /&gt;
문제는...&lt;br /&gt;
&lt;br /&gt;
아래의 insert 메서드를 쓰면 안되고,&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;try&lt;/span&gt; {&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp;db&lt;/span&gt;.&lt;span style=&quot;color: red;&quot;&gt;insert&lt;/span&gt;(&lt;span class=&quot;s2&quot;&gt;TABLE_USER&lt;/span&gt;,&amp;nbsp;&lt;span class=&quot;s4&quot;&gt;values);&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;Apple-tab-span&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;&lt;/span&gt;&amp;nbsp; &amp;nbsp; isInsertSucceed = &lt;span class=&quot;s1&quot;&gt;true&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;} &lt;span class=&quot;s1&quot;&gt;catch&lt;/span&gt; (SQLiteException e) {&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&amp;nbsp; &amp;nbsp; isInsertSucceed = &lt;span class=&quot;s1&quot;&gt;false&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;}&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
insertOrThrow() 메서드를 써야한다.. &amp;nbsp;(쉣~!)&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;try&lt;/span&gt;&amp;nbsp;{&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp;db&lt;/span&gt;.&lt;span style=&quot;color: red;&quot;&gt;insertOrThrow&lt;/span&gt;(&lt;span class=&quot;s2&quot;&gt;TABLE_USER&lt;/span&gt;,&amp;nbsp;&lt;span class=&quot;s4&quot;&gt;values);&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;Apple-tab-span&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;&lt;/span&gt;&amp;nbsp; &amp;nbsp; isInsertSucceed =&amp;nbsp;&lt;span class=&quot;s1&quot;&gt;true&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;Apple-tab-span&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;&lt;/span&gt;}&amp;nbsp;&lt;span class=&quot;s1&quot;&gt;catch&lt;/span&gt;&amp;nbsp;(SQLiteException e) {&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&amp;nbsp; &amp;nbsp; isInsertSucceed =&amp;nbsp;&lt;span class=&quot;s1&quot;&gt;false&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;Apple-tab-span&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;&lt;/span&gt;}&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/3483958114665650132/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2014/07/sqliteexception-catch.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/3483958114665650132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/3483958114665650132'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2014/07/sqliteexception-catch.html' title='SQLiteException 이 catch가 안될 때...'/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4658374557354851090.post-8264798820718371032</id><published>2014-07-22T03:07:00.003-07:00</published><updated>2014-07-22T03:08:07.224-07:00</updated><title type='text'>이미지 처리.. 사각틀 안에 이미지, 그냥 이미지만 나오게..</title><content type='html'>이미지 처리...&lt;br /&gt;
png 와 jpg ... 의 차이를 모르겠다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
bitmap.compress(CompressFormat.JPG, 100, out);&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
하니까..&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
원래 동그란 이미지인데&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
증명 사진 처럼 네모난 사각 틀 안에 동그란 이미지가 들어가고&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
bitmap.compress(CompressFormat.PNG, 100, out);&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
하니...&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
원하는 형태로 사각 틀 없이 동그란 이미지만 나왔다..&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
무슨 차이일까???&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://memesong.blogspot.com/feeds/8264798820718371032/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://memesong.blogspot.com/2014/07/blog-post.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/8264798820718371032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4658374557354851090/posts/default/8264798820718371032'/><link rel='alternate' type='text/html' href='http://memesong.blogspot.com/2014/07/blog-post.html' title='이미지 처리.. 사각틀 안에 이미지, 그냥 이미지만 나오게..'/><author><name>meme song</name><uri>http://www.blogger.com/profile/06422064989478483578</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>