<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>dl_wlsl</title>
        <link>https://velog.io/</link>
        <description>결국 해내고야 마는 개발자</description>
        <lastBuildDate>Mon, 05 Jun 2023 07:08:45 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. dl_wlsl. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/ela__gin" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[SpringBoot 2.7 queryDsl 설정 방법.(java src에 java파일 안생기도록)]]></title>
            <link>https://velog.io/@ela__gin/SpringBoot-2.7-queryDsl-%EC%84%A4%EC%A0%95-%EB%B0%A9%EB%B2%95.java-src%EC%97%90-java%ED%8C%8C%EC%9D%BC-%EC%95%88%EC%83%9D%EA%B8%B0%EB%8F%84%EB%A1%9D</link>
            <guid>https://velog.io/@ela__gin/SpringBoot-2.7-queryDsl-%EC%84%A4%EC%A0%95-%EB%B0%A9%EB%B2%95.java-src%EC%97%90-java%ED%8C%8C%EC%9D%BC-%EC%95%88%EC%83%9D%EA%B8%B0%EB%8F%84%EB%A1%9D</guid>
            <pubDate>Mon, 05 Jun 2023 07:08:45 GMT</pubDate>
            <description><![CDATA[<h1 id="springboot-27-querydsl-설정-방법">SpringBoot 2.7 queryDsl 설정 방법.</h1>
<blockquote>
<p>나는 김영한 강사님의 queryDsl 강의를 듣고있다.
강의 내용의 springBoot의 버전은 2.6일 것이다.
springBoot 2.7 이상에서는 강의 내용대로는 queryDsl 설정이 안된다는 것을 알 수 있다.</p>
</blockquote>
<h2 id="unable-to-load-class-commysemacodegenmodeltype">Unable to load class &#39;com.mysema.codegen.model.Type&#39;.</h2>
<p>김영한 강사님의 queryDsl 강의 내용과 같이 설정했다면
Unable to load class &#39;com.mysema.codegen.model.Type&#39;.
위와 같은 에러가 발생했을 것이다.
정상 작동하는 설정 방법을 아래 적어겠다.</p>
<blockquote>
<p>springBoot 2.7이상에서는 어떻게 설정하면 좋을지 알아보자.
(사실 필자는 2.7만 쓰기 때문에 3이상은 아래 설정으로 잘 되는지 모르겠다.)
제 설정 방법을 참고하여 3이상을 설정한 분은 댓글 부탁드립니다.</p>
</blockquote>
<h2 id="buildgradle-설정">build.gradle 설정.</h2>
<p>참고한 블로그에 있는 build.gradle 설정을 가져와 실행해보고, 직접 실행해보며 내가 쓰는 설정을 만들었다.
참고 블로그의 내용을 굳이 수정하여 아래와 같이 설정을 쓰는 이유를 적어보겠다.</p>
<ul>
<li>위 말한 Unable to load class &#39;com.mysema.codegen.model.Type&#39;. 오류가 발생하지 않고 <strong>SpringBoot 2.7에서 queryDsl이 정상 작동</strong>한다.</li>
<li>강의 내용과 같은 경로에 QEntity 파일이 생성이 된다.</li>
<li>src/main/ 하위에 QEntity 파일이 생성되지 않고, 
이미 git ignore 설정이 되어있는 <strong>build/ 경로 하위에만 파일이 생성</strong>된다. (git ignore를 따로 설정해줘야하는 번거로움이 없다.)</li>
</ul>
<pre><code>plugins {
    id &#39;java&#39;
    id &#39;org.springframework.boot&#39; version &#39;2.7.12&#39;
    id &#39;io.spring.dependency-management&#39; version &#39;1.0.15.RELEASE&#39;

}

group = &#39;study&#39;
version = &#39;0.0.1-SNAPSHOT&#39;
sourceCompatibility = &#39;11&#39;

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation &#39;org.springframework.boot:spring-boot-starter-data-jpa&#39;
    implementation &#39;org.springframework.boot:spring-boot-starter-web&#39;
    compileOnly &#39;org.projectlombok:lombok&#39;

    // queryDSL 설정
    implementation &quot;com.querydsl:querydsl-jpa&quot;
    implementation &quot;com.querydsl:querydsl-core&quot;
    implementation &quot;com.querydsl:querydsl-collections&quot;
    annotationProcessor &quot;com.querydsl:querydsl-apt:${dependencyManagement.importedProperties[&#39;querydsl.version&#39;]}:jpa&quot; // querydsl JPAAnnotationProcessor 사용 지정
    annotationProcessor &quot;jakarta.annotation:jakarta.annotation-api&quot; // java.lang.NoClassDefFoundError (javax.annotation.Generated) 대응 코드
    annotationProcessor &quot;jakarta.persistence:jakarta.persistence-api&quot; // java.lang.NoClassDefFoundError (javax.annotation.Entity) 대응 코드

    runtimeOnly &#39;com.h2database:h2&#39;
    annotationProcessor &#39;org.projectlombok:lombok&#39;
    testImplementation &#39;org.springframework.boot:spring-boot-starter-test&#39;
}

tasks.named(&#39;test&#39;) {
    useJUnitPlatform()
}

//querydsl 추가 시작
def querydslDir = &quot;$buildDir/generated/querydsl&quot;

// java source set 에 querydsl QClass 위치 추가
sourceSets {
    main.java.srcDirs += [ querydslDir ]
}

// gradle clean 시에 QClass 디렉토리 삭제
clean {
    delete file(querydslDir)
}
//querydsl 추가 끝</code></pre><p>이만 글 줄인다. 해당 설정으로 되는 사람, 안되는 사람 모두 댓글 부탁드려요.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[공부를 다시 시작하기로 했다.]]></title>
            <link>https://velog.io/@ela__gin/%EA%B3%B5%EB%B6%80%EB%A5%BC-%EB%8B%A4%EC%8B%9C-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0%EB%A1%9C-%ED%96%88%EB%8B%A4</link>
            <guid>https://velog.io/@ela__gin/%EA%B3%B5%EB%B6%80%EB%A5%BC-%EB%8B%A4%EC%8B%9C-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0%EB%A1%9C-%ED%96%88%EB%8B%A4</guid>
            <pubDate>Thu, 02 Mar 2023 12:23:12 GMT</pubDate>
            <description><![CDATA[<p>오늘은 2023년 3월 2일 목요일.</p>
<h2 id="이직-생각은-있었다">이직 생각은 있었다.</h2>
<p><strong>누구나 이직 생각은 있을 것이다. 나 또한 그렇다.</strong></p>
<p>새로운 환경에서 새로운 경험을 하고자 하는 열망. 하지만 그런 경험에는 자격이 필요하다.
더 좋은 경험과 보수는 모두가 원하는 것이기에 경쟁을 해 자격을 증명해야한다.
중간 중간 코테 준비도 하고, 강의도 듣고, 스터디도 했다.
하지만 이직에 대한 데드라인이 없어서였을까? 회사 업무가 많아서였을까?
열정은 사그라들기 일쑤였다.</p>
<h2 id="셋째-새해다-데드라인을-둬보자">셋째 새해다. 데드라인을 둬보자.</h2>
<p><strong>어제가 2023년 3월 1일 올해 세번째 새해였다.</strong></p>
<p>누가 그랬다. 
한국인의 새해는 1월 1일 신정, 음력 1월 1일 구정, 3월 1일 삼일절 세번 있다고.
새해 결심을 굳이 하는 사람은 아니지만 우연히 나는 올 해 셋째 새해에 결심을 하게 됐다.
데드라인은 8월 1일 이다. 8월 1일 이내에 이직을 못한다면 다시 데드라인을 잡겠다.</p>
<h2 id="이직은-이직인데-어떤-이직">이직은 이직인데, 어떤 이직?</h2>
<p><strong>어떤 회사로의 이직이냐가 문제다.</strong></p>
<p>조건을 몇개 적어보자.</p>
<ol>
<li>SpringBoot and JPA or Data JPA 를 쓰는 서비스 회사.</li>
<li>코드 리뷰 문화가 활발한 회사.</li>
<li>... 일단 위 2개가 가장 나에게 절실하다. 생각나면 나중에 적어보자.</li>
</ol>
<h2 id="앞으로의-계획">앞으로의 계획.</h2>
<p><strong>하루에 5분만이라도.</strong></p>
<p>나는 운동도 꾸준히 해왔고, 공부도 많이 해본 경험이 있다.
내 경험상 중요한 건 하루도 쉬지 않는 굳건함이다.
오늘 5분이라도 공부하면 내일 공부하기 쉽다.
하지만 오늘 하나도 공부 안하면 내일 공부하기는 죽기보다 싫어질 수도 있다.</p>
<p>이 시리즈도 매일은 아니겠지만 꾸준히 올릴 것이다.
셋째 새해에 한 결심 중 하나이니까.</p>
<p><strong>안지울꺼다. 이 글.</strong></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[리눅스 서버에서 Apache/Tomcat mod-proxy 방식 연동]]></title>
            <link>https://velog.io/@ela__gin/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%84%9C%EB%B2%84%EC%97%90%EC%84%9C-ApacheTomcat-mod-proxy-%EB%B0%A9%EC%8B%9D-%EC%97%B0%EB%8F%99-%EC%9B%B9%EC%86%8C%EC%BC%93-%ED%91%B8%EC%8B%9C-%EC%95%8C%EB%A6%BC-%EC%97%B0%EB%8F%99-%ED%8F%AC%ED%95%A8</link>
            <guid>https://velog.io/@ela__gin/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%84%9C%EB%B2%84%EC%97%90%EC%84%9C-ApacheTomcat-mod-proxy-%EB%B0%A9%EC%8B%9D-%EC%97%B0%EB%8F%99-%EC%9B%B9%EC%86%8C%EC%BC%93-%ED%91%B8%EC%8B%9C-%EC%95%8C%EB%A6%BC-%EC%97%B0%EB%8F%99-%ED%8F%AC%ED%95%A8</guid>
            <pubDate>Tue, 21 Feb 2023 15:04:26 GMT</pubDate>
            <description><![CDATA[<h3 id="시나리오-">시나리오 :</h3>
<blockquote>
<p>Apache-Tomcat 연동으로 사용자의 요청을 <strong>80포트로 받아</strong> 동일 서버 tomcat의 서비스 포트 <strong>(tomcat의 server.xml 에 있는 port설정)(8080) 으로 보내려 한다.</strong></p>
</blockquote>
<h3 id="준비물">준비물</h3>
<p><strong>apache는 2.4 이상으로 할 것</strong>
    -&gt; 그래야 mod-proxy 방식이여도 속도 저하 현상 없음.</p>
<blockquote>
</blockquote>
<ul>
<li>Tomcat</li>
<li>Apache(httpd)</li>
<li>jdk</li>
</ul>
<h2 id="apache-80으로-오는-요청-tomcat-8080으로-보내기">apache :80으로 오는 요청 tomcat :8080으로 보내기</h2>
<blockquote>
<ul>
<li>OS 및 설치 방법에 따라 apache(httpd) 의 설치 경로는 상이할 수 있다.</li>
</ul>
</blockquote>
<ul>
<li>apache의 httpd.conf 를 수정하여 아래 소스코드를 주입해주자. <pre><code>수정 : vi /etc/httpd/conf/httpd.conf</code></pre></li>
</ul>
<blockquote>
<ul>
<li>먼저 위 파일에 Listen 80 이란 코드가 잘 있는지 확인한다.</li>
</ul>
</blockquote>
<pre><code>Listen 80</code></pre><blockquote>
<ul>
<li>아래 주석 바로 밑에 아래 코드를 넣어주자. (apache 일정 버전 이상에서는 LoadModule 3줄은 사실 안넣어도 된다고 한다 기동시 apache 로그 참고)</li>
</ul>
</blockquote>
<pre><code># Example:
# LoadModule foo_module modules/mod_foo.so</code></pre><pre><code>LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
Include conf/extra/httpd-vhosts.conf</code></pre><blockquote>
<ul>
<li>httpd-vhosts.conf를 만들어주자 (폴더가 없다면 폴더도 만들자)</li>
</ul>
</blockquote>
<pre><code>수정 : vi /etc/httpd/conf/extra/httpd-vhosts.conf</code></pre><blockquote>
<ul>
<li>httpd-vhosts.conf 에 아래 코드를 작성해주자.</li>
</ul>
</blockquote>
<pre><code>&lt;VirtualHost *:80&gt;
    ServerName 127.0.0.1:8080
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/
&lt;/VirtualHost&gt;</code></pre><blockquote>
<ul>
<li>apache 재기동 후 http://서버IP:80 으로 접속해서 tomcat이 띄운 화면이 뜨는지 확인해보자.</li>
</ul>
</blockquote>
<hr>
<blockquote>
<ul>
<li>해당 profile의 storage.server.port, cyberdigm.masterStorageServer 값의 포트를 변경해주자.</li>
</ul>
</blockquote>
<pre><code>storage.server.port=80
cyberdigm.masterStorageServer=서버IP:80</code></pre><blockquote>
<ul>
<li>추후 사용자의 8080 포트로의 직접 접속은 방화벽으로 막던지, 방화벽을 사용하지 않는다면 8080이 아닌 아무도 접속 안할 포트로 tomcat을 띄우고 연동을 해주자.</li>
</ul>
</blockquote>
<hr>
]]></description>
        </item>
    </channel>
</rss>