일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 오블완
- 정보처리기사실기 기출문제
- kotlin
- aws
- Pinpoint
- CKA
- 코틀린 코루틴의 정석
- Kubernetes
- 기록으로 실력을 쌓자
- Java
- 티스토리챌린지
- AI
- AWS EKS
- APM
- CloudWatch
- kotlin coroutine
- mysql 튜닝
- docker
- kotlin querydsl
- PETERICA
- Elasticsearch
- CKA 기출문제
- 공부
- minikube
- 정보처리기사 실기 기출문제
- Linux
- go
- tucker의 go 언어 프로그래밍
- golang
- Spring
- Today
- Total
목록전체 글 (863)
피터의 개발이야기

서론 데이터 백업 작업 시에 파일을 읽고 쓰는 로직이 필요하여 정리를 하였습니다. 자바8 이후 자원의 생성과 해제가 자동입니다. Java - Try-with-resources로 자원 쉽게 해제 Java7 이전에, try-catch-finally 구문에서 자원을 해제하였습니다. Java8에서는 try-with-resources는 try(...)에서 선언된 객체들에 대해서 try가 종료될 때 자동으로 자원을 해제해주는 기능입니다. try에서 선언된 객체가 AutoCloseable을 구현하였다면 Java는 try구문이 종료될 때 객체의 close() 메소드를 호출해 줍니다. File Read @Test public void fileReadTest() throws FileNotFoundException { tr..

서론회사에서 Intercom을 사용하고 있습니다. 고객과의 상담 내용을 백업하고자 Intercom API를 연동하는 작업을 정리하였습니다.백업의 필요성Note를 보면 Conversation(대화방)은 2년동안의 데이터만 확인 할 수 있어 과거 상담내역은 따로 백업을 해야합니다. 그리고 저장된 상담내용은 1. 고객과의 분쟁에서 사실관계 입증을 하고 2. IBM 왓슨으로 만들 자동상담 시스템을 위한 학습데이터가 됩니다.Intercom data back-up을 위한 용어의 정의Conversation : 대화방, 각각의 conversation ID가 있음.Conversation parts : 카톡으로 따지면 하나의 버블, Conversation > Transcript > 여기서 오간 하나하나의 대화를 Par..

서론 백엔드 개발을 위해서 제일 먼저 하는 일은 라이브러리 추가입니다. 간혹 gradle을 추가하였지만 특정 Jar들이 로딩되지 않는 문제점이 있습니다. 그런 상황에서 repository를 추가하면 해결됩니다. repository 중 JCenter에 대해서 정리하였습니다. 라이브러리를 가져오지 못하는 상황 build.gradle에 라이브러리를 추가하였습니다. 하지만... 컴파일 단계에서 라이브러리가 없다는 에러가 확인됩니다. gradle은 compile 목록을 확인하고 repository에서 해당 라이브러리를 다운받아 자바 어플리케이션을 컴파일합니다. 하지만 repository에서 라이브러리를 찾지 못하는 경우 이런 에러가 발생합니다. 해결 repositories { mavenCentral() jcent..

백업데이터를 생성할 때에 CSV파일을 생성할 일이 많이 있습니다. CSV 파일 생성 방법에 대해 정리를 하였습니다. gradle compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.11.4' compile group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.11.4' compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.11.4' compile group: 'com.fasterxml.jackson.dataformat', name: 'ja..

서론 종종 Util, Interceptor, client를 만들 때에 @Component를 선언하였습니다. 그래저 저는 Component가 사전적 의미인 "구성 요소"처럼 보다 작은 단위 혹은 @Controller와 @Service처럼 특화된 중요 구성요소보단 덜 중요한 객체를 선언하는 용도라고 생각하고 있습니다. 그리고 @Componet와 @Controller, @Service 등등이 별개의 것이라고 생각했었습니다. 하지만 제가 잘못 이해하고 있었고 그 부분에 대해서 공부를 하였습니다. 실질적으로 @Controller와 @Service, @Repository는 같은 소스이다. @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Docume..

서론 개발 프로젝트에서 Apple로그인을 적용하였습니다. 프론트 개발자와 협업하여 Apple로그인을 구현하였고, 이 포스팅은 백엔드의 입장에서 정리를 해 보았습니다. 앱에서 APPLE로그인 성공 후 인증된 appleToken을 가지고 서버에서 처리하는 과정입니다. 인증과정 APP에서 인증하고 API Server에서 또 인증? 상식적으로 이해가 되지 않았다. 앱에서 apple Token이 생성되었다면, 이미 로그인 성공인데, API 서버에서 그 인증 토큰을 다시 검증해야하는 과정이 이해가 되지 않았다. 하지만 앱으로부터 appleToken을 받을 때에 이 요청이 탈취될 수 있는 것이다. 그래서 요청을 탈취한 사용자가 정보를 도용할 수 없도록 서버에서 인증과정을 한번 더 거쳐야 한다. Gradle 세팅 //..

회사에서 구글 OAuth와 Apple OAuth를 위한 백엔드 개발을 하였습니다. 그러면서 예전에 개발하였던 SSO과 차이점을 경험하게 되었습니다. 제가 경험했던 SSO에 대해 되짚어보며 OAuth에 대해서 설명을 하도록 하겠습니다. SSO란 무엇일까요? Single Sign On의 약자로, 한번의 로그인으로 여러 어플리케이션을 사용하는 기술을 말한다. 각 어플리케이션의 로그인/인증부분을 한 군데로 통합하여 관리하는 방법이다. 혹은 인증된 토큰을 이용하여 다른 어플리케이션도 로그인처리를 해준다. 기억의 회상, SSO 사용했던 이유 기존에 이미 A서비스가 있었습니다. 그리고 A서비스를 기반으로 한 플러스 상품으로 2개의 어플리케이션이 추가가 되었습니다. 서비스 확장 시 기획단계에서 요구사항으로 SSO를 요..

컨트롤에서 리다이렉션을 시키는 방법을 포스팅해 보았습니다. package com.peterica.swagger.controller; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.spri..

오늘은 Slack과 연동하는 방법에 대해서 포스팅해보도록 하겠습니다. 고객에게 푸시를 통해 알람을 보낼 수 있지만, 어드민을 사용하는 영업팀에서는 자체 어플이 있지 않는한 Slack의 알림을 통해 상황을 빠르게 확인 할 수 있다. 슬랙연동에는 여러 방법이 있다. 크게 프론트앤드에서 연동하는 방법이 있다. 프론트 개발자 분이 설명해 주시는 참조할만한 블러그가 있다. [API] 슬랙(Slack) API 완벽 정리하기 백엔드에서 연동하는 방법에는 별다른 SDK없이 프론트와 마찬가지로 RestTemplate로 통신하는 방법과 slack에서 제공되는 SDK를 이용하는 방법이 있다. 자세한 내용은 slack의 개발자 가이드를 참조하면 좋다. Slack SDK for Java 우선 RestTemplate로 구현한 소..

로컬에 개발환경을 구축하면서 사용하였던 bootJar 실행 shell문을 정리하였습니다. 로컬환경 세팅 이유Intellij에서 개발한 것을 개발계에 올리기 직전에 로컬에서 테스트하기 위해 환경을 구성하였습니다.로컬에 PinPoint를 구축하여서,프론트개발자가 로컬에서 테스트 진행 시 모니터링 및 버그확인이 아주 쉬웠습니다. 로컬 빌드 방법Intellij에서 bootJar 빌드를 마치면 jar파일이 생성되고,쉘을 통해 jar 복사 및 SpringBoot 재가동하는 쉘을 만들었습니다. Shell의 개요크게 3개 파트로 구성하였습니다. - 재사용을 위한 환경세팅 부분, - function 선언부분 - case문으로 실행 분기를 하는 부분입니다. bootJar.sh의 내용#!/bin/bash# app..

shell 변수에 대해서 공부해 보겠습니다. 변수에는 지역변수와 환변변수, 두가지 종류가 있습니다. 이 변수들을 지우거나 지우지 못하게 막을 수도 있고, 변수들의 목록을 확인하는 방법도 알아보겠습니다. 지역(local)변수 지역 변수를 생성한 shell에서만 호출할 수 있습니다. 즉, shell이 실행 당시에 필요한 값만을 선언하여 사용하기에 다른 shell에서 참조를 할 수 없습니다. 사용법 #local변수설정 localValue="로컬에서 참조됩니다." #참조방법 echo $localValue 환경(public)변수 자신을 선언한 부모 쉘과 이 쉘이 만든 자식 쉡에서도 참조가 가능합니다. 사용법 #public변수설정 export publicValue="로컬에서 참조됩니다." #참조방법 echo $pu..

if 문은 참과 거짓의 경우에만 사용할 수 있으며, 다중 if 문을 사용하여 여러 개의 조건을 주는 경우에는 프로그램이 복잡해진다. 여러 개의 조건인 경우 case문을 사용하는 것이 간결하고 편리하다. case 문의 기본 문법 case 파라미터 in 조건1) 명령어1;; 조건2) 명령어2;; *) 조건1과 조건2가 아닌 경우 esac 조건 예제 #!/bin/bash echo "값을 입력하세요." read param case $param in # 패턴 ??02??) echo "2월이군요";; # or 조건 Yes | yes | Y | y) echo "Yes!!";; [nN]*) echo "n 또는 N으로 시작, 정규식";; b?) echo "b로 시작하는 2글자";; c*) echo "c로 시작하는 모든 ..

if문 기본 문법 if [ 조건 ] then 조건이 참일 경우 실행 elif [ 조건 ] then 조건이 참일 경우 실행 else 조건이 거짓일 경우 실행 fi 비교연산자 #!/bin/bash echo "비교연산자: 같으면" if [ "조건"="조건" ] then echo "참" else echo "거짓" fi echo "비교연산자: 다르면" if [ "조건"!="조건" ] then echo "참" else echo "거짓" fi echo "비교연산자: 널이 아니면" if [ -n "" ] then echo "참" else echo "거짓" fi echo "비교연산자: 널이면" if [ -z "" ] then echo "참" else echo "거짓" fi 조건들은 문자열이어야 한다. 산술연산자 #!/b..

백엔드 개발과 프론트 개발을 위해 꼭 필요한 요소는 상호 소통일 것 입니다. 예전에 일했던 프로젝트에서는 프로세스를 관리하는 프로그램을 가지고 있었다. 기획단계에서 어플리케이션의 프로세스를 정의하고 그 프로세스에 코드를 부여하여, 그 프로세스에 대한 전문양식을 프로세스 관리 시스템에서 확인 할 수 있었다. 그래서 백엔드 개발자와 프론트 개발자들은 그 프로세스 전문 코드 양식과 설명에 따라 프로그램을 개발하였고, 오류나 기획단계에서 데이터 설계에도 큰 도움의 되었다. 이와 비슷한 swagger는 RestController 어노테이션을 기준으로 내부의 API를 자동 분석하여 HTML 문서로 제공하는 오픈소스이다. swagger는 백엔드가 개발한 API들의 논리적 설명과 전문들의 정의를 볼 수 있다. 또한 바..

ㅁ 개요 ㅇ VIM 사용법을 잘 정리해 놓은 정보가 있어서 모셔왔습니다. ㅇ 퍼온 곳 : gyuha.tistory.com/452 1. 저장 및 종료 명령어 설명 :w 저장 :w file.txt file.txt 파일로 저장 :w » file.txt file.tx파일에 덧붙여서 저장 :q vi 종료 :q! vi 강제 종료 ZZ 저장 후 종료 :wq! 강제 저장 후 종료 :e file.txt file.txt파일을 불러옴 :e 현재 파일을 불러옴 :e# 바로 이전에 열었던 파일을 불러 옴 2. 입력모드 전환 명령어 설명 a 커서 위치 다음칸부터 입력 A 커서 행의 맨 마지막부터 입력 i 커서의 위치에 입력 I 커서 행의 맨 앞에서 부터 입력 o 커서의 다음행에 입력 O 커서의 이전 행에 입력 s 커서 위치의 한..