전체 글

Do Love! Write Code!
Programming/Database

[Mysql] group_concat 으로 그룹핑한 데이터 하나로 모으기

쿼리로 통계 또는 지표 데이터를 만들다 보면 그룹화된 데이터를 하나의 데이터로 표출해야 하는 경우가 생기게 된다. ex) 서비스를 이용하고 있는 사용자들의 이름 또는 아이디 정보를 쉼표로 구분해서 하나의 문자열로 합쳐서 보고 싶다!. 그런 경우에는 mysql에서는 group_concat 함수를 실행시키면 된다. group_concat 함수의 자세한 스펙은 다음과 같다. https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html#function_group-concat MySQL :: MySQL 8.0 Reference Manual :: 12.20.1 Aggregate Function Descriptions MySQL 8.0 Reference Manu..

Programming/Java

[Java] 사용하는 라이브러리의 라이선스 내용 출력하기

프로젝트를 진행할 때 우리는 여러 라이브러리를 여기저기서 끌여다가 사용하게 됩니다. 열심히 만든 개발 결과물이 개발 단계에서 사용된 외부 라이브러리로 인해 낭패 보지 않도록 프로젝트 내에서 사용한 각 라이브러리에 대한 라이선스 정보를 파악할 필요성이 있습니다. 각 라이브러리를 하나씩 찾아서 수기로 작성하기엔 시간도 아깝고 눈도 아픕니다. 이를 자동화하여 추출할 수 있는 방법을 소개해드리겠습니다. Spring Boot와 Gradle 기반의 프로젝트의 예시 build.gradle 에 다음과 같이 라이브러리 추가 (Gradle ≥ 5.*) plugins { .... // 여러 플러그인들... id "com.github.jk1.dependency-license-report" version "1.13" } 이후 ..

Programming/Algorithm

[Java-알고리즘] Frog Jumps

Problems: 개구리의 현재 좌표는 X이며, 가고 싶은 위치의 좌표는 Y이다. 개구리는 한 번에 D 만큼 이동할 수 있다. 개구리가 Y까지 가는데 최소 몇번 이동해야 하는지 구하라. 조건: - 개구리는 최소 Y와 같거나 그 이상 이동하고 싶어 한다. - X, Y, D는 모두 정수이며 값의 범위는 [1.. 1,000,000,000]이다. - X ≤ Y이다. Idea: 원하는 곳의 좌표 - 현재 좌표 = 거리 거리 / 이동 가능 거리 = 이동 횟수 거리 % 이동 가능 거리 = 남은 거리 남은 거리 < 원하는 거리 = 한번 더 이동해야 한다. Solution: class Solution { public int solution(int X, int Y, int D) { if(X == 1 && Y ==1){ r..

Programming/Java

[Intellij IDEA Plugin, Java] SonarLint 코드 퀄리티를 높여보자!

현재 내가 다니고 있는 회사에는 서버, 웹 클라이언트, 안드로이드등 여러 개발 직군들 별로 서브 챕터라는 이름으로 논리적인 팀이 구성되어있다. 현재 서버 서브 챕터 조직은 6명의 서버 개발자분들이 소속되어있으며, 우연치 않게 내가 서버 서브 챕터의 리더를 맡게 되었다. 나는 서버 서브 챕터원들이 협업하는데 있어서 문제가 없도록 프로젝트 설계 가이드라인을 작성하고, 사용할 개발 스택 선정하고 이를 각 챕터원들에게 공유했다. 최근 서버 개발자분들이 모두 투입되는 통합 프로젝트를 진행하고 있는데, 각 담당 서버별로 코드 리뷰와 API 설계를 검토하면서 컨벤션이 필요하다는 점을 느끼게 되었다. 프로젝트 설계에 대한 가이드라인은 제공하였기 때문에 구조를 파악하는데 힘이 들진 않았지만, 코드의 네이밍 규칙이 정해져..

Programming/Algorithm

[Java-알고리즘] 카카오 블라인드 코딩 테스트 - 비밀 지도

알고리즘 공부하다가 해당 문제 내용이 나와서 풀이를 올려본다. 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 “공백”(“ “) 또는 “벽”(“#”) 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 “지도 1”과 “지도 2”라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. “지도 1”과 “지도 2”는 각각 정수 배..

Programming/Java

[Java8] Stream API 공부 정리 (1)

Stream Class Colleciton의 요소를 하나씩 참조해서 람다식으로 처리할 수 있는 클래스 java 7 이전 코드 예시 1 List data = Arrays.asList("아메리카노","카페라떼","콜드브루","바닐라 라떼"); iterator iterator = data.iterator(); while(iterator.hasNext()){ System.out.println(iterator.next()); } 예시 2 List data = Arrays.asList("아메리카노","카페라떼","콜드브루","바닐라 라떼"); for(String name: data){ System.out.println(name); } java 8 이후 코드 List data = Arrays.asList("아메리카노..

Programming/Server

[ELK] AWS Elastic Load Balancer Log 분석하고 대시보드 만들기[2]

2019/11/06 - [Server/Devops] - [ELK] AWS Elastic Load Balancer Log 분석하고 대시보드 만들기 [1] [ELK] AWS Elastic Load Balancer Log 분석하고 대시보드 만들기[1] AWS에서 서비스를 운영하고 있는 사람이라면, 또는 AWS Route53에 도메인을 등록하고 Https로 서비스를 하고 있는 사이트를 연동했다면 AWS Elastic Load Balancer를 사용하고 있을 것이고, 보통 다음과 같은 구조.. johnmarc.tistory.com 이전 포스팅에서는 AWS의 ELB(Elastic Load Balancer)에 대해 간략하게 알아보고, ELB의 로그 기능을 활성화하여 AWS S3 서비스에 파일로 저장하는 과정까지 설명..

Programming/ETC

[Micro Software Architecture] Netflix OSS - 1

"MSA란, 시스템을 여러 개의 독립된 서비스로 나눠서, 이 서비스를 조합으로서 기능을 제공하는 아키텍처 디자인 패턴" - 조대협 Amazon의 선택 2002년 제프 베조스 메일(Amazon CEO) 모든 팀들은 데이터와 기능들 서비스 인터페이스로 연결시켜라 팀들은 이 인터페이스를 통해서만 연락해야 한다. 다른 어떤 커뮤니케이션 방법도 허용되지 않는다. 직접 링크를 보내거나 다른 팀의 스토리지에 직접 액세스해서도 안 되며, 공유 메모리나 백도어 같은 것도 안된다. 모든 커뮤니케이션은 네트워크를 통한 서비스 인터페이스로 이루어져야 한다. 어떤 기술을 쓰든 상관없다. HTTP, Cobra, Pubsub, 독자 프로토콜.. 그건 상관없다. 모든 서비스 인터페이스는 예외 없이 외부에서 이용 가능하게 만들어져야 ..

JohnMark
Love And Code