<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>feb, fav</title>
        <link>https://velog.io/</link>
        <description>Done is better than perfect.</description>
        <lastBuildDate>Mon, 19 Aug 2024 13:05:44 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>feb, fav</title>
            <url>https://velog.velcdn.com/images/d_isbetterthan_p/profile/cdd02bd3-f60d-4906-aa21-fa7c025a4058/image.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. feb, fav. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/d_isbetterthan_p" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[Intellij/slf4j] logger.info() 로그 한글 깨짐 해결 방법]]></title>
            <link>https://velog.io/@d_isbetterthan_p/Intellijslf4j-logger.info-%EB%A1%9C%EA%B7%B8-%ED%95%9C%EA%B8%80-%EA%B9%A8%EC%A7%90-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95</link>
            <guid>https://velog.io/@d_isbetterthan_p/Intellijslf4j-logger.info-%EB%A1%9C%EA%B7%B8-%ED%95%9C%EA%B8%80-%EA%B9%A8%EC%A7%90-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95</guid>
            <pubDate>Mon, 19 Aug 2024 13:05:44 GMT</pubDate>
            <description><![CDATA[<p><a href="https://velog.io/@d_isbetterthan_p/IntellijTomcat-%EB%A1%9C%EA%B7%B8-%ED%95%9C%EA%B8%80-%EA%B9%A8%EC%A7%90-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95-vm-options-%EC%88%98%EC%A0%95-%EC%95%88%EB%90%A0-%EB%95%8C">지난 게시물</a>에서 로그가 한글로 출력되지 않는 문제, 한글이 깨지는 문제의 대부분을 해결하였다. 하지만 딱 하나! 쿼리 결과를 로깅하는 부분에서만 한글이 깨졌다.</p>
<p>처음에는 콘솔 자체에서 한글이 깨졌으니 톰캣, JVM 등의 문제라고 생각했지만, 지난 게시물에서 언급한 방법을 다 거쳤음에도 해결이 되지 않아 다른 방법을 시도하게 되었다.</p>
<h2 id="문제">문제</h2>
<pre><code class="language-java">public Map&lt;String, Object&gt; send(생략, 생략, Map&lt;String, Object&gt; requestData){
    try{
        logger.info(&quot;function request message --&gt; [{}] &quot; , convertMapToJsonString(requestData));
        (생략)
        logger.info(&quot;function response message --&gt; [{}] &quot; , convertMapToJsonString(exportData));
        (생략)</code></pre>
<p>문제가 되는 코드는 이거였다. slf4j Logger와 LoggerFactory를 사용해 로그를 남기는데, 자꾸 한글이 깨지는 거다. 처음에는 <code>convertMapToJsonString()</code> 메서드에서 문제가 생기나, ObjectMapper 객체 설정 때문인가 한참을 들여다 봤는데 아니더라고.</p>
<p>그래서 JSON으로 변환되었을 때 문제인지, Map 객체로 넘어올 때부터 문제인지 파악을 위해 위와 같은 코드 2줄을 추가해 보았다.</p>
<pre><code class="language-java">System.out.println(&quot;convertMapToJsonString(requestData) = &quot; + convertMapToJsonString(requestData));
logger.info(&quot;한글을 남겨 보자&quot;);</code></pre>
<p>그리고 애플리케이션을 실행해 보았더니 soutv로 찍었을 때는 한글이 깨지지 않고, 로그에서는 깨지는 것이 확인되었다. </p>
<blockquote>
<p>2024-08-19 09:50:43.224 [INFO ] [(클래스명).java] send(185) : convertMapToJsonString(requestData) = {(생략) &quot;ITEM&quot;:[{&quot;GOOD_NAME&quot;:&quot;클라우드 구축&quot;,&quot;GOOD_SEQ&quot;:&quot;1&quot;....
2024-08-19 09:50:43.224 [INFO ] [(클래스명).java] send(186) : �ѱ��� ���� ����</p>
</blockquote>
<p>이에 다음과 같은 방법으로 문제를 해결하였다.</p>
<h2 id="해결">해결</h2>
<p>먼저 내가 이미 시도한 방법들</p>
<ol>
<li>JVM 인코딩 설정 추가하기 : <code>-Dfile.encoding=UTF-8</code></li>
<li>Settings &gt; Languages &amp; Frameworks &gt; JVM Logging : Logger slf4j로 지정하기</li>
</ol>
<p>위 방법들로는 해결이 되지 않아 내가 최후에 시도한 방법은 slf4j의 로거 구현체인 <span style="color:red"><strong>Logback</strong></span> 설정을 변경하는 거였다.
할 수 있는 모든 설정들이 UTF-8로 되어 있어 의심조차 하지 않았는데, logback.xml을 확인했더니</p>
<pre><code class="language-xml">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;
&lt;configuration scan=&quot;true&quot; scanPeriod=&quot;3 seconds&quot;&gt;
    &lt;appender name=&quot;(생략)&quot; class=&quot;ch.qos.logback.classic.sift.SiftingAppender&quot;&gt;
        &lt;discriminator&gt;
            &lt;key&gt;logFileName&lt;/key&gt;
            &lt;defaultValue&gt;weblog&lt;/defaultValue&gt;
        &lt;/discriminator&gt;
        &lt;sift&gt;
            &lt;appender class=&quot;ch.qos.logback.core.ConsoleAppender&quot;&gt;
                &lt;encoder&gt;
                    &lt;charset&gt;EUC-KR&lt;/charset&gt;
                    &lt;pattern&gt;%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%F] %M\(%L\) : %m%n&lt;/pattern&gt;
                &lt;/encoder&gt;
            &lt;/appender&gt;
        &lt;/sift&gt;
    &lt;/appender&gt;</code></pre>
<p>이렇게! 인코더의 캐릭터셋이 EUC-KR로 되어 있는 거다.
그래서 <code>&lt;charset&gt;UTF-8&lt;/charset&gt;</code>로 변경한 뒤 애플리케이션을 실행했더니 로그가 깨지지 않았다 !!!
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/2d5a3206-5333-485f-a642-b7a9de496ab1/image.png" alt="">
역시 이리저리 찍어 보는 게 오류 해결에 최고인 것 같다 !!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Intellij/Tomcat] 로그 한글 깨짐 해결 방법 (vm options 수정 안될 때)]]></title>
            <link>https://velog.io/@d_isbetterthan_p/IntellijTomcat-%EB%A1%9C%EA%B7%B8-%ED%95%9C%EA%B8%80-%EA%B9%A8%EC%A7%90-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95-vm-options-%EC%88%98%EC%A0%95-%EC%95%88%EB%90%A0-%EB%95%8C</link>
            <guid>https://velog.io/@d_isbetterthan_p/IntellijTomcat-%EB%A1%9C%EA%B7%B8-%ED%95%9C%EA%B8%80-%EA%B9%A8%EC%A7%90-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95-vm-options-%EC%88%98%EC%A0%95-%EC%95%88%EB%90%A0-%EB%95%8C</guid>
            <pubDate>Tue, 06 Aug 2024 13:58:29 GMT</pubDate>
            <description><![CDATA[<h2 id="문제">문제</h2>
<p>할 수 있는 모든 방법을 다 했는데 로그에서 한글이 깨졌다. 이 게시물은 내가 해결한 다양한 방법들을 기록해 보는 과정이다.</p>
<h2 id="방법-1---vm-options-수정">방법 1 - vm options 수정</h2>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/7e4fd865-26e9-4031-a172-b9862862b764/image.png" alt=""><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/922946fa-c624-409c-94a0-fa46d7d20f77/image.png" alt=""></p>
<p>당연히 제일 먼저! vm options에 아래 코드를 추가해 주었다. 응 안돼~ ㅠ</p>
<pre><code>-Dfile.encoding=UTF-8
-Dconsole.encoding=UTF-8</code></pre><h2 id="방법-2---vm-options-수정-2">방법 2 - vm options 수정 2</h2>
<pre><code>-Duser.language=kr
-Duser.region=KR</code></pre><p>그리고 뒤지고 뒤지다가 위 코드 2개를 더 추가하면 해결 된다는 경우가 있어서 시도해 보았다. 그런데 한글은 안 깨지는데 영어로 나오더라.</p>
<p>대체 kr인데 왜.... 왜....</p>
<h2 id="방법-3---ubuntu-locale-lang-설정">방법 3 - ubuntu locale LANG 설정</h2>
<ol>
<li><p>아래 경로(Microsoft Store)에서 ubuntu를 설치한다.
<a href="https://apps.microsoft.com/detail/9pdxgncfsczv?rtc=1&amp;hl=ko-kr&amp;gl=KR">▶ 다운로드 경로</a></p>
</li>
<li><p>만약 나와 같이 error: 0x8007019e 오류가 난다면, Windows 기능을 켜야 한다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/94600abe-68c3-4ee8-ae31-af50c6a73015/image.png" alt=""></p>
</li>
<li><p>그리고 &#39;<strong>Windows 기능 켜기/끄기</strong>&#39;를 Windows 검색창에 검색해 <strong>Linux용 Windows 하위 시스템</strong>을 찾는다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/9c554add-13a1-4fb2-baab-b308a4e715d2/image.png" alt="">
만약 이미 체크가 되어 있는 경우라면,
1) 체크를 해제한 뒤 확인을 누른다. 서버를 재시작하도록 한다.
2) 다시 접속해 체크한다. 확인을 누르고 서버를 재시작한다.</p>
</li>
<li><p>그렇게 하면 Ubuntu를 다시 실행했을 때, 아래와 같이 화면이 바뀐 것을 알 수 있다. 화면이 바뀌어 UNIX username과 password를 입력하라고 하면 원하는 대로 입력하면 된다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/8a299611-4efd-49bf-b70e-fa22948c3f82/image.png" alt=""></p>
</li>
<li><p>그리고 <strong>locale</strong>을 입력했을 때, 아래와 같이 LANG이 비어 있다면 아래 명령어를 실행해본다.</p>
<pre><code>$ locale
LANG=
LC_CTYPE=&quot;ko_KR.UTF-8&quot;
LC_NUMERIC=&quot;C.UTF-8&quot;
LC_TIME=&quot;C.UTF-8&quot;
LC_COLLATE=&quot;C.UTF-8&quot;
LC_MONETARY=&quot;C.UTF-8&quot;
LC_MESSAGES=&quot;C.UTF-8&quot;
LC_ALL=</code></pre></li>
</ol>
<pre><code>실행 명령어)
sudo apt-get install language-pack-ko
sudo locale-gen ko_KR.UTF-8
sudo dpkg-reconfigure locales</code></pre><p>그리고 명령어를 실행했을 때 아래와 같은 화면이 뜬다면, 엔터를 치면 넘어간다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/2da0e30a-eb8c-465a-b560-941068798c0f/image.png" alt=""></p>
<p>그 다음 locale을 입력했을 때 아래와 같이 화면이 뜬다면 설정이 완료된 것이다. 하하 하지만 이 방법으로는 해결되지 않았다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/645af312-eb85-4672-bb98-ad4f1c618a2d/image.png" alt=""></p>
<h2 id="방법-4---catalinabat-파일-수정">방법 4 - catalina.bat 파일 수정</h2>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/7b1ae5aa-9453-4829-9e87-b4c3f0603269/image.png" alt="">
bin 폴더에 있는 catalina.bat 파일에 아래 코드를 추가했다.</p>
<pre><code>set JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER% &quot;-Dfile.encoding=utf-8&quot;</code></pre><p>역시나 해결이 되지 않았다 하하..
그리고 검색하다 보니 배치 파일을 건드리는 게 좋지 않다는 말이 있어서 이 코드는 뺐다.</p>
<h2 id="해결---loggingproperties-수정">해결 - logging.properties 수정</h2>
<ol>
<li><p>Tomcat 설치 경로/conf/logging.properties 파일을 메모장으로 연다.</p>
</li>
<li><p>아래 코드가 UTF-8로 되어 있다면 전부 <strong>EUC-KR</strong>로 변경한다.</p>
<pre><code>catalina.org.apache.juli.AsyncFileHandler.encoding = EUC-KR
localhost.org.apache.juli.AsyncFileHandler.encoding = EUC-KR
manager.org.apache.juli.AsyncFileHandler.encoding = EUC-KR
host-manager.org.apache.juli.AsyncFileHandler.encoding = EUC-KR
java.util.logging.ConsoleHandler.encoding = EUC-KR</code></pre></li>
<li><p>만약 나와 같이 이미 EUC-KR이라면 혹은 UTF-8로 변경해도 달라지지 않는다면 전부 <strong>주석 처리</strong> 한다.</p>
<pre><code>#catalina.org.apache.juli.AsyncFileHandler.encoding = EUC-KR
#localhost.org.apache.juli.AsyncFileHandler.encoding = EUC-KR
#manager.org.apache.juli.AsyncFileHandler.encoding = EUC-KR
#host-manager.org.apache.juli.AsyncFileHandler.encoding = EUC-KR
#java.util.logging.ConsoleHandler.encoding = EUC-KR</code></pre></li>
<li><p>재실행하니 아래와 같이 한글이 잘 나오는 것을 확인할 수 있다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/3b25967a-e15b-43b0-8b79-d0a897c1d075/image.png" alt=""></p>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Intellij] Maven 빌드 오류 : Since Maven 3.8.1 http repositories are blocked. 해결 방법]]></title>
            <link>https://velog.io/@d_isbetterthan_p/Intellij-Maven-%EB%B9%8C%EB%93%9C-%EC%98%A4%EB%A5%98-Since-Maven-3.8.1-http-repositories-are-blocked.-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95</link>
            <guid>https://velog.io/@d_isbetterthan_p/Intellij-Maven-%EB%B9%8C%EB%93%9C-%EC%98%A4%EB%A5%98-Since-Maven-3.8.1-http-repositories-are-blocked.-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95</guid>
            <pubDate>Tue, 06 Aug 2024 12:59:39 GMT</pubDate>
            <description><![CDATA[<h2 id="문제-1">문제 1</h2>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/c6437d5e-58ab-4f58-a91c-89ee4c5b23d6/image.png" alt=""></p>
<p>com.microsoft.sqlserver:sqljdbc4:pom:4.0 failed to transfer from <a href="http://0.0.0.0/">http://0.0.0.0/</a> during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of maven-default-http-blocker has elapsed or updates are forced. Original error: <span style="color:red">Could not transfer artifact com.microsoft.sqlserver:sqljdbc4:pom:4.0 from/to maven-default-http-blocker (<a href="http://0.0.0.0/">http://0.0.0.0/</a>): Blocked mirror for repositories</span>: [public (<a href="http://windev01:8081/nexus/content/groups/public/">http://windev01:8081/nexus/content/groups/public/</a>, default, releases+snapshots), nexus-3rdparty (<a href="http://windev01:8081/nexus/content/repositories/thirdparty/">http://windev01:8081/nexus/content/repositories/thirdparty/</a>, default, releases+snapshots)]</p>
<p><span style="color:red">Since Maven 3.8.1 http repositories are blocked.</span></p>
<p>Possible solutions:</p>
<ul>
<li>Check that Maven pom files do not contain http repository <a href="http://windev01:8081/nexus/content/groups/public/">http://windev01:8081/nexus/content/groups/public/</a></li>
<li>Check that Maven pom files do not contain http repository <a href="http://windev01:8081/nexus/content/repositories/thirdparty/">http://windev01:8081/nexus/content/repositories/thirdparty/</a></li>
<li>Add a mirror(s) for <a href="http://windev01:8081/nexus/content/groups/public/">http://windev01:8081/nexus/content/groups/public/</a>, <a href="http://windev01:8081/nexus/content/repositories/thirdparty/">http://windev01:8081/nexus/content/repositories/thirdparty/</a> that allows http url in the Maven settings.xml</li>
<li>Downgrade Maven to version 3.8.1 or earlier in settings</li>
</ul>
<p><a href="https://velog.io/@d_isbetterthan_p/Intellij-SVN-%EC%B5%9C%EC%B4%88-%EC%97%B0%EB%8F%99-check-out-%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95-feat.-%EB%AC%B4%ED%95%9C-%EB%A1%9C%EB%94%A9-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0">SVN check out</a>을 겨우 해놓았더니 Maven 오류가 났다 ㅜㅜ
솔루션에 나와 있기도 하고, ReadMe에도 명시되어 있어서 <strong>다운그레이드</strong>를 하기로 했다.</p>
<h2 id="해결-1">해결 1</h2>
<ol>
<li>Maven 3.8.1 버전 이전 버전을 받기 위해 아래 링크에 접속했다.
<a href="https://www.notion.so/240730-0ccc209c08c24855b0cec6cef0170e7a?pvs=4#a2046eae5c2e427abda12bfffe998a38">▶ 다운로드 링크 : Maven 3 archives</a>
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/24babc76-dede-41e7-af38-add170833644/image.png" alt=""><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/a4dca3a4-fa91-4f49-8cf9-84cffbf837bc/image.png" alt=""><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/36ddd04b-b2cb-4ae3-89ba-d8eb39e5e23f/image.png" alt=""></li>
</ol>
<p><strong>3.6.3 버전을 받아 설치</strong>해 주었다.</p>
<hr>
<ol start="2">
<li>Maven <strong>환경 변수 Path 등록</strong>을 해준다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/ce34ed12-53ee-49cc-a7d1-69142f26bd91/image.png" alt=""></li>
</ol>
<p>1) 윈도우 검색창에 &#39;시스템 환경 변수 편집&#39;을 검색한다.
2) 그리고 고급 탭에서 &#39;환경 변수(N)...&#39;를 클릭한다.</p>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/13d2583f-5548-4ebb-9429-d129eac42980/image.png" alt=""></p>
<p>3) Path 변수를 찾아 편집을 클릭한다.</p>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/31c575b9-3c68-430b-a19d-c4809607c7f8/image.png" alt=""></p>
<p>4) &#39;새로 만들기&#39;를 클릭한 다음 apache maven 폴더 경로를 입력해 준다.</p>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/a5798170-a0c3-4714-85aa-b0a198c9f2e4/image.png" alt=""></p>
<p>5) 편집을 끝낸 뒤, maven 버전이 제대로 바뀌었는지 확인하기 위해서 cmd를 열고 아래 명령어를 실행해 본다.</p>
<pre><code>mvn -version</code></pre><p>3.6.3 버전 혹은 자신이 설치한 버전이 확인된다면 제대로 설치/지정된 것이다.</p>
<hr>
<ol start="3">
<li>인텔리제이로 돌아와 <strong>Settings</strong>에서 <strong>Maven home Path</strong> 경로를 잡아준다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/593bf4a3-55e1-42bc-9030-a385dc07f684/image.png" alt="">
Settings → Build, Exedution, Deployment → Build Tools → Maven</li>
</ol>
<hr>
<h2 id="문제-2">문제 2</h2>
<p>그런데 나의 경우 받지 못했던 대부분의 플러그인들이 설치가 되었음에도 아래와 같이 몇몇의 오류가 남아 있었다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/b93a58d2-e571-4ec6-8a59-380818a580c8/image.png" alt="">
[WARNING] The POM for local.ktnet:secutils:jar:1.0.23 is missing, no dependency information available
[WARNING] The POM for (파일명):jar:1.3.0 is missing, no dependency information available
[WARNING] The POM for (파일명):jar:0.1 is missing, no dependency information available</p>
<p><a href="https://atoz-develop.tistory.com/entry/JAVA-%EA%B0%9C%EB%B0%9C-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95-JDK-11-IntelliJ-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EA%B8%B0%EB%B3%B8-%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95">▶ 참고 경로</a></p>
<p>위 블로그 경로를 참고해 VM OPTION 수정을 해주었으나, 최종적으로 아래와 같은 오류를 맞닥뜨렸다.
<span style="color:red">the sdk is not specified for module unipost-unitax-interface</span></p>
<h2 id="해결-2">해결 2</h2>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/f8632d6a-fe9b-40d6-a185-ca2fa301384f/image.png" alt="">1. SDK와 관련된 모든 방법을 뒤지다가 Project Structure SDKs의 <strong>JDK home path</strong>에 오류가 나 있는 것을 발견했다.</p>
<hr>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/6c7a9637-2f52-47a9-b3e0-976f5653b597/image.png" alt="">
2. JDK home path의 폴더 아이콘을 클릭하니 <strong>detected SDKs</strong>라는 옵션이 떠서 클릭해 주었다.</p>
<hr>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/2a2593ae-59ad-40a7-8e3b-ecadb14c1342/image.png" alt=""><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/f84106c5-c5ca-44e4-8312-1b1a7b7fab87/image.png" alt=""></p>
<ol start="3">
<li>오류가 여전히 계속되어 또 찾아 보다가ㅜ</li>
</ol>
<p><strong>프로젝트별로 SDK를 설정</strong>해줄 수 있다는 것을 알게 되었다.</p>
<p>Project Structre → Project Settings → Project에 들어가 보니 SDK가 <strong>No SDK</strong>로 되어 있더라.
아마도 OPENJDK를 다운 받고 설치하기 전에 이 프로젝트를 먼저 만들어서 제대로 경로 지정이 안 되어 생긴 문제인 것 같았다.</p>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/02150279-1c4a-47a7-86dc-42b913842e2b/image.png" alt="">
이렇게 경로 지정까지 마저 해주고 나니 인텔리제이 왼쪽 하단에서 빌드하지 못했던 것들을 빌드하는 것을 확인할 수 있었다.</p>
<p>결론적으로는 SDK 버전이 안 맞는 게 있어서 jdk를 바꾸어 주어야 했지만,
위 방법 대로</p>
<blockquote>
<ol>
<li>환경 변수 지정</li>
<li>프로젝트/모듈 SDK 지정</li>
<li>JDK home path 바르게 지정</li>
</ol>
</blockquote>
<p>해주니 말끔히 해결되었다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Intellij] SVN 최초 연동, checkout 하는 방법 (feat. 무한 로딩 해결)]]></title>
            <link>https://velog.io/@d_isbetterthan_p/Intellij-SVN-%EC%B5%9C%EC%B4%88-%EC%97%B0%EB%8F%99-check-out-%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95-feat.-%EB%AC%B4%ED%95%9C-%EB%A1%9C%EB%94%A9-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@d_isbetterthan_p/Intellij-SVN-%EC%B5%9C%EC%B4%88-%EC%97%B0%EB%8F%99-check-out-%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95-feat.-%EB%AC%B4%ED%95%9C-%EB%A1%9C%EB%94%A9-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0</guid>
            <pubDate>Mon, 05 Aug 2024 14:47:14 GMT</pubDate>
            <description><![CDATA[<h2 id="해결">해결</h2>
<ol>
<li><p><strong>Get from VCS</strong>를 클릭한다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/5e79e7f8-7f20-4355-a9a2-ba725372d269/image.png" alt=""></p>
</li>
<li><p>컨트롤 창의 Version control에서 <strong>Subversion</strong>을 선택한다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/2d69e7f3-ad11-4b1c-a7f6-f2fd26d69e2d/image.png" alt=""></p>
</li>
<li><p>Repositories를 선택할 수 있는 창이 뜨면, +를 클릭한 뒤 URL을 입력해 준다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/720c782a-a249-469b-a7ae-bcba8101ef94/image.png" alt=""></p>
</li>
<li><p>그렇게 ok를 눌렀는데 다음과 같은 화면을 마주한다면, 필요한 파일이 없다는 뜻이므로
<a href="https://www.visualsvn.com/downloads/">▶ 다운로드 홈페이지</a>
위 경로로 가서 <strong>Apache Subversion command-line tools</strong>를 다운로드한다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/8dd2e650-a2f7-43dd-a9c5-2f219c74275b/image.png" alt=""><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/b054bf32-38af-41fd-a698-f03f5c2934ba/image.png" alt=""></p>
</li>
<li><p>다운로드 후 설치하면 다음과 같은 화면을 마주할 수가 있다. 이때 <strong>Customize를 클릭, All settiongs...를 클릭</strong>한다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/6e0cf0ef-0fb1-4513-a9a2-65db1e6f946b/image.png" alt=""></p>
</li>
<li><p>Settings 화면에서 <strong>Version Control → Subversion → Path to Subversion Executable : svn.exe</strong>를 선택한다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/5e557624-e482-4836-99a5-56b4ac77fc38/image.png" alt=""></p>
</li>
<li><p>세팅을 저장했는데, <span style="color:red">No appropriate protocol (protocol is disabled or cipher suites are inappropriate)</span>이라는 오류가 떴다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/119055bb-b8ce-4cd7-91d4-276169d0eb11/image.png" alt=""></p>
</li>
</ol>
<p>찾아 보니 프로젝트를 생성하지 않고 인텔리제이를 설치한 다음 바로 SVN로 Check Out을 하려다 보니, JDK가 없다는 것도 몰랐던 거다.</p>
<p>이를 해결하기 위해 임시 프로젝트를 하나 만들면서 JDK를 다운로드 해주었다. 그런데도 묵묵 부답.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/a62fa981-141e-499d-9408-930f4c613456/image.png" alt=""></p>
<ol start="7">
<li>검색을 해 보니 <strong>vm option</strong>에 아래 코드를 추가해 주어야 한다고 하더라.<blockquote>
<p>-Djdk.tls.client.protocols=TLSv1.2</p>
</blockquote>
</li>
</ol>
<p>jvm 버전이 64bit라면 idea64.exe.vmoptions를 수정해 주어야 한다고 해서 HELP → About에서 jvm 버전을 확인했다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/4f6b5b3f-6ac2-4690-86bd-3fa7660bc639/image.png" alt=""></p>
<p>그 다음 위 코드를 추가하고 저장한 뒤, 컴퓨터를 재부팅했다.</p>
<ol start="8">
<li><del>그래도 문제가 해결되지 않아^^;;</del> <strong>인바운드/아웃바운드</strong> 규칙을 확인했다. windows defender 방화벽 → 고급 설정에 들어가 <strong>443 포트</strong>에 대한 규칙을 추가해 준다.
<a href="https://www.coolmessenger.com/front_n/support/faq_view.asp?choice=1&amp;TableName=cool_Faq_new&amp;page=1&amp;num=19&amp;idx=298&amp;Search=&amp;SearchString=">▶ 참고 링크</a></li>
</ol>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/945a2540-e94c-47b2-a5e0-acf3519b04f8/image.png" alt=""><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/0a6eb950-e6d3-4779-b261-36aff975417f/image.png" alt=""></p>
<ol start="9">
<li>이후 Get from Version Control 창으로 다시 돌아오면 아래와 같이 Loading...이라고 바뀐 화면을 볼 수 있다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/a9fe0abb-2d43-4f9c-9dce-00667375e79d/image.png" alt="">
이때, 아래와 같이 <strong>check out을 진행</strong>한다.</li>
</ol>
<blockquote>
<ol>
<li>svn 주소 우클릭</li>
<li>check out 클릭</li>
<li>저장 장소 지정 후 update 버전, 깊이 등을 선택</li>
<li>okay 클릭</li>
</ol>
</blockquote>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/4a9ddf0c-f52d-439c-80cf-d048583dc16e/image.png" alt="">내 경우 Update/Switch to revision은 <strong>HEAD</strong>, Depth는 <strong>Infinity</strong>로 설정했다. 그리고 Copy Format은 <strong>1.8 format</strong>으로 선택했다.
가장 최신 버전으로, 전체 범위를, Command Line Client Only로 가져오겠다는 뜻이다.</p>
<hr>
<ol start="10">
<li>내 경우에는 이미 다른 프로젝트를 JDK 다운 받는다고 만든 상황이라 연동이 완료된 후에도 프로젝트가 새로 열리지 않았다.</li>
</ol>
<p>그럴 때에는 File → Open → (svn 지정 경로)로 가서 직접 해당 파일을 열어 주면 위와 같이 연동이 시작된 모습을 볼 수가 있다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/dbc5c0a5-2bbf-4b44-b483-0a5a90f8153a/image.png" alt=""><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/354c001c-38dc-47b4-b6d3-96fc537a5a92/image.png" alt=""></p>
<ol start="11">
<li>그런데 문제는 체크아웃이 무한 로딩만 지속 되고 진행이 안 되는 거다. 처음에는 체크 아웃 할 코드가 많아서 그런가 생각했는데, 이게 에러더라고.
<a href="https://chocoboy.tistory.com/238">▶ 참고 링크</a></li>
</ol>
<p>나의 경우 처음에는! 위 링크에서 안내한 방법대로 <strong>cmd 창을 열어 권한을 부여하는 명령어를 실행</strong>해 봤지만 그래서 뭐 어쩌라고.. 상태..일 뿐이었다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/1f21cb60-1d01-4e58-b7f3-633a42bc0848/image.png" alt=""></p>
<p>결국 무한로딩 중인 Background Tasks를 cancel하고, 체크아웃 옵션(버전, 깊이 등)을 지정하는 것부터 다시 실행했더니 권한 부여가 제대로 되었는지 체크아웃이 진행 되는 것을 볼 수 있었다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/5b30990b-ecb5-474c-b206-05d4a0378c26/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[MYSQL] Error Code: 1418 (HY000) 해결 방법]]></title>
            <link>https://velog.io/@d_isbetterthan_p/MYSQL-Error-Code-1418-HY000-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95</link>
            <guid>https://velog.io/@d_isbetterthan_p/MYSQL-Error-Code-1418-HY000-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95</guid>
            <pubDate>Mon, 05 Aug 2024 13:13:30 GMT</pubDate>
            <description><![CDATA[<h2 id="문제">문제</h2>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/5343c01a-6a5c-40d1-ada8-df68309bc782/image.png" alt=""></p>
<p><span style="color:red">ERROR 1418 (HY000)</span> : This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you <em>might</em> want to use the less safe log_bin_trust_function_creators variable)</p>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/1f893d55-e005-4dd6-b6e7-6b42e6a77889/image.png" alt=""></p>
<p>권한 부여도 잘 했는데 위와 같은 에러가 났다.</p>
<h2 id="해결">해결</h2>
<p>방법은 간단했다.
아래 쿼리를 먼저 실행해 주고, 원래 실행하고자 했던 쿼리를 실행해 주면 된다.</p>
<pre><code class="language-sql">SET GLOBAL log_bin_trust_function_creators=1;</code></pre>
<p>어떤 원리로 문제가 해결되는지 궁금해서 찾아 봤더니,</p>
<p>MySQL에서 <code>CREATE FUNCTION</code> 문을 사용할 때 발생하는 <code>ERROR 1418 (HY000)</code> 에러는 주로 함수가 <code>DETERMINISTIC</code>, <code>NO SQL</code>, 또는 <code>READS SQL DATA</code> 등의 속성을 포함하지 않았기 때문에 발생한다. 이 문제는 <strong>MySQL의 바이너리 로깅</strong>과 관련이 있다.</p>
<p>바이너리 로그는 MySQL 서버가 데이터 변경 작업을 기록하는 방식으로, 복제와 데이터 복구에 사용된다. 저장 프로시저나 함수가 비결정론적이면(즉, 동일한 입력에 대해 항상 동일한 결과를 반환하지 않는다면) 복제된 서버에서 동일한 결과를 보장하기 어렵다. 그래서 MySQL은 함수가 결정론적인지 비결정론적인지 명시하도록 요구한다.</p>
<p><code>SET GLOBAL log_bin_trust_function_creators = 1;</code> 명령어를 실행하면, MySQL 서버에 결정론적이지 않거나 SQL을 읽거나 쓰는 함수도 허용하도록 설정된다. 이렇게 하면 함수가 결정론적이거나 SQL을 사용하지 않는지 확인하지 않고도 함수를 생성할 수 있다.</p>
<ul>
<li><strong>DETERMINISTIC</strong>: 함수가 같은 입력값에 대해 항상 같은 결과를 반환함을 보장한다.</li>
<li><strong>NO SQL</strong>: 함수가 SQL문을 포함하지 않음을 나타낸다.</li>
<li><strong>READS SQL DATA</strong>: 함수가 SQL을 읽지만 데이터를 변경하지 않음을 나타낸다.</li>
</ul>
<p>이 속성들 중 하나를 포함하지 않은 함수는 기본 설정에서는 바이너리 로그에 기록되지 않기 때문에, 이를 허용하려면 <code>log_bin_trust_function_creators</code> 변수를 1로 설정해야 한다.</p>
<p>이 설정을 적용하면, 결정론적이지 않거나 SQL을 포함하는 함수를 생성할 때 발생하는 에러를 피할 수 있다. 하지만, 이 설정을 사용하면 데이터 일관성 및 복제 관련 문제를 주의해야 한다.</p>
<p>~~라고 한다.</p>
<p><strong>요약하자면,</strong>
log_bin_trust_function_creators 변수를 설정함으로써 MySQL이 함수의 결정론적 특성을 확인하지 않게 하고, 그 결과 함수 생성 시 발생하는 에러를 피할 수 있다는 것이다.</p>
<p>만약 SQL 쿼리를 실행하지 못하는 상황이라면, my.ini 또는 my.cnf 파일의 [mysqld] 하위에 <code>log_bin_trust_function_creators = 1</code>를 추가한 뒤 서버를 재실행 하면 해결된다고 한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[MYSQL] Error Code: 1046. 해결 방법]]></title>
            <link>https://velog.io/@d_isbetterthan_p/MYSQL-Error-Code-1046.-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95</link>
            <guid>https://velog.io/@d_isbetterthan_p/MYSQL-Error-Code-1046.-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95</guid>
            <pubDate>Mon, 05 Aug 2024 12:52:28 GMT</pubDate>
            <description><![CDATA[<h2 id="문제">문제</h2>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/cf6be6c1-11ae-4eb1-a616-596d74226a55/image.png" alt=""></p>
<p><span style="color:red">Error Code: 1046.</span> No database selected Select the default DB to be used by double-clicking its name in the SCHEMAS list in the sidebar.</p>
<p>create 문을 실행하는 와중에 위와 같은 에러가 발생했다.</p>
<h2 id="해결">해결</h2>
<ol>
<li><p><code>create table DB명.테이블명();</code>로 수정한 쿼리를 실행한다.</p>
</li>
<li><p>하지만 위와 같은 방법은 너무 귀찮다. 따라서 <strong>생성할 DB를 SCHEMAS 목록에서 찾아 기본 스키마로</strong> 잡아준다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/1e73a96e-398c-4694-aea9-0ae7aa63fdd5/image.png" alt="">
이렇게 Set as Default Schema를 클릭해 주면, 오류가 났던 쿼리를 재실행했을 때 문제가 없어진 것을 확인할 수 있다.</p>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[하드디스크에서 인증서 검색되지 않을 때 해결 방법 (feat. 인증서 가져오기 마법사)]]></title>
            <link>https://velog.io/@d_isbetterthan_p/%ED%95%98%EB%93%9C%EB%94%94%EC%8A%A4%ED%81%AC%EC%97%90%EC%84%9C-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EA%B2%80%EC%83%89%EB%90%98%EC%A7%80-%EC%95%8A%EC%9D%84-%EB%95%8C-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95-feat.-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0-%EB%A7%88%EB%B2%95%EC%82%AC</link>
            <guid>https://velog.io/@d_isbetterthan_p/%ED%95%98%EB%93%9C%EB%94%94%EC%8A%A4%ED%81%AC%EC%97%90%EC%84%9C-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EA%B2%80%EC%83%89%EB%90%98%EC%A7%80-%EC%95%8A%EC%9D%84-%EB%95%8C-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95-feat.-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0-%EB%A7%88%EB%B2%95%EC%82%AC</guid>
            <pubDate>Mon, 05 Aug 2024 12:37:37 GMT</pubDate>
            <description><![CDATA[<h2 id="문제">문제</h2>
<p>인증서 가져오기 마법사를 실행해 인증서 파일을 설치했는데도 <strong>인증서 선택창 하드디스크</strong> 옵션에서 검색이 되지 않는다면 다음과 같은 방법을 시도해 보자.</p>
<h2 id="해결">해결</h2>
<ol>
<li><p>아래와 같이 <strong>C드라이브 사용자 경로</strong>로 이동한다.</p>
<blockquote>
<p>C:\Users(사용자명)</p>
</blockquote>
</li>
<li><p>보기 &gt; 체크 표시 &gt; <strong>숨긴 항목</strong>을 클릭한다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/34fec240-e357-4a92-8ce1-5168be65d6b5/image.png" alt=""></p>
</li>
<li><p><strong>AppData</strong> 폴더를 클릭한다.</p>
</li>
<li><p>아래 경로에 만든 인증서를 붙여 넣는다.
만약 NPKI 폴더가 없다면 LocalLow에 직접 만들면 된다. 간단!</p>
<blockquote>
<p>C:\Users(사용자명)\AppData\LocalLow\NPKI</p>
</blockquote>
</li>
<li><p>4번까지 따라했는데도 인증서가 검색되지 않는다면 아래 방법을 추가로 해보자.
① NPKI 폴더 하위에 yessign 폴더를 생성한다.
② 그 하위에 USER라는 폴더를 한 번 더 생성한다.
③ 최종 경로 &#39;C:\Users(사용자명)\AppData\LocalLow\NPKI\yessign\USER&#39;로 인증서를 옮긴다.</p>
</li>
</ol>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/a3427374-c915-4730-b302-7c16f00ea0df/image.png" alt=""></p>
<p>내 경우에는 위와 같은 경로에 인증서를 옮겼더니 인증서가 검색되었다. 만약 발급기관이 yessign이 아닌 다른 곳이라면 그 이름으로 지정하고 USER 폴더를 만들어 주면 된다.</p>
<p>내 개인 노트북에는 아래와 같이 다양한 발급기관의 인증서가 있는 걸 확인할 수 있었다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/1ce8c453-feb2-4b20-ae4b-c90b3f554758/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[MYSQL] PowerShell, 레지스트리 편집기로 IE 보안 강화 구성 해제하기]]></title>
            <link>https://velog.io/@d_isbetterthan_p/MYSQL-PowerShell-%EB%A0%88%EC%A7%80%EC%8A%A4%ED%8A%B8%EB%A6%AC-%ED%8E%B8%EC%A7%91%EA%B8%B0%EB%A1%9C-IE-%EB%B3%B4%EC%95%88-%EA%B0%95%ED%99%94-%EA%B5%AC%EC%84%B1-%ED%95%B4%EC%A0%9C%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@d_isbetterthan_p/MYSQL-PowerShell-%EB%A0%88%EC%A7%80%EC%8A%A4%ED%8A%B8%EB%A6%AC-%ED%8E%B8%EC%A7%91%EA%B8%B0%EB%A1%9C-IE-%EB%B3%B4%EC%95%88-%EA%B0%95%ED%99%94-%EA%B5%AC%EC%84%B1-%ED%95%B4%EC%A0%9C%ED%95%98%EA%B8%B0</guid>
            <pubDate>Tue, 30 Jul 2024 13:59:30 GMT</pubDate>
            <description><![CDATA[<h2 id="문제">문제</h2>
<p>원래는 서버 관리자를 통해 IE 보안 강화 구성을 해제해야 했는데, 사내 매뉴얼에 나와 있는 건 구버전이었고 내가 <a href="https://velog.io/@d_isbetterthan_p/MYSQL-%EC%9B%90%EA%B2%A9-%EB%8D%B0%EC%8A%A4%ED%81%AC%ED%86%B1-%EC%84%9C%EB%B2%84-Windows-10-%EC%9D%B4%EC%83%81%EC%9D%BC-%EB%95%8C-%EC%84%9C%EB%B2%84%EA%B4%80%EB%A6%AC%EC%9E%90-%EC%84%A4%EC%B9%98-%EB%B0%A9%EB%B2%95-RSAT">직접 추가한 RSAT</a>에서는 서버를 추가하는 과정이 너무 복잡했다.</p>
<p>그리고 Internet Explorer에 직접 접속해 아래와 같은 경로를 따라가 보았지만 &#39;보안 강화 구성&#39;은 찾아볼 수가 없었다.</p>
<blockquote>
<ol>
<li>서버에 로그인:
원격 서버에 물리적으로 접근하거나 원격 데스크톱을 통해 로그인합니다.</li>
<li>Internet Explorer 열기:
Internet Explorer를 엽니다.</li>
<li>도구 메뉴 열기:
오른쪽 상단의 톱니바퀴 아이콘을 클릭하여 <strong>&quot;인터넷 옵션&quot;</strong>을 선택합니다.</li>
<li>보안 탭으로 이동:
&quot;보안&quot; 탭으로 이동합니다.</li>
<li>보안 강화 구성을 조정:</li>
</ol>
<p><strong>&quot;보안 강화 구성&quot;</strong>을 클릭합니다.
<strong>&quot;서버에서 보안 강화 구성 사용 안 함&quot;</strong>을 선택합니다.
6. 적용 및 확인:
<strong>&quot;적용&quot;</strong>을 클릭한 후 <strong>&quot;확인&quot;</strong>을 클릭하여 변경 사항을 저장합니다.</p>
</blockquote>
<p>그래서 마지막 방법인 <strong>레지스트리 편집</strong>을 시도했다.</p>
<h2 id="해결">해결</h2>
<ol>
<li><p><code>Win + R</code>을 눌러 실행 창을 열고 <strong>regedit</strong>을 입력해 레지스트리 편집기를 연다.</p>
</li>
<li><p>그리고 아래 경로로 이동한다.</p>
<pre><code>HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\Zones</code></pre></li>
<li><p>만약 이미지와 같이 <strong>Zones</strong>라는 폴더가 존재하지 않는다면, 직접 생성한다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/7b470eed-f5ab-4b57-a23b-52f60ff4da9d/image.png" alt=""></p>
</li>
</ol>
<blockquote>
<ol>
<li>우클릭</li>
<li>새로 만들기 &gt; 키(K) 클릭</li>
<li>&#39;Zones&#39;로 Rename</li>
</ol>
</blockquote>
<ol start="4">
<li>그리고 Zones 폴더 하위에 <strong>0, 1, 2, 3, 4 폴더</strong>(생성 방법 Zones와 동일)를 만든다.
0 (My Computer)
1 (Local Intranet)
2 (Trusted Sites)
3 (Internet)
4 (Restricted Sites</li>
</ol>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/334c4bd3-0328-4a36-8b6a-abee2ad64643/image.png" alt=""></p>
<ol start="5">
<li>그리고 각 폴더 하위에 <strong>&#39;1400&#39;을 추가하고 값으로 &#39;0&#39;을 설정</strong>한다.</li>
</ol>
<blockquote>
<ol>
<li>우클릭</li>
<li>새로 만들기 &gt; DWORD(32비트) 값(D) 클릭</li>
<li>이름 1400으로 변경</li>
<li>데이터가 0x00000000 (0)임을 확인한다.</li>
</ol>
</blockquote>
<ol start="6">
<li><p>레지스트리 편집기를 닫는다.</p>
</li>
<li><p><strong>PowerShell</strong>을 실행한 뒤, 아래 명령어를 실행한다.</p>
<pre><code>$securityZone = &quot;HKLM:\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\Zones&quot;
$zones = @(0, 1, 2, 3, 4)  # My Computer, Local Intranet, Trusted Sites, Internet, Restricted Sites
</code></pre></li>
</ol>
<p>foreach ($zone in $zones) {
    Set-ItemProperty -Path &quot;$securityZone$zone&quot; -Name &quot;1400&quot; -Value 0
}</p>
<pre><code>만약 위 명령어를 실행했을 때, 다른 반응 없이 `PS C:\Windows\system32&gt;`라고 넘어간다면

8. 아래 명령어를 한 번 더 실행해본다.</code></pre><p>foreach ($zone in $zones) {
    Get-ItemProperty -Path &quot;$securityZone$zone&quot; -Name &quot;1400&quot;
}</p>
<p>```
위 명령어는 각 폴더의 &#39;1400&#39; DWORD 값이 &#39;0&#39;으로 설정되어 있는지 출력하는 용도다.
이를 실행했을 때 <strong>아래와 같이 값이 모두 0으로 출력된다면 레지스트리 설정이 정확히 이루어진 것</strong>이다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/98534130-3923-46ac-aea5-8b5110c6ec1a/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[MYSQL] 원격 데스크톱 서버 : Windows 10 이상일 때 서버관리자 설치 방법 (RSAT)]]></title>
            <link>https://velog.io/@d_isbetterthan_p/MYSQL-%EC%9B%90%EA%B2%A9-%EB%8D%B0%EC%8A%A4%ED%81%AC%ED%86%B1-%EC%84%9C%EB%B2%84-Windows-10-%EC%9D%B4%EC%83%81%EC%9D%BC-%EB%95%8C-%EC%84%9C%EB%B2%84%EA%B4%80%EB%A6%AC%EC%9E%90-%EC%84%A4%EC%B9%98-%EB%B0%A9%EB%B2%95-RSAT</link>
            <guid>https://velog.io/@d_isbetterthan_p/MYSQL-%EC%9B%90%EA%B2%A9-%EB%8D%B0%EC%8A%A4%ED%81%AC%ED%86%B1-%EC%84%9C%EB%B2%84-Windows-10-%EC%9D%B4%EC%83%81%EC%9D%BC-%EB%95%8C-%EC%84%9C%EB%B2%84%EA%B4%80%EB%A6%AC%EC%9E%90-%EC%84%A4%EC%B9%98-%EB%B0%A9%EB%B2%95-RSAT</guid>
            <pubDate>Tue, 30 Jul 2024 13:28:29 GMT</pubDate>
            <description><![CDATA[<h2 id="문제">문제</h2>
<p>원격 데스크톱 서버에서 <strong>서버관리자</strong>에 접속해 변경해 주어야 할 게 있었는데, 아무리 찾아도 없단다. 아예 없대.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/16224920-8386-42f0-a5a9-70105f1d9077/image.png" alt="">관련된 포스팅은 99% 정도 서버관리자가 있다는 전제 하에 진행되어 있어서 나처럼 없는 경우에는 어떻게 해야 하는지 기록해보고자 한다.</p>
<h2 id="해결">해결</h2>
<ol>
<li><p>우선 접속한 원격 데스크톱 서버의 Windows 버전을 확인한다.
시스템 → 정보에 들어가면 아래와 같이 Windows 사양을 확인할 수 있다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/ba274e77-0690-4b35-bc56-41780e24a065/image.png" alt=""></p>
</li>
<li><p>만약 나와 같이 11이거나 10 이상이라면 <del>불행히도</del> ServerManager나 Server-Gui-Shell, Server-Gui-Mgmt-Infra 등을 사용해 서버를 관리할 수 없다.
대신 서버를 관리할 수 있도록 하기 위해 필요한 것이 바로 <strong>RSAT(Remote Server Administration Tools)</strong>이다.</p>
</li>
<li><p>설치 과정은 다음과 같다.</p>
<blockquote>
<p><strong>설정</strong>을 엽니다 (Windows + I).</p>
</blockquote>
</li>
</ol>
<p><strong>앱</strong>을 선택합니다.
<strong>선택적 기능</strong>을 클릭합니다.
<strong>기능 추가</strong> 버튼을 클릭합니다.
목록에서 <strong>&quot;서버 관리자&quot;</strong> 또는 <strong>&quot;서버 관리 도구&quot;</strong>와 관련된 항목을 찾아 설치합니다.**</p>
<ol start="4">
<li>설치가 완료 되면 이렇게 시작 메뉴에서 서버 관리자를 검색해 열 수 있게 된다.
필요한 서버를 추가해 사용하면 끝!
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/f2eb38a1-9c9c-44d4-ba25-e1c6bd229877/image.png" alt=""><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/654980d4-ee57-4e14-9ed9-e445441ced8c/image.png" alt=""></li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[[MYSQL] server 8.0 datadir 변경하기 (feat. 오류 1067)]]></title>
            <link>https://velog.io/@d_isbetterthan_p/MYSQL-server-8.0-datadir-%EB%B3%80%EA%B2%BD%ED%95%98%EA%B8%B0-feat.-%EC%98%A4%EB%A5%98-1067</link>
            <guid>https://velog.io/@d_isbetterthan_p/MYSQL-server-8.0-datadir-%EB%B3%80%EA%B2%BD%ED%95%98%EA%B8%B0-feat.-%EC%98%A4%EB%A5%98-1067</guid>
            <pubDate>Tue, 30 Jul 2024 12:48:15 GMT</pubDate>
            <description><![CDATA[<h2 id="문제">문제</h2>
<p>지난 게시물에 이어 1067 오류를 해결해 나가는 과정을 기록하고자 한다.</p>
<ol>
<li><a href="https://velog.io/@d_isbetterthan_p/MYSQL-my.ini-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0-%EC%84%A4%EC%A0%95-%EA%B0%92-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0-feat.-%EC%98%A4%EB%A5%98-1067">[MYSQL] my.ini 파라미터 설정 값 확인하기 (feat. 오류 1067)</a></li>
<li><a href="https://velog.io/@d_isbetterthan_p/MYSQL-timezoneAsiaSeoul-Error-Code-1298-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95">[MYSQL] time_zone=&#39;Asia/Seoul&#39; : Error Code 1298 해결 방법</a></li>
</ol>
<p>앞선 게시물에서 언급한 것처럼 1067 오류는 대부분 my.ini 파일에 문제가 있을 때 발생한다. 만약 오타를 낸 것도 아니고, 설정에 꼭 필요한 값을 넣은 것뿐인데 문제가 생긴다면 나와 같은 사례가 아닐까 싶다.</p>
<p>나의 경우 time_zone 외 collation, character-set 등을 utf8mb4로 지정하는 과정에서 문제가 생겼고, 값을 변경하려고 갖은 방법을 동원해 봤지만 mysql sever <strong>5.5.3 버전</strong>에서는 불가했다.</p>
<p>결국 utf8mb4가 기본값이 된 8.0 버전을 설치하고 이후에 필요한 것들을 수정/확인하는 방식으로 문제를 해결하였다.</p>
<h2 id="해결">해결</h2>
<p>8.0 버전을 설치하면 utf8mb4가 기본값이라 간단히 해결이 될 것임에도 5.5.3 버전을 고집했던 이유는 다음과 같다.</p>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/d636476f-676d-4c70-914b-148e505a4d3b/image.png" alt=""></p>
<blockquote>
<ol>
<li>사내 DB 설치 매뉴얼이 5.1 버전으로 안내되어 있었다.</li>
<li>하지만 utf8mb4_unicode_ci를 사용해야 했기에 utf8mb4가 추가된 5.5.3 버전을 다운 받게 되었다.</li>
<li>vm이 아닌 로컬에서 8.0 버전을 설치하며 테스트한 결과, <strong>설치 과정에서 몇몇 단계가 빠져</strong> 있었다.</li>
<li>무엇보다 <strong>datedir을 D드라이브로 지정해야</strong> 했는데, 5버전과 달리 8버전은 커스텀이 불가했다. <del>(내가 못 찾았을 수도 있다.)</del></li>
</ol>
</blockquote>
<p>이를 해결한 과정은 다음과 같다.</p>
<ol>
<li><p>MySQL 서버의 <strong>data directory</strong>를 찾는다.
아마도 나처럼 C드라이브에서 찾을 수 있을 것이다.
ProgramData 폴더의 경우 보기를 클릭해 &#39;<strong>숨긴 항목</strong>&#39;을 체크해야 한다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/89cd3e5d-edf2-4818-9fd8-d98ee150672a/image.png" alt=""></p>
</li>
<li><p>그 다음 해당 경로에서 <strong>Data 폴더를 통째로</strong> 잘라내기(<code>ctrl + x</code>)한다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/d3352af9-7a84-43a5-8bfe-f000f6a40a0e/image.png" alt=""></p>
</li>
<li><p>원하는 폴더에 붙여 넣은 뒤 해당 경로를 복사해둔다.
ex. D:\MySQL\MySQL Server 8.0</p>
</li>
<li><p>그 다음 my.ini 파일을 메모장으로 연다.
my.ini 파일은 대부분 basedir, 즉 data directory가 있던 ProgramData 하위 폴더에 있다.
→ <a href="https://velog.io/@d_isbetterthan_p/MYSQL-%EC%9C%88%EB%8F%84%EC%9A%B0-my.ini-%EC%9D%B4-%ED%8C%8C%EC%9D%BC%EC%9D%84-%EC%97%B4-%EC%88%98-%EC%9E%88%EB%8A%94-%EA%B6%8C%ED%95%9C%EC%9D%B4-%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95">my.ini 수정 권한 부여하는 방법</a></p>
</li>
<li><p><code>ctrl + F</code>를 눌러 <strong>datadir</strong>을 검색한다.
이 경로는 mysql의 Path to the database root로 DB 구동 시 my.ini 파일을 읽어 바꾼 datadir 경로를 제대로 읽을 수 있도록 바꾸어 주어야 한다.</p>
</li>
</ol>
<blockquote>
<p>꼭 <strong>\Data</strong>까지 포함해야 한다는 점!
변경 전 : datadir=C:/ProgramData/MySQL/MySQL Server 8.0\Data (설치한 기존 경로)
변경 후 : datadir=D:\MySQL\MySQL Server 8.0\Data (바꾼 그 경로)</p>
</blockquote>
<ol start="6">
<li><p>저장한 후, 윈도우 검색창에 &#39;서비스&#39;를 검색 → MySQL을 재시작 해준다.</p>
</li>
<li><p>datadir을 제대로 인식했는지 확인하는 방법은 아래 쿼리의 실행 결과를 보는 것이다.</p>
<pre><code class="language-sql">show variables like &#39;datadir&#39;;</code></pre>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/a02a7859-12f1-442c-94ac-c7aa95bec1e4/image.png" alt="">
오탈자 없이 수정이 잘 되었다면 위와 같이 변경한 경로로 결과값이 확인될 것이다.</p>
</li>
</ol>
<h3 id="--여담">- 여담</h3>
<p>Data directory로 D드라이브를 설정해 주는 것 외에도 몇 가지 생략된 과정이 있어 5버전을 설치했다고 앞서 말했다.</p>
<p>혹시 나와 같이 의문을 가지는 분들이 있을 것 같아 기록해본다.
내가 선택해야 했던 설정값은 <strong>database usage, approximate number of concurrent connections to the sever, default character set</strong>이었다. </p>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/f9c73717-edab-4264-b35b-ea718f56f9c1/image.png" alt=""><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/b2a8b47d-ff9d-4e95-8a0f-42ee5767f5a9/image.png" alt=""><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/30e9e156-09f4-490e-a5f2-ba61f2ae17ae/image.png" alt=""></p>
<p>8.0.39 버전 설치 시에는 이런 과정들이 생략되어 있었는데, 검색해 보니 다음과 같다고 한다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/433ac2b7-1fac-43d0-ab15-4798a65bea31/image.png" alt="">
결국 내가 선택하려고 했던 모든 설정값들이 8.0 버전에서는 이미 지원하는 거라 골라줄 필요가 없었던 것 <del>.</del></p>
<p>오라클만 쓰다가 mysql을 처음 사용해 봐서 몰랐던 사실들이었고 잘 배웠다!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[MYSQL] my.ini 파라미터 설정 값 확인하기 (feat. 오류 1067)]]></title>
            <link>https://velog.io/@d_isbetterthan_p/MYSQL-my.ini-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0-%EC%84%A4%EC%A0%95-%EA%B0%92-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0-feat.-%EC%98%A4%EB%A5%98-1067</link>
            <guid>https://velog.io/@d_isbetterthan_p/MYSQL-my.ini-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0-%EC%84%A4%EC%A0%95-%EA%B0%92-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0-feat.-%EC%98%A4%EB%A5%98-1067</guid>
            <pubDate>Mon, 29 Jul 2024 14:21:37 GMT</pubDate>
            <description><![CDATA[<h2 id="문제">문제</h2>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/cd167894-5497-4a2d-91ca-cc019620c5c5/image.png" alt="">
my.ini 설정 파일을 업데이트 후 반영하기 위해 MySQL을 중지했다 다시 시작하니 위와 같은 오류가 확인되었다.</p>
<p>찾아 보니 대부분의 문제가 위 설정 파일을 건드렸기 때문에 발생하는 거라고 한다. 파라미터 값들을 하나씩 넣고 빼며 무엇 때문에 문제인지 확인하는 과정에서 굳이 설정값을 추가하지 않아도 디폴트 값이 이미 내가 원하는 값인 경우들이 있다는 걸 아라게 됐다.</p>
<p>중복으로 코드를 적을 경우 오히려 충돌이 일어날 수 있다고 하니, 특정 파라미터 값을 세팅해 주어야 할 경우 아래 명령어를 활용해 확인하고 my.ini를 업데이트하면 좋을 것 같다.</p>
<p>(1067 오류는 결국 내가 설치한 5.0 서버에서는 해결할 수 없는 문제인 걸 알게 되었고, 8.0 버전을 설치함으로써 해결했다.)</p>
<h2 id="해결">해결</h2>
<h3 id="1-default-time-zone">1. default-time-zone</h3>
<pre><code class="language-sql">SELECT @@GLOBAL.time_zone, @@SESSION.time_zone;</code></pre>
<p>time zone을 Asia/Seoul로 지정해야 했고, 대부분의 경우 SYSTEM, SYSTEM이라고 확인 될 거다. 나처럼 바꾸어 주어야 하는 분들은 아래 링크를 참고.
→ <a href="https://velog.io/@d_isbetterthan_p/MYSQL-timezoneAsiaSeoul-Error-Code-1298-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95">[MYSQL] time_zone=&#39;Asia/Seoul&#39; : Error Code 1298 해결 방법</a></p>
<h3 id="2-transaction_isolation">2. transaction_isolation</h3>
<pre><code class="language-sql">show variables like &#39;%isolation&#39;;</code></pre>
<h3 id="3-lower_case_table_names">3. lower_case_table_names</h3>
<pre><code class="language-sql">show variables like &#39;lower_case_table_names&#39;;</code></pre>
<h3 id="4-sql_mode">4. sql_mode</h3>
<pre><code class="language-sql">SELECT @@sql_mode;
SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;</code></pre>
<p>my.ini에서 검색 시에는 sql-mode로 검색해야 한다.
기존 값이 존재해 필요한 값들만 추가로 명시해 주었다.</p>
<h3 id="5-collation-server-characer-set-server">5. collation-server, characer-set-server</h3>
<pre><code class="language-sql">show variables like &#39;%c</code></pre>
<p>character set과 관련한 다양한 값들을 확인할 수 있다.</p>
<p>다른 게시물에서 해결 방법과 관련해 다루겠지만, 5.5.3 버전부터 utf8mb4 지원한다고 해서 현재 값 확인 후 <code>SET collation_connection = &#39;utf8mb4_unicode_ci;</code> 쿼리를 실행했고
(일부지만) 에러가 없이 반영이 된 걸 확인했음에도 my.ini 파일에 관련 파라미터를 넣어주면 에러가 났다.</p>
<h4 id="▼-set-쿼리-실행-전후">▼ SET 쿼리 실행 전/후</h4>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/92831dc7-8010-4375-a10a-6fd5ced36cad/image.png" alt=""><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/bf7ecf24-4185-4774-aadc-bb1c34bfce23/image.png" alt=""></p>
<p>결국 8.0 버전을 설치함으로써 해결하였다. 5버전을 설치할 수 밖에 없었던 datedir, 기타 설정 등에 관한 내용을 어떻게 해결하였는지는 다음 포스팅으로~</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[MYSQL] Could not connect. server may not be running. 해결 방법]]></title>
            <link>https://velog.io/@d_isbetterthan_p/MYSQL-Could-not-connect.-server-may-not-be-running.-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95</link>
            <guid>https://velog.io/@d_isbetterthan_p/MYSQL-Could-not-connect.-server-may-not-be-running.-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95</guid>
            <pubDate>Mon, 29 Jul 2024 13:43:06 GMT</pubDate>
            <description><![CDATA[<h2 id="문제">문제</h2>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/8e7816b4-668d-4ef0-a688-a8970241bc95/image.png" alt="">
쿼리를 실행하려고 <code>Ctrl + Enter</code>를 쳤는데, 다음 행으로 커서가 넘어가기만 하고 쿼리 실행이 안 되는 거다. 정신 차리고 보니 위와 같은 에러 메시지가 있었다^^;</p>
<h2 id="해결">해결</h2>
<p>해결 방법은 정말 간단하다.</p>
<ol>
<li><p>window 검색창에 작업 관리자를 입력 후 접속한다.
(<code>ctrl + alt + delete</code> → 작업 관리자 클릭도 가능)</p>
</li>
<li><p><strong>서비스</strong> 탭에서 MySQL을 찾는다.
(서버 설치 시 설정한 이름이 다를 수 있다. ex. MySQL80)</p>
</li>
<li><p>아마도 상태가 &#39;중지됨&#39;으로 되어 있을 것이다.
이를 우클릭하여 &#39;<strong>시작</strong>&#39;을 눌러 다시 동작하게 한다.</p>
</li>
</ol>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/c12913aa-c4a0-4d1a-99ba-e6df1ccb288e/image.png" alt=""></p>
<ol start="4">
<li>위 이미지와 같이 상태가 &#39;실행 중&#39;으로 바뀌면 workbench와 같은 툴에 접속해 쿼리를 다시 실행해본다.
아마 대부분 이와 같은 방법으로 해결이 될 것이다.</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[[MYSQL] time_zone='Asia/Seoul' : Error Code 1298 해결 방법]]></title>
            <link>https://velog.io/@d_isbetterthan_p/MYSQL-timezoneAsiaSeoul-Error-Code-1298-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95</link>
            <guid>https://velog.io/@d_isbetterthan_p/MYSQL-timezoneAsiaSeoul-Error-Code-1298-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95</guid>
            <pubDate>Thu, 25 Jul 2024 13:44:44 GMT</pubDate>
            <description><![CDATA[<h2 id="문제">문제</h2>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/407ddfcb-355c-4846-a9bd-cc5a8c2b3e1e/image.png" alt=""></p>
<p>my.ini 파일에 <code>default-time-zone=Asia/Seoul</code>을 기입하였는데 반응이 없었다. 찾아 보니 <strong>timezone_leaps.sql 패키지</strong>가 설치되어 있지 않으면 그렇다고 한다. 패키지가 있는지 없는지 설치 전 미리 확인하기 위한 과정은 다음과 같다.</p>
<h2 id="해결">해결</h2>
<pre><code class="language-sql">select @@global.time_zone, @@session.time_zone;</code></pre>
<ol>
<li><p>먼저 MySQL Workbench에 위 sql문을 입력한다.
둘 다 디폴트 값인 SYSTEM으로 나올 것이다. 나의 경우에도 그랬다.</p>
</li>
<li><p>그렇다면 아래 sql문을 입력 후 실행해본다.</p>
</li>
</ol>
<pre><code class="language-sql">SET global.time_zone = &#39;Asia/Seoul&#39;;
SET time_zone = &#39;Asia/Seoul&#39;;</code></pre>
<p>그럼 패키지가 없는 경우 이미지와 같이 에러 코드 <strong>1298</strong> &#39;Unknown or incorrect time zone : &#39;Asia/Seoul&#39;&#39;이 뜨는 것을 확인할 수 있을 것이다.</p>
<ol start="3">
<li>아래 링크로 들어가 파일을 다운 받는다.
<a href="https://dev.mysql.com/downloads/timezones.html">https://dev.mysql.com/downloads/timezones.html</a></li>
</ol>
<p>POSIX와 NON POSIX 중 유닉스 계열이라면 전자, 윈도우 계열이라면 후자를 받으면 된다.
나의 경우 윈도우 유저라 <strong>timezone_2022a_leaps_sql.zip - Non POSIX with leap seconds</strong>를 받았다.</p>
<ol start="4">
<li>그리고 cmd를 실행, 다음과 같은 명령어를 순차적으로 입력해 <strong>mysql command line client로 접속</strong>해 준다.</li>
</ol>
<pre><code>1. cd (mysql 서버 설치 경로)\bin
2. mysql -uroot -p
3. Enter password  : (패스워드 입력)</code></pre><ol start="5">
<li>Welcome to the MySQL monitor로 시작되는 문구가 뜨면 비밀번호를 올바르게 입력해 성공적으로 연결이 되었다는 뜻이다. 성공적으로 연결이 되었을 시 <code>mysql&gt;</code>이라고 뜰 것이다.</li>
</ol>
<p>이때, 아래와 같은 명령어를 입력해 준다.</p>
<pre><code>1. show databases;
2. use mysql;
3. Database changed라는 문구가 확인 되면,
    source (timezone 파일 설치 경로)\timezone_leaps.sql;</code></pre><p>다른 분들은 바로 <code>use mysql;</code> 해도 되었는데, 나는 그렇게 하고 <code>source ~~</code>를 입력하니 실행이 되지 않았다. 그래서 <code>show databases;</code> 먼저 하고, <code>use mysql;</code>을 실행한 다음 소스 추가를 해주었다.
<img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/f6e10e0c-88f6-4bd8-b6ce-cfe936628989/image.jpg" alt=""></p>
<ol start="6">
<li><p>그리고 난 뒤 <code>my.ini</code> 설정 파일을 켠 다음, 파일에 하기 코드를 추가한다.
설정을 변경하기 위해서는 꼭 <a href="https://velog.io/@d_isbetterthan_p/MYSQL-%EC%9C%88%EB%8F%84%EC%9A%B0-my.ini-%EC%9D%B4-%ED%8C%8C%EC%9D%BC%EC%9D%84-%EC%97%B4-%EC%88%98-%EC%9E%88%EB%8A%94-%EA%B6%8C%ED%95%9C%EC%9D%B4-%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95">사용자 권한을 변경</a>해 주어야 하며 아래 코드는 파일의 [mysqld] 하단에 기입하면 된다.</p>
<pre><code>default-time-zone=Asia/Seoul</code></pre></li>
<li><p>그리고 mysql을 재시작해준다.
(나의 경우, Window+R(실행 창) → services.msc (서비스 열기)로 접속했다.)</p>
</li>
<li><p>마지막으로 다시 Workbench로 돌아와 아래 sql문을 실행해 보면,</p>
<pre><code class="language-sql">select @@global.time_zone, @@session.time_zone;</code></pre>
</li>
</ol>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/6ceba437-2b18-4183-8237-efb624e80209/image.png" alt=""></p>
<p>SYSTEM으로 확인되었던 게 Asia/Seoul로 알맞게 바뀐 것을 확인할 수 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[MYSQL] Could not connect. server may not be running. 해결 방법]]></title>
            <link>https://velog.io/@d_isbetterthan_p/MYSQL-Could-not-connect.-server-may-not-be-running.-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95-ukpgan5d</link>
            <guid>https://velog.io/@d_isbetterthan_p/MYSQL-Could-not-connect.-server-may-not-be-running.-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95-ukpgan5d</guid>
            <pubDate>Wed, 24 Jul 2024 13:41:14 GMT</pubDate>
            <description><![CDATA[<h2 id="문제">문제</h2>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/550fb673-918b-4862-a67f-d032be36acf4/image.png" alt=""></p>
<p>my.ini 파일에 파라미터 값을 추가하는 과정에서 MySQL을 여러 번 재시작해야 했고, 그러던 와중 workbench에 접속했다가 이와 같은 오류를 발견했다.</p>
<p>어쩐지 sql문을 <code>ctrl+Enter</code>로 백날 실행해도 다음 행으로 넘어가기만 하더라.</p>
<h2 id="해결">해결</h2>
<p><del>해결했다고 하기엔 너무 뭐가 없어서 캡처를 제대로 하지 못했다만</del></p>
<ol>
<li>작업 관리자에 들어간다.</li>
<li>서비스 탭으로 간다.</li>
<li>자신이 <strong>사용 중인 MYSQL을 찾아 상태를 확인한 뒤 &#39;중지됨&#39;이라면</strong></li>
<li>우클릭 &gt; 시작 클릭</li>
<li>상태가 &#39;실행 중&#39;으로 변경된 것을 확인한 뒤 작업 관리자에서 나온다.</li>
<li>workbench에 재접속한다.</li>
</ol>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/1509a9ee-ed5c-4359-9974-52c59124e006/image.png" alt=""></p>
<p>십중팔구 상태가 중지됨으로 나와 있을 것이라고 하더니 나도였다 아차차! 위와 같이 실행 중인 것을 확인한 뒤 재접속 하니 깔끔히 해결되었다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[MYSQL] 윈도우 my.ini : 이 파일을 열 수 있는 권한이 없습니다. 해결 방법]]></title>
            <link>https://velog.io/@d_isbetterthan_p/MYSQL-%EC%9C%88%EB%8F%84%EC%9A%B0-my.ini-%EC%9D%B4-%ED%8C%8C%EC%9D%BC%EC%9D%84-%EC%97%B4-%EC%88%98-%EC%9E%88%EB%8A%94-%EA%B6%8C%ED%95%9C%EC%9D%B4-%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95</link>
            <guid>https://velog.io/@d_isbetterthan_p/MYSQL-%EC%9C%88%EB%8F%84%EC%9A%B0-my.ini-%EC%9D%B4-%ED%8C%8C%EC%9D%BC%EC%9D%84-%EC%97%B4-%EC%88%98-%EC%9E%88%EB%8A%94-%EA%B6%8C%ED%95%9C%EC%9D%B4-%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95</guid>
            <pubDate>Wed, 24 Jul 2024 13:29:09 GMT</pubDate>
            <description><![CDATA[<h2 id="문제">문제</h2>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/d2056411-4cf1-4078-bc2f-a2e31a218973/image.png" alt=""></p>
<p>MySQL의 my.ini 파일을 수정 후 저장하려고 했더니 위와 같은 오류가 확인되었다.</p>
<h2 id="해결">해결</h2>
<h3 id="--변경-전">- 변경 전</h3>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/1a0fe360-67fc-4853-82b8-62a1b697b190/image.png" alt="전"></p>
<h3 id="--변경-후">- 변경 후</h3>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/37fcfce6-8a1e-487f-a5ac-9d7c937f5ddc/image.png" alt="후"></p>
<ol>
<li>my.ini 파일 우클릭</li>
<li>속성 클릭</li>
<li>보안 탭에서 사용자 이름 클릭 후</li>
<li>편집 클릭</li>
<li><strong>사용 권한 모두 허용</strong> 해주기</li>
</ol>
<p>변경 전 캡처는 ALL APPLICTAION PACKAGES로 되었지만, Users의 경우도 변경 전에는 읽기 및 실행과 읽기만 되어 있었다. 이렇게 권한을 부여한 후 my.ini 파일을 수정, 저장하면 오류 메시지가 뜨지 않는 것을 확인할 수 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[MYSQL] Cannot Connect to Database Server : Bad handshake 해결 방법]]></title>
            <link>https://velog.io/@d_isbetterthan_p/MYSQL-Workbench-Cannot-Connect-to-Database-Server-Bad-handshake-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95</link>
            <guid>https://velog.io/@d_isbetterthan_p/MYSQL-Workbench-Cannot-Connect-to-Database-Server-Bad-handshake-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95</guid>
            <pubDate>Wed, 24 Jul 2024 13:17:45 GMT</pubDate>
            <description><![CDATA[<h2 id="문제">문제</h2>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/3c72e23c-6e9a-4097-84a3-7d59a76d2e44/image.png" alt=""><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/0c5f902b-733b-4e34-86c2-4d1b09a5e5f4/image.png" alt=""></p>
<p>MySQL Server는 5.1로, Workbench는 8.0으로 설치한 뒤 접속하려고 하니 Bad handshake라며 위와 같은 오류가 떴다.</p>
<p>처음에 &#39;Cannot Connect to Database Server&#39;라고 검색했을 때 다른 분들의 상세 메시지는 &#39;Access denied for user &#39;root&#39;@&#39;localhost&#39; ~~&#39;여서 당황했다. 아니 난 또 왜 &#39;Bad handshake&#39;야;;</p>
<h2 id="해결">해결</h2>
<p>알고 보니 호환 문제였다. (결국 바꾸긴 했지만) 당시로서는 서버를 5.1 버전으로 유지하는 게 더 중요해서 Workbench를 6.2로 다운그레이드 했다.</p>
<p>다운그레이드 시에는 <a href="https://vibrationresearch.com/microsoft-visual-c-2013-redistributable-x64/">visual c++도 2013</a>으로 받아야 한다! 그렇게 호환 가능한 버전으로 설치하고 나니 아무렇지 않게 접속이 되었다. 기본적인 거였는데 전달 받은 파일이니 되겠거니 생각했던 게 안일했다. 다음부터는 꼭 먼저 확인해 볼 것!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[MSSQL] 신뢰되지 않은 기관에서 인증서 체인을 발급했습니다. 해결 방법]]></title>
            <link>https://velog.io/@d_isbetterthan_p/MsSQL-%EC%8B%A0%EB%A2%B0%EB%90%98%EC%A7%80-%EC%95%8A%EC%9D%80-%EA%B8%B0%EA%B4%80%EC%97%90%EC%84%9C-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EC%B2%B4%EC%9D%B8%EC%9D%84-%EB%B0%9C%EA%B8%89%ED%96%88%EC%8A%B5%EB%8B%88%EB%8B%A4.-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95</link>
            <guid>https://velog.io/@d_isbetterthan_p/MsSQL-%EC%8B%A0%EB%A2%B0%EB%90%98%EC%A7%80-%EC%95%8A%EC%9D%80-%EA%B8%B0%EA%B4%80%EC%97%90%EC%84%9C-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EC%B2%B4%EC%9D%B8%EC%9D%84-%EB%B0%9C%EA%B8%89%ED%96%88%EC%8A%B5%EB%8B%88%EB%8B%A4.-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95</guid>
            <pubDate>Wed, 24 Jul 2024 13:08:49 GMT</pubDate>
            <description><![CDATA[<h2 id="문제">문제</h2>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/beeb7e4d-1191-40f0-bf31-1ad7f0d92756/image.png" alt=""></p>
<p>vm 서버에 Microsoft SQL Server Management Studio(SSMS)를 설치, 새로운 사용자를 추가하려는데, 위와 같은 오류를 마주했다.</p>
<h2 id="해결">해결</h2>
<p>이것저것 찾아 봤는데, 서버 연결 전 옵션을 건드려야 한다는 게 공통적인 의견이었다.
다만 연결 속성에서 &#39;<strong>서버 인증서 신뢰</strong>&#39;에 체크를 하라는 말이 있었는데, 내가 설치한 SSMS 버전에서는 보이지가 않아서 생략하였고</p>
<p>&#39;<strong>추가 연결 매개 변수</strong>&#39;에 <span style="color:Red">TrustServerCertificate=True</span>를 추가한 뒤 연결을 해주니 에러 없이 접속이 되었다.</p>
<p>찾아 보니, 매번 해줘야 하는 모양인데 여차하면 자격 증명 매핑을 시도해 보는 것으로...</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스/Java] Lv.1 직사각형 별찍기]]></title>
            <link>https://velog.io/@d_isbetterthan_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4Java-Lv.1-%EC%A7%81%EC%82%AC%EA%B0%81%ED%98%95-%EB%B3%84%EC%B0%8D%EA%B8%B0</link>
            <guid>https://velog.io/@d_isbetterthan_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4Java-Lv.1-%EC%A7%81%EC%82%AC%EA%B0%81%ED%98%95-%EB%B3%84%EC%B0%8D%EA%B8%B0</guid>
            <pubDate>Mon, 22 Jul 2024 01:47:56 GMT</pubDate>
            <description><![CDATA[<h2 id="문제">문제</h2>
<p>이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.</p>
<h3 id="--제한사항">- 제한사항</h3>
<ul>
<li>n과 m은 각각 1000 이하인 자연수입니다.</li>
</ul>
<h2 id="풀이">풀이</h2>
<pre><code class="language-java">import java.util.Scanner;

class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();

        for(int i=1; i&lt;=b; i++){
            for(int j=1; j&lt;=a; j++){
                System.out.print(&quot;*&quot;);
            }
            System.out.println(&quot;&quot;);
        }
    }
}</code></pre>
<h2 id="결과">결과</h2>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/a6bad64a-d20b-4c60-9ea7-ed56f59603a6/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스/Java] Lv.1 행렬의 덧셈]]></title>
            <link>https://velog.io/@d_isbetterthan_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4Java-Lv.1-%ED%96%89%EB%A0%AC%EC%9D%98-%EB%8D%A7%EC%85%88</link>
            <guid>https://velog.io/@d_isbetterthan_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4Java-Lv.1-%ED%96%89%EB%A0%AC%EC%9D%98-%EB%8D%A7%EC%85%88</guid>
            <pubDate>Fri, 19 Jul 2024 01:24:32 GMT</pubDate>
            <description><![CDATA[<h2 id="문제">문제</h2>
<p>행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.</p>
<h3 id="--제한사항">- 제한사항</h3>
<ul>
<li>행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.</li>
</ul>
<h2 id="풀이">풀이</h2>
<pre><code class="language-java">class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        int[][] answer = new int[arr1.length][arr1[0].length];

        for(int i=0; i&lt;arr1.length; i++){
            for(int j=0; j&lt;arr1[i].length; j++){
                answer[i][j] = arr1[i][j] + arr2[i][j];
            }
        }

        return answer;
    }
}</code></pre>
<h2 id="결과">결과</h2>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/446db1b7-06f9-425d-bb53-e546b0e43ca9/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스/Java] Lv.1 문자열 다루기 기본]]></title>
            <link>https://velog.io/@d_isbetterthan_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4Java-Lv.1-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%8B%A4%EB%A3%A8%EA%B8%B0-%EA%B8%B0%EB%B3%B8</link>
            <guid>https://velog.io/@d_isbetterthan_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4Java-Lv.1-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%8B%A4%EB%A3%A8%EA%B8%B0-%EA%B8%B0%EB%B3%B8</guid>
            <pubDate>Thu, 18 Jul 2024 01:34:54 GMT</pubDate>
            <description><![CDATA[<h2 id="문제">문제</h2>
<p>문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 &quot;a234&quot;이면 False를 리턴하고 &quot;1234&quot;라면 True를 리턴하면 됩니다.</p>
<h3 id="--제한사항">- 제한사항</h3>
<ul>
<li>s는 길이 1 이상, 길이 8 이하인 문자열입니다.</li>
<li>s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.</li>
</ul>
<h2 id="풀이">풀이</h2>
<p>코드를 간단히 만들기 위해 <code>try~catch</code>를 활용했다. 우선 문자열일 때 <code>length()</code>를 활용해 문자열의 길이가 4 혹은 6인지를 체크하기 쉽기에 if문으로 이를 확인했다. 이때, 4 혹은 6일 경우 기본값이 false인 answer를 true로 바꾸어 주었다.</p>
<p>그리고 <code>try</code> 블럭에서 <code>Integer.parseInt()</code>로 파싱을 시도했다. 만약 숫자로만 이루어졌다면 <code>catch</code> 블럭으로 진입하지 않아 <code>return</code>으로 갈 것이고, 아니라면 <code>catch</code> 블럭으로 진입해 answer를 다시 false로 바꾼 다음 반환하게 했다.</p>
<p>문자열이 숫자로만 이루어져 있는지 확인하기 위해 for문으로 최대 8글자를 돌기 보단 이게 훨씬 효율적이락 생각했고, 실제로 메모리 사용이 적다는 것을 확인했다.</p>
<pre><code class="language-java">class Solution {
    public boolean solution(String s) {
        boolean answer = false;
        int num = 0;

        if(s.length() == 4 || s.length() == 6) answer = true;

        try{
            num = Integer.parseInt(s);
        }catch(Exception e){
            answer = false;
        }

        return answer;
    }
}</code></pre>
<h2 id="결과">결과</h2>
<p><img src="https://velog.velcdn.com/images/d_isbetterthan_p/post/fa8e03f0-8d27-47c0-8dda-a820d13a3601/image.png" alt=""></p>
]]></description>
        </item>
    </channel>
</rss>