본문 바로가기
728x90
반응형

전체 글254

log4j2 variable UNDEFINED log4j2를 사용하다보면, log4j2에서 사용한 변수들을 System.properties를 통하여 주입하지 않은 경우 해당 값을 인식하지 못하여 UNDEFINED를 발생하게 된다.해당 포스팅에서는 logPath를 지정하지 못한 경우 발생하는 logPath_IS_UNDEFINED라는 폴더가 생성되는데, 이를 처리하는 다양한 방식들에 대하여 포스팅해보고자 한다.상황log4j2.xml을 통하여 log를 작성해야함log4j2.xml에는 logPath를 지정하는 appender와 지정하지 않은 appender가 존재함logPath를 지정하지 않는 appender만 사용해야 하는 상황이 존재함1. log4j2.xml 2개logPath를 지정하는 경우에는 log4j2-logPath.xml이라는 파일을 만들고 해당.. 2025. 2. 25.
logback to log4j2 Spring boot를 사용하면서, logback에서 log4j2로 변경하게 되었습니다.  org.springframework.boot spring-boot-starter-web ${spring.version} org.springframework.boot spring-boot-devtools ${spring.version}다음과 같이 Spring boot를 사용하고 있는 상황에서 logback으로 프로젝트를 진행하고 있었습니다. 그러다 log4j2를 사용하게 변경하고자 하여, Spring boot starter web의 의존성중 하나인 spring boot starter logging을 exclusion처리한 후, log4j2를 직접 가져와 사용하기로 하였습니다.  org.springframework.b.. 2025. 2. 23.
[백준] 5670번 : 휴대폰 자판 https://www.acmicpc.net/problem/5670 기본적인 trie 알고리즘을 알고 계시다면 풀 수 있는 문제입니다. N개의 문자들을 trie에 넣고, trie로 다시한번 문자들을 돌면서, 해당 문자열이 자나가면서 마지막 위치의 문자(check)를 지났다면 count를 증가시킵니다.그리고, 이를 n으로 나눈 double타입의 변수를 출력하면 되는 문제입니다. import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.HashMap;import java.util.Map;public class Main { public static void main(String[.. 2025. 2. 16.
[백준] 19585번 : 전설 https://www.acmicpc.net/problem/19585해당 문제는 색상은 trie에, 닉네임은 set에 저장하여 값을 체크하는 방식으로 진행하면 되는 문제이다. trie 알고리즘을 알고 있다면 약간의 아이디어를 추가하면 간단하게 풀 수 있다. import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.HashSet;import java.util.StringTokenizer;public class Main { static HashSet set = new HashSet(); public static void main(String[] args) throws IOExc.. 2025. 2. 9.
Rust에서 dll 프로젝트 생성 후 적용 Rust에서 dll(동적 링크 라이브러리)를 만든 후, 타 언어(c, python, C#, C++, java 등)에서 사용이 가능합니다.이번 시간에는 python에서 활용하는 방법에 대해 알아보고자 합니다.dll 파일 만드는 방법lib 프로젝트 생성 cargo new {{project_name}} --lib프로젝트 설정Cargo.toml에 해당 내용 추가 [lib] crate-type = ["cdylib"]함수 앞에 용어 추가 #[no_mangle] // 함수 이름이 변경되지 않도록 설정 pub extern "C" fn add(left: u64, right: u64) -> u64 { left + right }프로젝트 빌드(src 폴더로 들어가서) cargo build --release (--rel.. 2025. 1. 23.
Rust 설치부터 실행까지 (vec) - 17 오늘은 Rust의 컬렉션 중 벡터에 대해 알아보고자 합니다.일반적인 컬렉rust의 표준 라이브러리에는 컬렉션(collection)이라 불리는 매우 유용한 데이터 구조들이 여러 개 포함되어 있습니다. 내장된 배열(build-in array)이나 튜플 타입과는 달리, 이 컬렉션들이 가리키고 있는 데이터들은 힙에 저장되는데, 이는 즉 데이터의 양이 컴파일 타임에 결정되지 않아도 되며 프로그램 실행 중에 늘어나거나 줄어들 수 있다는 의미입니다. rust 프로그램에서 굉장히 자주 사용되는 세 가지 컬렉션은 다음과 같습니다.벡터(vector)는 여러 개의 값을 붙어 있게 저장할 수 있도록 해줍니다.문자열(String)은 문자(character)의 모음입니다.해시맵(hash map)은 어떤 값을 특정한 키와 연관지어.. 2025. 1. 19.
Rust 설치부터 실행까지 (use, pub use, as, mod) - 16 오늘은 Rust의 use, as, mod에 대해 알아보고자 합니다.use 키워드로 경로를 스코프 안으로 가져오기함수 호출을 위해서 경로를 작성하는 것은 불편하고 반복적인 느낌을 줄 수 있습니다. use 키워드를 한번 사용하여 어떤 경로의 단축여로(shortcut)을 만들 수 있고, 그러면 스코프 안쪽 어디서라도 짧은 이름을 사용할 수 있습니다. 다음 예제는 crate::front_of_house::hosting 모듈을 eat_at_restaurant 함수가 존재하는 스코프로 가져와, eat_at_restaurant 함수 내에서 add_to_waitlist 함수를 hosting:;add_to_waitlist경로만으로 호출하는 예제입니다.mod front_of_house { pub mod hosting.. 2025. 1. 15.
Rust 설치부터 실행까지 (crate, 절대 경로, 상대 경로, super, use, pub) - 15 오늘은 Rust의 crate, super, pub에 대해 알아보고자 합니다.패키지와 크레이트크레이트(crate)는 rust가 컴파일 한 차례에 고려하는 가장 작은 코드 단위입니다. cargo 대신 rustc를 실행하여 단일 소스 코드 파일을 넘겨주더라도, 컴파일러는 그 파일이 크레이트라고 생각합니다. 크레이트는 바이너리일 수도 있고, 라이브러리일 수도 있습니다. 바이너리 크레이트(binary crate)는 커맨드 라인 프로그램이나 서버처럼 실행 가능한 실행파일로 컴파일할 수 있는 프로그램입니다. 바이너리 크레이트는 실행파일이 실행되면 무슨 일이 일어나는지를 정의한 main 함수를 포함하고 있어야 합니다. 라이브러리 크레이트(library crate)는 main 함수를 가지고 있지 않고 실행파일 형태로 컴.. 2025. 1. 13.
Rust 설치부터 실행까지 (match, if let) - 14 오늘은 Rust의 match, if let에 대해 알아보고자 합니다.match 제어 흐름 구조rust는 match라고 불리는 매우 강력한 제어 흐름 연산자를 가지고 있는데, 일련의 패턴에 대해 어떤 값을 비교한 뒤 어떤 패턴에 매칭되었는지를 바탕으로 코드를 수행하도록 해줍니다. 패턴은 리터럴 값, 변수명, 와일드카드 등 다양한 것으로 구성될 수 있습니다. match의 힘은 패턴의 표현성으로부터 오며 컴파일러는 모두 가능한 경우가 처리되는지 검사합니다.enum Coin { Penny, Nickel, Dime, Quarter,}fn value_in_cents(coin: Coin) -> u8 { match coin { Coin::Penny => 1, Coin.. 2025. 1. 12.
728x90
반응형