Programming Language
-
[Spring Boot3 + Jaeger] 스프링부트3에 예거 설정 추가 하는 방법Programming Language/Java 2024. 7. 31. 10:47
Jaeger 는 Uber Technologies 에서 개발한오픈소스 분산 트레이싱 시스템으로,마이크로서비스 아키텍처에서 서비스 간의 트랜잭션을추적하고 분석 할 수 있도록 해준다. 최근 회사에서 프로젝트를 진행하면서여러 서비스 간의 API 흐름을 추적하고 모니터링하기 위해Jaeger 를 사용하기로 했다. 내가 적용한 서비스는 Spring Boot 3.x 로 개발하고 있는데,Jaeger 를 적용하는 과정에서 Spring Boot 2.x 버전에서적용하는 방법과 차이가 있어서 정리를 하려고 한다. 사용한 도구Gradle 8.5Java 21Spring Boot 3.xJaeger (all-in-one) 1.59 io.opentracing.contrib:opentracing-spring-jaeger-web-start..
-
[Java] CSV 를 Excel 로 변환하는 Java 코드 예제Programming Language/Java 2023. 2. 8. 16:52
최근 java 를 이용해서 .csv 파일을 Excel 로 변환 해야하는 일이 있었다. 그런데 단순히 csv 파일을 excel 의 하나의 sheet 로 변환하는 예제나 라이브러리는 몇 개 있었는데, 하나의 엑셀에 특정 컬럼들을 특정 시트에 작성하는 형태의 라이브러리 는 잘 나오지 않아서 개발 한 것을 적어둔다. 1. 라이브러리 사용법 - 라이브러리 사용법에 대한 README.md 1.1. settings.xml 설정 github ${github 유저명} ${github 토큰} 1.1. 디펜던시 설정 pe.fwani.convert csv-to-excel 0.0.1-java11-SNAPSHOT github-fwani-releases https://github.com/fwani/fwani-maven-repo/r..
-
[psycopg2] postgresql oid 에 대한 텍스트 가져오는 쿼리Programming Language/Python 2021. 11. 15. 18:05
postgresql 에는 oid (object identifier) 가 있는데 테이블의 타입도 oid 로 관리하고 있다. 만약 python 에서 psycopg2 라이브러리를 사용한다면, 아래처럼 타입을 oid 로 받게 된다. import psycopg2 conn = psycopg2.connect() cur = conn.cursor() cur.execute("select A, B from TEST") cur.description # (Column(name='A', type_code=20), Column(name='B', type_code=25)) 이때, 해당 oid 에 대한 타입명을 알고 싶으면 아래 쿼리를 사용하면 알 수 있다. # psql select 20::regtype::text; text ----..
-
Scala 문법Programming Language/Scala 2021. 6. 24. 18:06
원시 타입 Scala 는 1(Int 리터럴) 과 같은 원시 타입(Primitive Type) 은 Object 로 취급한다. java 원시 타입은 정수, 실수, 문자, Bool 과 같은 literal 의 실제 데이터 값을 저장하는 타입이고, java 참조 타입은 Object 의 메모리 주소를 참조하는 타입이다. scala 에서는 정수를 Object 로 참조하여 참조 타입 으로 취급하지만, 컴파일 이후에는 성능을 위해서 java 의 원시 타입을 사용한다. 1 + 2 와 같은 식에서 + 는 (1) 이라는 원시 타입 Object 의 method 다. 즉, 1 + 2 의 표현은 (1).+(2) 표현과 같다. Scala 는 +-*/ 같은 연산자 method 의 우선순위를 정하고 있다. object Practice ..
-
[python] CLOSE_WAIT 해결 방법 with TimeoutIteratorProgramming Language/Python 2021. 5. 7. 11:20
tcp 연결된 소켓의 상태가 CLOSE_WAIT 상태에서 처리되지 못하고 계속 소켓을 잡고 있는 상황이 발생하여 해당 내용을 정리한다 0. 용어 end, end-point : aplication, user 등 연결에서 한 쪽 끝 프로세스 tcp 상태 1. 개념 정리 CLOSED : 연결이 없음 LISTEN : Passive open, SYN을 기다리는 상태 SYN-SENT : SYN을 보내고 ACK를 기다리는 상태 SYN-RECEIVED(SYN-RCVD) : SYN+ACK을 보내고 ACK를 기다리는 상태 ESTABLISHED : 커넥션이 생성된 상태, 데이터를 전송할 수 있다. FIN-WAIT-1 : 첫 FIN이 보내진 상태, ACK를 기다리고 있다. CLOSE-WAIT : 첫 FIN을 받고 ACK를 보..
-
[Python] PLY (Python Lex-Yacc) 정리 - YaccProgramming Language/Python 2021. 4. 28. 17:22
Lexer 에 대한 내용은 Lex 정리 문서 를 참조 해주세요. 2. parse 언어 문법을 파싱하기 위해서 yacc.py 를 이용한다. YACC(Yet Another Compiler Compiler) 은 LR-parsing / shift-reduce parsing 으로 알려진 분석 기술을 사용한다. LR-parsing 입력 기호들을 읽어가면서 기호들을 reduce 하여 시작 기호로 반환되는 상향식(bottom-up) 구문 분석 기법이다. stack 과 input buffer 를 이용해서 분석이 가능하다 참고링크 : https://en.wikipedia.org/wiki/LR_parser syntax 는 BNF(Backers Naur From) 구문으로 표기한다. 예를 들어, 간단한 산술 계산식을 분석 하..
-
[Python] PLY (Python Lex-Yacc) 정리 - LexProgramming Language/Python 2021. 4. 28. 10:08
YACC 에 대한 내용은 YACC 정리 문서 를 참조 해주세요. 1. Lex lex.py 를 이용한다. 문자열을 tokenize 할 때 사용한다. 1.1. The tokens list (tokens 리스트) tokens 라는 list 객체에 lexer 에서 사용 될 토큰의 이름을 모두 정의해야 한다. tokens = ( 'NUMBER', 'PLUS', 'MINUS', 'TIMES', 'DIVIDE', 'LPAREN', 'RPAREN', ) 1.2. Specification of tokens (토큰의 명세) prefix (t_ ) 를 각 토큰이름 앞에 사용해서 rule 을 정의 한다. rule 은 re 모듈의 정규 표현식으로 정의 한다. re 컴파일러는 re.VERBOSE 옵션을 사용한다. (multili..
-
[SwiftUI] NavigationView 와 NavigationLink 사용법Programming Language/Swift 2021. 4. 27. 09:43
NavigationView 와 NavigationLink 사용법 기본 사용법 NavigationView 로 표기할 내용을 감싼다 NavigationLink 로 새로운 view 를 표시 할 수 있다 struct TestView: View { var body: some View { NavigationView { // ... NavigationLink( destination: Text("새로운 View")) { Text("navition link 의 label") } } } } 위 코드를 ipad 같은 가로로 넓은 화면으로 보면 navigationview 가 왼쪽에 가려져서 바로 보이지 않는다. 이 때는 NavigationView 에 .navigationViewStyle(StackNavigationViewSt..