GitHub Actions? 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI / CD 플랫폼 Workflow, Event, Job, Action, Runner GitHub Actions 구성요소 GitHub Actions Workflow를 구성하여 Repository에서 Event가 발생할 때 트리거되도록 할 수 있다. ex. Repository에 push할 경우(Event), Workflow가 실행된다. Workflow는 순차적으로 또는 병렬로 실행할 수 있는 하나 이상의 Job을 포함한다. 각각의 Job은 자체 Runner(또는 Container 내부)에서 실행된다. Job은 하나 이상의 Step으로 이루어져 있고, Step은 정의한 script를 실행하거나 action을 실행한다. 출처 ..
OpenCSV dependency 추가 implementation("com.opencsv:opencsv:5.8") CSVReader CSVReader를 사용하는 여러 가지 방법 기본으로 제공하는 생성자 사용 : CSVReader() val reader = CSVReader(Files.newBufferedReader(csvFilePath)) reader.readAll() 빌더 사용 : CSVReaderBuilder() 언제 사용? CSVReader에서 제공하지 않는 구분자를 사용할 경우 ex. .tsv 파일은 기본 CSVReader()를 생성해서 읽을 수 없기 때문에 CSVReaderBuilder의 withCSVParser를 지정해서 CSVReader를 생성해야 한다. val reader = CSVRead..
CloudFront? AWS에서 제공하는 CDN(콘텐츠 전송 네트워크) 서비스 CDN? 클라이언트가 콘텐츠를 요청할 때 원본 데이터를 가진 오리진 서버가 응답을 주는 대신 클라이언트와 더 가까운 곳에 존재하는 CDN 서버가 대신 응답을 주기 때문에 더 빠른 속도로 콘텐츠를 전달할 수 있다. 오리진 서버에 갈 요청을 CDN 서버들이 분산해서 처리하기 때문에 오리진 서버에 대한 트래픽이나 부하도 줄일 수 있다. 오리진 서버 : 콘텐츠 원본 데이터를 가진 서버 ex) S3, HTTP 웹 서버 등 CloudFront는 엣지 로케이션이라고 하는 데이터 센터의 전 세계 네트워크를 통해 콘텐츠를 제공한다. CloudFront를 통해 서비스하는 콘텐츠를 사용자가 요청하면 지연 시간이 가장 낮은 엣지 로케이션으로 요청이..
#살아있다 #자프링외길12년차 #코프링2개월생존기를 보고 정리한 내용입니다. 코틀린의 철학 코틀린은 자바와의 상호운용성에 초점을 맞춘 실용적이고 간결하며 안전한 언어이다. 간결성 언어가 간결하다는 건 그 언어로 작성된 코드로 읽을 때 의도를 쉽게 파악할 수 있다는 의미다. data class Person { val id: UUID, val firstname: String, val lastname: String, } 데이터 보관을 목적으로 사용하는 클래스가 필요할 때는 class 앞에 data를 붙여 정의한다. 프로퍼티에 대한 getter(), setter(), equals(), hashCode(), toString(), copy(), componentN() 메서드를 컴파일 시점에 자동으로 생성한다. Ja..
어디 가서 코프링 매우 알은 체하기를 보고 정리한 내용입니다. 1. 코틀린 코틀린이란? JVM, 안드로이드, 자바스크립트 및 네이티브를 대상으로 하는 정적 타입 지정 언어 젯브레인즈에서 개발한 오픈 소스 (아파치 라이선스 2.0) OO 스타일과 FP 스타일 모두 사용할 수 있으며 두 요소를 혼합하여 사용할 수 있다. 간결하고 실용적이며 안전하고 기존 언어와의 상호 운용성을 중시한다. (+ 코루틴) "코틀린은 단순히 JVM 언어가 아니라, 멀티플랫폼 언어다" => 코틀린 코드로 잘 작성하면 JVM상에서도, 자바스크립트에서도, 네이티브에서도 동작시킬 수 있다. [이미지 출처] : https://kotlinlang.org/docs/multiplatform.html#how-kotlin-multiplatform-..
프록시 기반의 AOP 스프링에서 AOP를 학습할 때 프록시 기반의 AOP란 말을 한 번쯤은 들어봤을 것이다. 현재 스프링은 프록시 기반의 AOP를 구현할 때 CGLIB를 사용하는데, 핵심은 런타임시 프록시 객체를 생성하는 다이나믹 프록시다. 도대체 프록시는 무엇이고, Java의 리플렉션을 사용한 JDK 다이나믹 프록시, CGLIB의 MethodProxy를 사용한 다이나믹 프록시가 어떤 차이가 있는지 알아보자. 프록시 패턴 프록시(Proxy)는 '대리', '중계' 라는 의미다. 클라이언트는 타겟에게 요청을 보내지만 실제로는 프록시가 요청을 대신 받는다. 실제 요청을 수행하는 타겟의 기능은 프록시 손에 달렸다. 위임해서 기능을 수행할 수도 있고, 위임하지 않고 클라이언트에게 다른 응답을 줄 수도 있다. 실제..
스트림(Stream)은 '작은 하천' 혹은 '시냇물'이라는 뜻의 단어이고 프로그래밍 언어에서는 주로 어떤 데이터의 흐름을 말한다. (데이터를 담고 있는 저장소(컬렉션) x) java.io의 Stream이 아니라, java8에 나온 java.util의 Stream API를 말한다. 스트림 API의 주된 목적은 매우 복잡하고 어려운 데이터 처리 작업을 쉽게 조회하고 필터링하고 변환하고 처리할 수 있도록 하는 것이다. 스트림 특징 스트림은 불변 객체다. Stream 객체의 메서드 호출 결과로 리턴 받은 Stream 객체는 새로 생성한 데이터다. 불변인 이유는 Stream은 중간 연산 작업과 함께 병렬 처리가 가능하기 때문에 데이터 정합성을 확보하기 위해서다. 중간 연산(Intermediate operation..
WebSocket 웹에서 사용하는 소켓 웹소켓은 HTTP와 같이 OSI 모델의 7계층에 위치하며, 4계층의 TCP에 의존한다. 웹소켓 연결 수립 과정(=핸드셰이크)은 HTTP Upgrade 헤더를 사용해 HTTP 프로토콜에서 웹소켓 프로토콜로 변경한다. 연결되면 WebSocket은 양방향 통신이 가능하다. URI 스킴(Scheme) : ws(WebSocket), wss(WebSocket Secure) ex) 채팅, 실시간 주식 차트 WebSocket 핸드셰이크 WebSocket으로 통신하려면 HTTP의 Upgrade 헤더를 사용해 프로토콜을 변경(Protocol Switching)하는 핸드셰이크를 실시한다. Client 요청 GET /chat HTTP/1.1 Host: server.example.com ..
- Total
- Today
- Yesterday
- Best Time to Buy and Sell Stock
- getAbsolutePath와
- csv 라이브러리
- self-descriptive
- Longest Consecutive Sequence
- FileNameFilter
- java8 stream
- opencsv
- MPEG-2 TS
- 코프링
- AOP
- 문자열인코딩과 문자집합의 차이
- github actions 기초
- 정규경로
- 정규표현식 플래그
- github actions components
- HtmlUtils
- 정규표현식 패턴
- websocket handshake
- 그런RESTAPI로괜찮은가
- 다이나믹프록시
- hls.js
- getCanonicalPath
- 특수문자 치환
- sockjs
- github actions 구성요소
- file
- CGLIB프록시
- getPath
- csv to bean
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |