IT/개발지식
jitPack으로 라이브러리 배포하기
내가 개발한 무언가를 라이브러리로 만들어서 배포하고 싶을때 jitPack을 활용하면 간단하게 할 수 있다. 그런데 불행히도 공식 문서가 약간 부족한 느낌이고 블로그도 제대로 정리된게 없는것 같아 몇 자 적어본다. 1. 배포할 라이브러리 개발 우선 Github Repository를 만들어서 코드를 올린다. 여기까지는 되어있어야 한다. 예제로 간단히 오늘 날짜를 조회할 수 있는 DataService를 만들어봤다고 치자. (언어는 코틀린이다.) @Component class DateService { fun getBaseDate(): LocalDate { return LocalDate.now() } fun getBaseDateTime(): LocalDateTime { return LocalDateTime.now..
정규 표현식 빠르게 만들기
정규 표현식 문법은 왜 그렇게 봐도봐도 헷갈리는지 쓸때마다 stackoverflow를 전전하다가 최근에 들어서 정규 표현식을 빠르게 뚝딱 만드는 절차(?)를 정립했다. 하지만 먼저 기본적인 문법 정도는 알고 있다는 전제가 필요하다. 그러니까 대충 email에 사용되는 표현식을 만든다고 했을때 정확하지 않더라도 검색없이 대충 작성해볼 정도는 되어야한다. 만약 기초가 아예 없다면 아래 문서를 빠르게 한번 훑자. https://learn.microsoft.com/ko-kr/dotnet/api/system.text.regularexpressions.regex?view=net-6.0 Regex 클래스 (System.Text.RegularExpressions) 변경할 수 없는 정규식을 나타냅니다. learn.mic..
쿼리에서 비즈니스 로직을 걷어내자
소스 코드를 보다보면 간혹 복잡하고 긴 쿼리를 맞딱뜨릴 일이 있다. 문제는 100라인이 넘어가는 긴 쿼리를 분석하고 수정해야 하는 경우다. 특히 쿼리가 어딘가 잘못되어 빠르게 고쳐야만 하는 상황이라면 눈앞이 아득하다. 아래 예시를 보자. SELECT A.ID, A.NAME, B.ADDRESS, A.NVL(GRADE, ""), CASE WHEN A.GRADE >= 4 THEN "Y" ELSE "N" END AS SCHOLARSHIP_CANDIDATE, C.PROFESSOR, A.PHONE, A.COMMENT FROM STUDENT A, CAMPUS B, PROFESSOR C, LECTURE D, MAJOR E WHERE A.PROFESSOR_ID = C.ID AND A.SCHOOL_ID = B.ID AND..
Spring @Cacheable을 내부 메서드에 쓰면 안되는 이유
자주 사용되면서 호출이 빈번한 데이터를 메모리에 쉽게 캐싱할 수 있도록 Spring에서는 @Cacheable을 제공한다. 하지만 아래 예제와 같이 내부 메서드에 @Cacheable을 설정하면 캐싱이 작동하지 않는다. @Slf4j @Service @RequiredArgsConstructor public class ProductService { private final productJpaRepository productJpaRepository; public ProductInfo getProductInfo(String productName){ List products = productJpaRepository.findAllByProductName(productName); long allProductCount =..
Spark 개발 환경 구축하기 - Scala, IntelliJ, SBT
Spark 애플리케이션을 개발에는 크게 Scala 또는 Python을 사용할 수 있다. 기존에 자바로 개발을 주로 해왔던 개발자라면 Scala를 선호할텐데 개발 환경 세팅을 할때 참조할만한 자료가 많지 않아 직접 프로젝트 세팅을 하며 정리해봤다. 시작하기에 앞서 세 가지 선결 사항이 있다. Spark 설치, 환경변수 설정 Scala 설치 IntelliJ Scala plugin 설치 설치 방법은 구글에서 쉽게 찾을 수 있다. 본 게시물 최하단에도 참고 링크를 걸어두었다. 1. 프로젝트 생성 이제 Scala, Spark, IntelliJ Scala plugin 설치는 모두 되어있다고 가정하고 IntelliJ 새프로젝트를 생성해보자. build tool을 선택하면 되는데 sbt가 recommended라고 되어..