
안녕하세요!! 오늘은 회사 근처에 있던 뷰 맛집 카페를 소개 하려고 합니다. 매봉쪽에 양재천이 있는데 여기 가로수길을 따라서 여러 카페와 bar가 있는데 오늘은 그 중 나른한 오후에 들리면 좋을 카페를 소개해 보도록 하겠습니다. 제일 먼저 우릴 반겨주는 간판!! 미국 느낌도 나고 저는 갠적으로 시작부터 좋았네요 그리고 도보로 걷다보면 카페가 잘 안보여서.. 이걸 찾는게 더 빠를것 같네요 폴딩문으로 되어 있는 정문입니다. 제가 갔을 땐 봄이라서 이렇게 활짝 열어두었지만 쌀쌀한 날에가면 닫아둘 것 같네요ㅠ 날 따듯할때 가세요!!! 내부에 장식된 케이크인데 케이크에 프린팅해서 주는거 같더라구요 기념일에 특별한 케이크 만들고 싶을때 와도 좋을것 같습니다ㅋㅋ 무릎담요까지 세심하게 챙겨주는 곳이네요~ 메뉴는 단촐하..
무한 스크롤에서 사용되는, 스크롤이 맨 아래로 왔을 때 moreData를 호출하는 로직 $(document).ready(function(){ //window는 "#searchPopup"등 으로 스크롤 주체로 변경가능 $(window).scroll(function(){ var scrollTop = $(this).scrollTop(); var innerHeight = $(this).innerHeight(); var scrollHeight = $(this).prop('scrollHeight'); if(scrollTop + innerHeight >= scrollHeight) { moreData(); } }); }); 스크롤 주체가 어떤 영역인지 모를땐, 스크롤을 내리면서 $('#searchPopup').scro..
@Query Spring Data JPA에서는 기본적으로 JpaRepository를 통해서 제공되는 findById 같은 메서드도 있고 메서드 네이밍만을 통해서 쿼리를 실행할 수 있도록 기능을 제공, 하지만 이 방법만으로 만들 수 없는 쿼리가 있다면 쿼리를 직접 작성해야하며 그 때 커스텀 Repository의 메서드에 붙이는 어노테이션이 @Query입니다. 기본적으로 JPQL로 작성할 수 있고, nativeQuery=true 옵션으로 네이티브 쿼리도 사용 가능합니다. @Modifying @Query로 작성된 변경, 삭제 쿼리 메서드를 사용할 때 필요합니다. 주로 벌크 연산 시 사용됩니다. JPA Entity LifeCycle을 무시하고 쿼리가 실행되기 때문에 해당 어노테이션을 사용할 때는 영속성 콘텍스트..
@Autowired란? 의존성을 주입 할 때 사용하는 어노테이션으로 의존 객체의 타입에 해당하는 bean을 찾아주는 역할을 한다. 사용 가능한 위치 생성자(스프링 4.3부터 생략 가능) Setter 필드 생성자에 @Autowired (스프링 4.3부터 생략가능) @Service public class TestService { TestRepository testRepository; @Autowired public TestService(TestRepository testRepository) { this.testRepository = testRepository; } } public class TestRepository { .... } 위 코드에서 TestRepository의 의존성 주입이 작동할까? 당연히 작..

의존성 추가하기 implementation group: 'io.springfox', name: 'springfox-boot-starter', version: '3.0.0' 스웨거의 경우 springDoc라는 라이브러리가 1개 더 있고, 2.x 와 3.x 버전의 차이가 있다. SwaggerConfig.java 추가 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors..

안녕하세요 오늘은 인천에 놀러간 뒤 우연히 발견한 카페를 소개할까 합니다. 가볍게 위치부터 올려드리겠습니다. 요즘같이 무더운 여름날 월미도를 갔다가 차이나 타운을 구경하니 너무 힘들었습니다. 그래서 개화거리에 일본식 목조 카페가 유명한 곳도 많았지만 구경만 살짝하고 집에 가려던 찰나!! 차이나타운 카페 앵커 1883을 발견했습니다. 입구쪽에 건담이랑 큰 돌이 눈에 띄고 안쪽으로도 굉장히 넓은 홀이 눈길을 끌게되었고 홀린듯 입장하게 되었어요 카페 시간 및 1~3층까지의 공간이 간단히 설명되어있네요!! 가장 중요한 메뉴판입니다. 깜빡하고 커피 사진을 못찍었는데 ㅠㅠ 사진이 없는 대신 맛을 좀 자세히 다뤄보겠습니다. 우선 처음 방문하는 곳이니 만큼 시그니처 메뉴를 물어봤는데 앵커라떼를 추천해주셨습니다. 이 커..
로그인이 필요한 서비스에 접근 시 비로그인일 경우 로그인 페이지로 이동이 될 것이다. 그리고 사용자 편의를 위해 로그인 후 이전 페이지로 돌아와 원래 하려던 작업을 할 수 있도록 소스 구현이 필요한데 아래와 같은 소스가 자주 사용된다. location.href = "/login?returnUrl="+location.href; 이렇게 사용할 경우 손쉽게 처리가 가능하지만 한 가지 문제를 직면할 수 있다. 만약 location.href의 값이 "/event/view?mbrId=abc&addr=korea&gender=M" 위와같이 되어 있고 위 정보들이 모두 필요하다면 서버에서 returnUrl은 mbrId=abc까지만 받아지고 그 뒤에 주소와 성별은 짤리게 되는 현상이다. 이는 뒤의 값을 다른 파라미터로 인..
mybatis로 DB조회하는 환경에서 업무성격에 따라 대용량을 조회하는 경우 수십초가 걸리는 경우가 있습니다. 이때 같은 쿼리를 툴에서 돌려보면 1초 정도로 아주 빠르게 조회되는 경우가 있는데 어떻게 해결할 수 있을까요? 바로 코드부터 보게된다면 아래와 같습니다. select * from board fetchSize는 보통 설정하지 않는 옵션인데 그렇게 될 경우 기본값은 10 입니다. 즉, 조회할 데이터가 1000개라면 100번을 조회하게 됩니다. 하지만 1000으로 설정할 경우 1번만 조회하게 되는것이지요. 어떤 사용자가 성능테스트를 한적이 있는데 109k의 데이터를 조회하는데 1분 40초가 소요 되었지만 fetchSize를 설정하면 아래와 같이 소요되었다고 합니다. fetchSize=75 -> 15초..