탁구치는 개발자
close
프로필 배경
프로필 로고

탁구치는 개발자

  • 분류 전체보기 (417) N
    • WebRTC (7)
    • 프로그래밍 (139)
    • AI 활용 (2) N
    • 서버 (49)
    • 개발툴 (102)
    • 개발이야기 (10)
    • 장애 경험 (1)
    • 유용한 도구 (4)
    • 끄적끄적 (17)
    • 독서 (83)
    • 회고 (2)
    • 재테크 (1)
  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록
2. [JPA] 테스트 환경

2. [JPA] 테스트 환경

테스트는 JPA 구현체인 하이버네이트를 주로 다룰 것이고 Spring Boot 기반에서 진행할 예정이다.Spring Boot에 대해서 논하기에는 이 또한 분량이 적지 않아 나중에 정리할 예정이다. SPRING INITIALIZR(https://start.spring.io) 에서 기본적인 프로젝트 구성을 다운 받아 다음과 같이 구성하였다. [JPA 테스트 버전]123JPA : 2.1hibernate : 5.0.12spring data jpa : 1.11.1cs pom.xml123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707..

  • format_list_bulleted 프로그래밍
  • · 2017. 7. 21.
  • textsms

1. [JPA] 사용 경험

이전 프로젝트에서 처음으로 JPA를 사용해 보았다.실무에 적용하기 전에는 JPA가 무엇인지 궁금하여 테스트 삼아 몇 번 공부한게 전부였다.허나 실무에서 직접 사용하려고 했을 때의 중압감은 사뭇 다르다는 것을 느꼈다.이유인 즉슨, 다음의 항목들에 대해서 이해를 하고 있어야 실무에 도입해도 큰 문제가 없다고 들었기 때문이다.JPQL 이란?즉시, 지연 로딩 전략영속성 컨텍스트에 대한 이해자동 변경 감지언제 영속성 컨텍스트가 flush 되는가?연관관계 매핑중에 mappedBy, inverse 이해OSIV 란?N+1 질의 문제 (query)쓰기 지연 솔직히 위의 항목 중 어느 한 가지도 제대로 이해하지 못한 상태였다.그렇게 JPA에 대한 상세 지식이 없는 상태에서 개발을 진행하게 되었고, 어찌됐든 개발이 완료되기..

  • format_list_bulleted 프로그래밍
  • · 2017. 7. 21.
  • textsms

spark framework

Spark framework는 가벼운 웹 프레임워크이고 JVM 기반에서 실행 가능하다. jetty 서버가 내장되어 있으며 2.x 버전부터 람다를 사용하고 있어 자바8이 설치되어 있어야 한다. spark 사용 빈도를 조사한 자료를 보니 1위가 개인 프로젝트였고, 2위가 REST API를 제공하기 위한 용도로 많이 사용한다고 한다. 확실히 프로젝트 셋팅하고 REST API를 만드는데 10분도 걸리지 않았기에 dummy API를 제공할 때 사용하면 될 것으로 보이기도 하다. [spark 셋팅] 1. 이클립스에서 gradle 프로젝트 생성 (gradle plugin 설치 필요) 2. build.gradle 파일에 다음의 설정 추가 plugins { id "java" id "application" } group ..

  • format_list_bulleted 프로그래밍
  • · 2016. 9. 28.
  • textsms

iframe에서 parent 페이지 접근을 위해서는 document.domain 필요

jquery_191_min.js:4 Uncaught SecurityError: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin "http://a.test.com" from accessing a frame with origin "http://a.test.com". The frame requesting access set "document.domain" to "test.com", but the frame being accessed did not. Both must set "document.domain" to the same value to allow access. iframe 에..

  • format_list_bulleted 프로그래밍
  • · 2016. 8. 29.
  • textsms

문제를 통해 이해해보는 Javascript 기본 원리

회사에서 자바스크립트 강의를 듣고난 후 많은 것을 알게 되어 이곳에 정리한다. { var foo = 1; console.log(foo); } console.log(foo); 위의 코드를 실행하면 어떤 값이 찍힐까? 결과는1 1 1 이렇게 두 번 찍힌다. 블럭안에 있는 foo 변수를 블럭 밖에서 사용하지 못할 것으로 예상되지만 Javascript에서 위의 블럭은 아무런 의미가 없다. function bar() { var foo = 2; console.log(foo); } bar(); console.log(foo); { } 블럭은 아무런 의미가 없다고 했는데 function() { } 블럭은 어떨까? 위의 코드를 실행하면 다음과 같이 출력된다. 2 Uncaught ReferenceError: foo is n..

  • format_list_bulleted 프로그래밍
  • · 2016. 7. 29.
  • textsms

Spring Controller 테스트 하기 (MockMvc 사용)

스프링 테스트 프레임워크에서 제공하는 MockMvc를 이용하여 Controller 테스트 하기 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "/dispatcher-servlet.xml", "/spring.xml" }) @WebAppConfiguration public class TestControllerTest { @Autowired private WebApplicationContext context; @Autowired private MessageSource reloadableResourceBundleMessageSource; private MockMvc mockMvc; @Before public void set..

  • format_list_bulleted 프로그래밍
  • · 2016. 5. 18.
  • textsms
Thread 생성 비용이 큰 이유

Thread 생성 비용이 큰 이유

아래 이미지 한 장이 모든 것을 설명해 주고 있음 물론 -Xssn JVM parameter로 메모리 설정 변경이 가능함.

  • format_list_bulleted 프로그래밍
  • · 2016. 4. 6.
  • textsms

CronExpression Test 하기

Quartz 사용 시 cron expression에 정의한 시간에 정상 동작하는지를 체크해야 할 경우가 있다 단순한 방법으로는 테스트 하고자 하는 시간으로 표현식을 설정하고 그 시간에 스케줄링이 동작하는지 확인해 보면 되지만 이는 무식한 방법이다. 간단하게 quartz에서 제공하고 있는 CronExpression 클래스를 이용하여 테스트 가능하다.@Test public void cronTimeTest() throws ParseException { // 매일 9, 12, 18시 정각에 스케줄링 동작 String cronEx = "0 0 9,12,18 * * ?"; CronExpression cronExpression = new CronExpression(cronEx); Date nextTime1 = cro..

  • format_list_bulleted 프로그래밍
  • · 2016. 3. 17.
  • textsms

jedis returnBrokenResource 메서드에 대한 오해

jedis의 returnBrokenResource 메서드에 대해 잘못 알고 있는 부분이 있어 정리한다. @Beforepublic void init() { GenericObjectPoolConfig config = new GenericObjectPoolConfig();config.setMaxTotal(20);config.setBlockWhenExhausted(true);config.setMaxWaitMillis(1000); JedisShardInfo shard1 = new JedisShardInfo("test.com", 6300);JedisShardInfo shard2 = new JedisShardInfo("test.com", 6301);JedisShardInfo shard3 = new JedisShard..

  • format_list_bulleted 프로그래밍
  • · 2016. 3. 9.
  • textsms

Mybatis 쿼리 로그 출력

쿼리 검수를 위해 mybatis 플러그인에 아래 interceptor를 추가 - 바인딩 변수에 값이 맵핑되어 있는 쿼리문 출력가능 [SQL Map Config] DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> [Logback Config] /home/test/${SERVER_NAME}/tomcat/logs/sql/mybatis_sql.log /home/test/${SERVER_NAME}/tomcat/logs/sql/mybatis_sql.%d{yyyy-MM-dd}.log.gz 60 %m%n

  • format_list_bulleted 프로그래밍
  • · 2016. 3. 2.
  • textsms

비트단위의 논리곱을 이용한 데이터 활용 방법 - 논리곱(and) &

현재 운영중인 시스템에서 비트 연산자를 이용하여 속성 값을 추출하는 로직이 있다.데이터의 구조가 5바이트로 되어 있는데 4번째 바이트를 추출하여 사용하게 되는 구조이다. 4번째 바이트 값을 뽑았을 때 값이 7이라고 가정하자.7의 값은 비트로 표기하면 다음과 같을 것이다.00000111 속성들의 값은 다음과 같다.속성1 = 1속성2 = 2속성4 = 4속성8 = 8 속성1은 비트로 00000001속성2은 비트로 00000010속성4은 비트로 00000100속성8은 비트로 00001000 4번째 바이트의 비트와 속성1 비트를 & 연산자를 이용해 비교하게 되면00000111 & 00000001 결과 0000000100000111 & 00000010 결과 0000001000000111 & 00000100 결과 0..

  • format_list_bulleted 프로그래밍
  • · 2016. 1. 31.
  • textsms

진수 변환

2진수에서 16진수, 10진수에서 16진수로의 변환에 대해 자주 까먹어서 정리해 본다. (나 요즘 정리 엄청 좋아하는 듯) 변환하기에 앞서 진수에 따른 데이터 표현 방법은 다음과 같다.2진수는 0, 110진수는 0, 1, 2, 3, 4, 5, 6, 7, 8, 916진수는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F 10진수 -> 2진수10진수 23이 있다고 하자. 이를 2진수로 바꾸는 방법은 23을 2로 계속 나누면 된다. (나눌 수 없을 때까지)23 / 2 = 11 나머지 111 / 2 = 5 나머지 15 / 2 = 2 나머지 12 / 2 = 1 나머지 0 위의 계산식에서 맨 마지막의 몫과 나머지들을 아래에서부터 위로 나열을 하면 10111 이 될 것이고, 1바이..

  • format_list_bulleted 프로그래밍
  • · 2016. 1. 26.
  • textsms

MyBatis 샾(#) 달러($) 차이

select * from TestTablewhere testId = #{testId} MyBatis에서 위와 같은 쿼리문을 실행하게 되면 database에서는 아래 쿼리문에 대한 의미, 구문 분석 및 파싱 작업을 진행하게 된다. select * from TestTablewhere testId = ? 만약 testId에 1 값이 바인드 되게 되면 database에서는 이미 파싱되어 있는 쿼리문을 재활용하게 되기에 위의 작업들을 줄일 수 있다.단, 데이터베이스 옵티마이저에 대한 수행 계획은 항상 동일하다라는 것이 단점이다.수행 계획에 따른 데이터 추출은 데이터의 분포도에 영향을 받게 되는데 만약 1 이라는 값이 TestTable에 4개 존재하고, 2 라는 값이 1000개 존재한다고 했을 때1을 추출할 때에는..

  • format_list_bulleted 프로그래밍
  • · 2016. 1. 21.
  • textsms

tag 라이브러리 동작 원리에 대해서 생각해 보자

1. 사용자 request 요청 /test.jsp2. jsp에서 데이터 렌더링 중 tag lib를 만남3. tag lib 인스턴스 생성 후 attribute에 선언되어 있는 속성에 데이터 바인딩 진행 (리플렉션 사용)4. doStartTag() 실행5. jsp에서 또 tag lib를 만남6. 3에서 생성한 인스턴스를 가져와 다시 attribute에 선언되어 있는 속성에 데이터 바인딩 진행 7. 사용자 request 요청 /test2.jsp8. jsp에서 데이터 렌더링 중 tag lib를 만남9. tag lib 인스턴스 생성 후 attribute에 선언되어 있는 속성에 데이터 바인딩 진행 정리를 해보니 jsp 안에 선언되어 있는 태그라이브러리를 만나게 되면 tag-class 엘리먼트에 선언되어 있는 클래스..

  • format_list_bulleted 프로그래밍
  • · 2016. 1. 18.
  • textsms
Spring Scoped Proxy Beans (prototype 빈 DI로 주입해서 사용)

Spring Scoped Proxy Beans (prototype 빈 DI로 주입해서 사용)

Spring 에서의 IoC 방식은 두 가지가 있다. DI, DL 방식DI 방식은 주입되는 객체의 인스턴스가 싱글톤일 때 사용하고,DL 방식은 매번 새로운 인스턴스를 생성하여 빈을 사용하고자 할 때 이용되는 것으로만 알고 있었다. 허나, 팀 동료로부터 새로운 정보를 들었는데DI 방식으로 의존성 주입된 빈을 사용할 때마다 새로운 인스턴스의 빈으로 연결 받을 수 있다고 하였다. 새로운 사실에 놀라 자료를 찾아보고 테스트를 해보니 정말로 가능하다는 것을 알게 되었다. MemberService는 prototype이 선언된 빈이다.테스트 클래스에 MemberService를 DI 받고 getMember() 메소드를 10번 호출해 보면 단 한 번의 인스턴스만 생성된 것을 확인할 수 있다.@Component @Scope..

  • format_list_bulleted 프로그래밍
  • · 2016. 1. 14.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • ···
  • 10
  • navigate_next
전체 방문자
오늘
어제
전체
전체 카테고리
  • 분류 전체보기 (417) N
    • WebRTC (7)
    • 프로그래밍 (139)
    • AI 활용 (2) N
    • 서버 (49)
    • 개발툴 (102)
    • 개발이야기 (10)
    • 장애 경험 (1)
    • 유용한 도구 (4)
    • 끄적끄적 (17)
    • 독서 (83)
    • 회고 (2)
    • 재테크 (1)
최근 글
최근 댓글

캘린더

«   2025/05   »
일 월 화 수 목 금 토
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
태그
  • #Apache
  • #tomcat
  • #vagrant
  • #HTTP
  • #git
  • #Wireshark
  • #Database
  • #VirtualBox
  • #Jenkins
  • #JPA
  • #실거주
  • #Eclipse
  • #javascript
  • #java
  • #JUnit
  • #개발주의사항
  • #Spring
  • #maven
  • #부동산
  • #내집마련
  • #ant
  • #SQL
  • #제너릭
  • #algorithm
  • #JQuery
  • #Docker
  • #Elasticsearch
  • #Kubernetes
  • #SourceTree
  • #리눅스
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바