현재까지 207개의 포스트를 작성했어요.

Jul 2024

Java generic erasure와 ParameterizedTypeReference

TRY Java의 Generic은 컴파일 시 Object로 변경되거나 혹은 bound type(<E extends ExampleObject>) 같은 경우 ExampleObject 로 변경됩니다.. 그렇다면 ParameterizedTypeReference 는 어떻게 동작하는걸까요? CATCH Generic erasure 먼저 제네릭 소거는 다음과 같이 제네릭이 사용된 경우 컴파일 시 소거됩니다. // 소거 전 public class ExamClass<T> { private T value; public void set(T value)... [Read More]

May 2024

Dec 2023

Java의 List, Set, Map의 of() static method (Immutable Collections)

TRY 지금까지 List.of, Set.of, Map.of를 그냥 Collection을 간단하게 생성할때 사용했었습니다. 그동안 List등 Of()로 생성한 Object의 요소를 변경하지않았기에 몰랐는데 오늘 메서드를 통해 생성된 Collection 들이 Immutable이란걸 알게 되었습니다. [Read More]

Nov 2023

Oct 2023

Sep 2023

Jetson nano install 및 boot usb(with black sreen)

TRY 원래 vscode 서버용 및 간단한 api 서버, 장난감용으로 쓰던 Jetson 시리즈를 팔았다가 다시 사용하고 싶어져서 구매했다. 처음에 jetson image를 sd card에 설치를 하고 usb로 부팅하려 했는데 문제가 생겼다. 그후 다시 sd card를 flash 하자.. [Read More]

Jvm heap profiling

TRY 자바 앱의 메모리의 사용량이 높게 나와 메모리 누수를 확인하려고 했다. GC등 정상적으로 돌고있는 것 같은데 메모리가 조금씩 올라가는 것 같았다. 그래서 heap dump 분석하려한다. [Read More]

Aug 2023

Java Optional의 orElse 와 orElseGet

TRY Java의 Optional을 사용하면서 orElse와 orElseGet, orElseThrow는 정말 많이 사용한다. 그중 평소 orElse와 orElseGet는 그냥 null 값일때 빈 객체등을 받기위해 사용했었는데 이번에 map()등 stream api 메서드들과 사용하면서 의도와는 다르게 동작해 의아했고 또 재밌었다. 같이 보자. [Read More]

Aws Instance Monitoring with Prometheus and Grafana

TRY 배포된 서버의 모니터링은 중요하다. 서버의 상태는 각 인스턴스나 LB등에서 확인가능하나 하나씩 들어가 확인하기 너무 귀찮고 ui도 별로다. 원하는 metrics와 ui로 확인하고 싶어진다. 그라파나와 프로메테우스를 사용해보자. [Read More]

Aws Profile 추가

TRY aws cli 에서 여러가지 프로파일을 사용할 수도 있는 상황이 생긴다. 이때 추가하는 방법. [Read More]

Aws sdk v2 와 Spring-cloud-aws(feat Spring boot3 and s3mock)

TRY S3관련 서비스를 구축하면서 겪었던 문제들이다. Spring boot 3을 사용하면서 다양한 이슈들을 겪었는데 (jakarta등 라이브러리 호환..) 처음 사용했던 Spring-cloud-aws 2버전대가 boot3와 이슈가 있다는 걸 지나가다 보았다. SQS를 이제 곧 사용하게 될텐데 이부분에서 이슈가 있다는 글들이었다. 해당 글들을 확인하고 spring-cloud-aws의 git을 확인하였다. link 이왕이면 호환도 되고 DynamoDB도 추가된 aws sdk v2를... [Read More]

Jul 2023

Jun 2022

r2dbc에서 Custom id 사용하기.

문제 save 시 @Id 컬럼을 기준으로 이 객체가 isNew인지 아닌지 체크 repository의 기본 save를 이용 시 새로운 객체로 insert를 해야하는데 update를 하려고 하고, 이때 없는 데이터라 update가 되지않음. [Read More]

May 2022

grpc protoc 예

protoc -I=. \ –go_out . –go_opt paths=source_relative –go-grpc_out . –go-grpc_opt paths=source_relative proto/pbfile.proto

Apr 2022

Aug 2021

Jul 2021

python 에서 gRPC 테스트 해보기

gRPC란 RPC 란 Remote Procedure Call의 약자로 간편하게 다른 서비스의 함수 프로시저등을 호출할 수 있는 프로토콜이다. 다양한 언어를 지원하므로 언어가 다르거나 한 다른 서비스에 있는 함수나 프로시저를 호출하여 사용할 수 있다. 다양한 언어를 사용하는 MSA 구조에서 더욱 좋을 것 같다. gRPC gRPC는 구글에서 만든 RPC로 TCP/IP 와 HTTP/2를 프로토콜을 사용한다.... [Read More]

Jun 2021

Mar 2021

May 2020

Jan 2020

Dec 2019

Nov 2019

SonarQube란

소나큐브(SonarQube)란? 정적 분석툴로써 코드의 버그, 구린코드(Code Smell), 보안에 취약한 코드 등을 점검해주는 툴이다. 버그는 잘못된 코드나 개발자의 의도대로 동작하지않을 코드 구린코드는 정상동작은하나 유지보수가 힘들거나 중복, 복잡한 코드, unittest에 포함되지않은 코드등을 표시해준다고 한다. 보안은 SQL Injection, hard-coded 비밀번호, 제대로 핸들링 되지 않은 에러등을 발견해준다고 한다. SonarQube Server는 코드를 분석하고 그 결과를... [Read More]

Stream 이란..

자바 Stream 이란 컬렉션에 저장된 요소들을 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자이다. Iterator 와 비슷한 반복자이다. 내부 반복자를 사용해 병렬처리가 쉽다고 한다.(외부는 개발자가 직접 요소를 반복하는 패턴for,while등) 개발자는 로직 코드만 작성해주면 된다. 스트림의 흐름 스트림 생성 > 중간연산 지정(스트림 리턴) > 종료연산을 적용해 결과 리턴(기본이거나 optional) 중간연산(여러번 사용가능)... [Read More]

맥에서 파이썬 버전 설정

맥에서 brewdhk pyenv를 통해 파이썬 버전을 3.6.8버전을 받았다. 근데 파이썬 버전을 확인해보면 2.7.10 버전으로 되어있고 바뀌지 않았다. [Read More]

Oct 2019

Junit사용..

Junit이란 단위테스트 도구.. 생각보다 맘처럼 안된다. test class에서 구현하므로 기능추가 시 재사용이나 restdocs같은 문서화가능한 것들과 같이 쓰면 문서 공유도 할 수 있다. [Read More]

Sep 2019

Kafka-Docker image를 위한 Dockerfile 작성

Kafka-Docker image를 위한 Dockerfile 작성 환경 Dockerfile 및 Shell script 작성 build 생성된 image로 run 환경 host : alpine-linux Kafka : 2.2.1 jdk : openjdk 8 Dockerfile 및 shell script 작성 Dockerfile # 베이스 이미지 FROM alpine # 기본 베이스 패키지 설치 # no cache -> apk를 run할때 이미지화하여 저장해두기때문에... [Read More]

Docker에 Kafka 설치하기

간단하게 도커에 카프카를 설치하는 방법을 적어둔다. 이후에 DockerFile 작성이나 EntryPoint등에 대해 적을 것이다. 도커 우분투를 이용할 것이다..(용량이 가장 적고 빠른건 Alpine-linux이다) [Read More]

Aug 2019

Netfilx OSS란?

Netflix Open Source Software (Netflix OSS) 넷플릭스에서 제공하는 오픈소스소프트웨어 (넷플릭스 OSS) [Read More]

서비스 아키텍처

모노폴리 아키텍처 일단 전통적인 아키텍처로 모노폴리 아키텍처가 있다. 이는 하나의 애플리케이션 내에 모든 로직들이 모두 들어 가 있는 기본적으로 생각할 수 있는 모습인 것 같다. UX부터 모든 서비스컴포넌트가 합쳐진 상태로 보면 될 것이다. [Read More]

Jul 2019

자바는 CallBy???

면접 질문중 자바는 Call By Value와 Call By Reference중 어떤 것이냐는 질문도 있었다는 걸 들었다.. 사실 이런 부분까지 생각해 본 적은 없었다.. 자바는 어떤걸까? 일단 두개가 뭔지 알고 가자 [Read More]

static에 대해

오늘 면접에서 static의 생명주기에 대한 질문을 들었다. static의 용도나 메모리에 한번 올라가고~ 이런건 알았는데 static이 언제 생성되고 언제 소멸하는지는 대충은 생각하고 있었지만 정확한 때는 몰랐던 것이다. 내가 생각하던건 선언될때 생성되고, 프로그램이 종료될때 소멸된다.. 라는 것 [Read More]

해시맵이란

해싱(Hashing)이란 해시함수(hash function)를 이용해서 데이터를 해시테이블(hash table)에 저장하고 검색하는 기법을 말한다. [Read More]

Jun 2019

웹소켓과 쓰레드

WebSocket이란 웹소켓(WebSochet)은 서버와 클라이언트 간의 효율적인 양방향 통신을 실현하기 위한 구조 Transport protocol의 일종으로 쉽게 이야기하면 웹버전의 TCP 또는 Socket (소켓)이다. WebSocket은 서버와 클라이언트 간에 socket connection을 유지해서 언제든 양방향 통신 또는 데이터 전송이 가능하도록 하는 기술 Real-time web application에 쓰이며 서버 쪽 또는 클라이언트 쪽 데이터가 실시간으로 업데이트 되는... [Read More]

19-06-15

오늘 한 것 - 슬랙 api 추가 - 오늘 기존 프로젝트들의 aop에 슬랙 API를 추가하였다. 다른 properties를 이용하여 key를 숨겼는데 필드값으로 SlackAPI를 생성하면 오류가나면서 되지않았다. 그래서 각 @어노테이션안에서 api를 생성하게 하였다. 그냥 api값을 넣으면 되는데 @Value에 담아서 하면 오류가 난다.. [Read More]

RestTemplate, Webclient

Blocking I/O 기반의 RestTemplate, Non-Blocking I/O 기반의 WebClient ~~~ WebClient는 Non-Blocking I/O 기반이기 때문에 각 Http 요청이 비동기적으로 발생하게 됩니다. 따라서 위 RestTemplate를 이용하여 Http 요청을 진행했을 때와 다르게 동작하게 되며 총 합쳐 대략 8초 정도가 걸리는 것이 아닌 각각 5초, 3초 걸리는 Http 요청을 동시에 처리하게 됩니다. Mono는 WebClient의... [Read More]

Test를 위한 @ 및 메소드

@RunWith JUnit 확장 하는 어노테이션이며 SpringJUit4classRunner로 JUnit용 테스트 컨텍스트 프레임 워크 확장 클래스를 지정하면 테스트 진행 시 컨텍스트를 생성하고 관리하는 작업을 한다. [Read More]

19-06-02

오늘 한 것 이력서 및 면접 준비 프로그래머스 타겟넘버 [Read More]

컴퓨터보안

기밀성 - 허락 x가 view 못하게 - 비밀번호 은행의 고객 개인정보 나 계좌정보가 제3자에게 알려지지않게 방지 무결성 - 허락 x가 수정 못하게 - 계좌번호. 입출금정보 DB 내 개인정보가 임의로 수정되지 않게 [Read More]

19-06-01

오늘 한 것 대학 시험 이력서 및 면접 준비 프로그래머스 영어 끝말잇기 [Read More]

May 2019

19-05-30

오늘 한 것 프로그래머스, 더 맵게 검색 추가중 면접 [Read More]

19-05-27

오늘 한 것 slack api를 작성 시도중이다. 하지만 생각보다 잘 안되는 것 같다. 구글링도 예전자료가 대부분이고.. 계속 시도해봐야겠다 내일부터는 당분간 Search를 개발하려 한다. [Read More]

Tt

오늘은 쉰다

19-05-23

오늘 한 것 오늘 티몬의 인턴에 지원한 애들이 3시간짜리 문제 푸는걸 봤는데 정말 어려워 보였다. 알고리즘 좀 열심히 해야겠다. 자바 공부도 해야겠다 (쓰레드 관련 문제가 나온 것 같다.) Search 작성 [Read More]

19-05-22

오늘 한 것 페이징 수정 (0으로 나오던것을 1이 나오게 수정) 기존의 문제점은 페이지네이션이 되긴했는데 1을 눌렀을때 페이지넘버를 보면 0으로 출력됐었다. 이는 @Pageabledefault를 사용한다면 기본적으로 인덱스가 0이 나오는 것 같았다. 그래서 직접 Pageable을 수정해줘야 하는데 이때 쓴 것이 ‘PageRequest.of’이다 [Read More]

19-05-20

오늘 한 것 send를 model에 담아 구현했다. 계속 쿼리에서 named parameter not bound가 떠서 파라미터 명을 바꿔보고 이것저것 다 해봤지만 결국 답은 :파라미터를 : 파라미터 로 써놔서 그런 것이었다. [Read More]

19-05-17

오늘 한 것 send를 만들고있는데 잘 안된다, 400에러가 떠서 ajax, 파라미터값과 xhr 코드도 넣어주고 헀더니 405가 뜬다. 더 수정해보자 일단 방식은 id값을 넘겨받아 id에 해당하는 isbn으로 book을 검색해 세션에 저장하는 방법으로 하려한다. post로 바꾸니 500이 뜬다(value를 적어주면 500, 안적으면 405) [Read More]

19-05-16

AWS 세미나에 다녀왔다. AWS 서비스 종류가 정말 많다

19-05-15

오늘 한 것 api 키를 숨겨야 해서 rest.properties로 생성해서 거기다 넣어줬다. 이때 오류가 났는데 ~~~ is = new FileInputStream(resource.getFile()); is = getClass().getResourceAsStream(“/rest.properties”); //경로 지정 ~~~ [Read More]

19-05-14

오늘 한 것 api 키를 숨겨야 해서 rest.properties로 생성해서 거기다 넣어줬다. 이때 오류가 났는데 ~~~ is = new FileInputStream(resource.getFile()); is = getClass().getResourceAsStream(“/rest.properties”); //경로 지정 ~~~ [Read More]

19-05-13

오늘 한 것 null check를 optional로 바꿨다. optional은 NullPointException에 유리하다고 들었다.. 이 주에 할 것 [Read More]

19-05-12

오늘 한 것 오늘은 일기장을 진행하며 몇가지 에러가 있었다 오늘은 글쓰기 하는 중 이었는데 그중 하나는 java.util.Date cannot be cast to java.lang.Number; 이 에러가 계속 났다. 왜그런걸까 계속봐도 양식이 안맞는다는데 대체 왜..하고 보고있었는데 addBoard에서 userid를 저장하는데 getRegdate()를 받고있었다.. 당연히 안된다 수정해서 고쳐졌다. userid를 fk로 사용화려고 DB에서 fk로 추가해놨었는는데 이게 계속... [Read More]

19-05-09

오늘 한 것 북마크 개별 삭제에서 맨 위에 버튼만 먹었는데 href=”javascript:void[0];” th:onclick= “‘javascript:deleteicon(‘+${bookmarks.id}+’)’” 를 넣어서 각 버튼이 동작하게 했다. [Read More]

19-05-07

오늘 한 것 북마크에 추가하기 버튼을 눌렀을때 db에 있는지 확인하여 없으면 book DB에 api에서 불러온 정보들이 저장되도록 만들고 있다. 아직 들어가지않는다. [Read More]

19-05-06

오늘 한 것 오랜만에 spring dairy 개인프로젝트를 진행했다. 회원가입,로그인,로그아웃등을 구현하였고 list페이지에서 추가,수정,삭제등을 구현하였다. 리스트 페이지는 1년동안 모든 일기리스트를 보여줄 예정이므로 무한스크롤을 추가해볼 예정이다. [Read More]

19-05-05

오늘 한 것 오랜만에 spring dairy 개인프로젝트를 진행했다. 회원가입,로그인,로그아웃등을 구현하였고 list페이지에서 추가,수정,삭제등을 구현하였다. 리스트 페이지는 1년동안 모든 일기리스트를 보여줄 예정이므로 무한스크롤을 추가해볼 예정이다. [Read More]

19-05-03

오늘 한 것 ajax에서 호출 시 계속 403, 리스트로 받는 checkbox 삭제는 404가 떴다. 이것저것 ajax를 시도해봤으나 계속 403, 404, xhr문제가 떴었다. 근데 결국 검색해 찾아냈다. 구글 검색 결과의 몇몇 문서에서는 http.csrf().disable()와 같이 csrf를 disable 하라고 하지만 이렇게 할 경우 보안에 문제가 발생할 수 있기 때문에 좋지않다. 그럼 csrf 가... [Read More]

19-05-02

오늘 한 것 ajax에서 데이터가 넘어가지않는다 계속 시도중..delete method도 써보고 get,post도 써보고있다. 선택삭제에는 post를 사용하고있다. [Read More]

19-05-01

오늘 한 것 ajax로 보내주는 리스트를 콘트롤러에서 받아 삭제하려는데 어렵다 [Read More]

Apr 2019

ajax 란?

AJAX는 무엇입니까? AJAX- 비동기 자바 스크립트와 XML [Read More]

프로젝트 진행 순서

프토로타이핑 DB 설계 domain 작성 entity 매핑 회원 가입 및 로그인 작성 공지사항 작성 엔티티 작성, 매핑, 콘트롤러, 레파지토리, 서비스, html 작성, 시큐리티에 추가 crud 작성 이미지 올리기, 페이징, 검색 관리자페이지 작성 챌린지 작성 다이어리 작성 kakao api 적용(book) - 책 제목을 검색해 값을 가져온다. bookmark 새로 생성 - 엔티티,... [Read More]

Mar 2019

소프트웨어아키텍처

소프트웨어 아키텍처의 설계 정의 : 아키텍처는 비즈니스 요구사항을 만족하는 시스템을 구축하기 위해서 전체 시스템에 대한 구조를 정의한 문서로써 시스템으르 구성하는 구성요소와 그 구성요소간의 관계, 그리고 구성요소가 다루는 정보를 정의 즉 아키텍처는 비즈니스 요구사항을 기술로 해석해 놓은 것이다. 아키텍처는 개발의 방향을 알려주는 지도이고 의사소통의 매개체가 된다. 이는 아키텍처를 보는 사람들이 이해할... [Read More]

xml 이란?

xml 이란? Extensible Markup Language 마크업 언어를 정의하기 위한 언어, 확장이 가능한 언어이다. HTML 이 데이터를 표현하는 마크업 언어라면, XML 은 Tag를 정의할 수 있고 데이터를 기술하는 마크업 언어 [Read More]

TDD 란?

TDD 테스트 주도 개발(Test-driven development TDD)은 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 [Read More]

스택, 큐, 덱

스택(stack) : 자료의 입력과 출력을 한 곳(방향)으로 제한한 자료구조, 깊이우선탐색-DFS [Read More]

멀티쓰레드의 특징

쓰레드란 프로세스 내에서 일을 처리하는 세부실행 단위 일반적으로 하나의 프로세스는 하나의 스레드를 가지고 작업한다. 경량화된 프로세스라고도 부른다. [Read More]

함수형프래그래밍이란

객체지향 프로그래밍은 움직이는 부분을 캡슐화하여 코드 이해를 돕고, 함수형 프로그래밍은 움직이는 부분을 최소화하여 코드 이해를 돕는다 - 함수형 사고 [Read More]

객체지향이란

객체란 물리적으로 존재하거나 추상적인 것중에 자신의 속성과 동작을 가지는 모든 것 속성(필드) 와 동작(메소드)으로 구성된 자바 객체로 모델링가능(추상화) [Read More]

백준 4344

문제 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. [Read More]

Feb 2019

키위주스

키위주스 문제 타로는 맛있는 키위주스를 준비했습니다. 타로는 0부터 n-1이라 이름을 붙인 n개의 병에 키위주스를 넣었습니다. 이때 i 번째 병의 용은 capacities[i] 리터이며 타로가 i번째 병에 넣은 키위주스의 양을 bottles[i] 리터라고 한다 타로는 병에 키위주스를 재분배하려고 하며 0부터 m-1까지 m 회 조작합니다. 병 fromId[i] 가 비어 있거나 병 toId[i] 가 꽉... [Read More]

스프링부트 회원가입,글쓰기

회원가입 GET /users/join - 회원가입 폼이 보여진다. name,nickName, passwd, email을 입력 POST /users/join - 회원정보가 저장된다. 이때 USER권한을 가지도록 한다. // config에 permitAll 해야함 .antMatchers(“/users/join”).permitAll() GET /users/welcome - 회원가입후 redirect하여 보여지는 페이지. POST /users/join 를 처리하는 컨트롤러에서는 폼 파라미터를 받아들이기 위해 다음을 사용할 수 있다. @RequestParam 을 이용하여 값을 받을... [Read More]

자바 Optional이란?

자바 Optional NullPointerException 을 방지하기 위해 Java8에 Optional 클래스가 추가되었다. if문등을 써 반복적인 null 체크를 방지하기위해 Optional가 추가되었다. [Read More]

View란?

q) : emp_details_view 은 테이블이 아니라 뷰(View)다. View란? [Read More]

Jan 2019

람다식

람다식이란 식별자 없이 실행 가능한 함수. 메서드를 하나의 식(expression)으로 표현한 것 메서드를 람다식으로 표현하면 이름과 반환값이 없어지므로 람다식을 ‘익명함수’라고도 한다. 익명함수(anonoymous function), 이름없는 함수, 익명메소드 익명객체… [Read More]

httpCookie,httpSession

Cookie 쿠키란 커피숍의 쿠폰과 같다. 처음 커피숍을 방문 시 클라이언트에게 쿠폰은 존재하지않는다. 방문 시 쿠폰을 만들어 손님에게 건내주게된다. [Read More]

http 및 서블릿의 특징

브라우저   WAS 서블릿필터 WebApplication   요청———-> httpServletRequest httpServletResponse was안에 위치     <———-응답           요청정보에서 context path를 구하고 해당하는 webapp을 구해서 ———-> <———- 해당하는 Webapp 구해서         PATH가 정적 : default Servlet PATH가 동적 : 서블릿,JSP [Read More]

입력받은 세 정수의 중앙값

~~~ public class Middle { //입력받은 세값중 중앙값을 구한다. static int mid(int a, int b, int c) { if (a >= b) if (b >= c) { return b; } else if (c >= a) { return a; } else { return c; } else if (a > c) {... [Read More]

Dec 2018

쓰레드

자바 쓰레드Java Thread의 정의를 알기 전에 프로세스Process에 대해 알아야 합니다. [Read More]

거스름돈

거스름돈에서 각 동전당 가장 적은 수의 동전으로 거슬러주는 알고리즘이다 ``` public class CoinAl { [Read More]