분류 전체보기
-
WSL2에서 윈도우 로컬 스프링 서버로 통신하기개발/Web 2025. 7. 29. 18:11
이 글에서 WSL2 윈도우11 터미널 기본 프로필로 설정했었다. 단순히 PowerShell을 쓰기 싫어서 설정한 건 아니었고 윈도우라는 환경이 VisualStudio로 C++ 소켓 프로그래밍을 할 때를 제외하고는 그다지 개발자 친화적이지 않아서 불편하다. jline 라이브러리가 시스템 터미널을 사용하게 해서 동작하게 만들어야 하는데 PowerShell, CMD 모두 잘 안 됐다. 더 알아 보면 방법이 있을 순 있겠으나 그냥 WSL2로 하는 게 마음이 편하다. 어쨌든 콘솔 클라이언트를 WSL2로 지정하고 윈도우에서 동작하는 스프링 웹 소켓 서버에 연결하니 연결이 안 됐다. git bash로 지정하니까 잘 됐다. 아, WSL2에서 윈도우와 통신을 못하고 있구나. Hyper-VWSL2 설정할 때 Hyper-V..
-
윈도우11에서 WSL2를 기본 프로필로 지정하기개발/etc 2025. 7. 29. 11:19
인텔리제이에서 터미널로 이런저런 테스트를 해야 하는데 윈도우 터미널 F word!git bash도 100% 의도대로 동작하지 않아서 WSL2을 설치해본다.여건만 되면 작업 용으로 Mac 풀세팅 하고 싶다. 전제 설정1. Win + R을 누르고 appwiz.cpl을 실행한다. 2. Windwos 기능 켜기/끄기로 간다. a. Linux용 Windows 하위 시스템 켜기 b. Virtual Machine Platform 켜기 (Hyper-V는 필수 아님) 3. 바이오스에서 가상 머신 옵션을 켜야한다(Advanced 모드 - CPU/Chipset Configuration) a. AMD: SVM mode 또는 AMD Virtualization을 켠다 b. Intel: Int..
-
CI/CD에서의 gradle과 로컬에서의 gradle개발/Web 2025. 7. 24. 11:22
CI/CD에서 빌드 테스트를 돌릴 때 보통 gradle을 사용하니까 로컬 환경에서도 gradle로 맞추는 게 안전하다. 로컬에서 테스트할 때 IntelliJ의 로깅 버그 때문에 기본값으로 되어 있는 Gradle에서 IntelliJ Idea로 변경할 수도 있지만, CI/CD와 다른 환경으로 했을 때 로컬에서는 통과하고 CI/CD 빌드 테스트를 통과 못하는 수가 있다. 웬만하면 일치하는 게 낫다. 특수한 상황에서 로컬 환경을 임시로 변경한다.
-
[Spock Framework] Stubbing and Mocking개발/Web 2025. 7. 23. 17:02
Stubbing공식 문서에 따르면 Stubbing은 메서드 호출에 대해 특정 방법으로 협력자가 반응하게 만드는 행위다. 한글로 번역하니 설명이 좀 복잡하게 느껴지는데, 쉽게 말하면 특정 값(미리 정의된 값)을 반환하도록 할 수 있다는 의미다. 편한 점은 구현체가 필요 없고 인터페이스만 정의해도 된다. Spock Framework Reference DocumentationSpock is a testing and specification framework for Java and Groovy applications. What makes it stand out from the crowd is its beautiful and highly expressive specification language. Thanks ..
-
[백준] 10999번 구간 합 구하기2알고리즘/백준 2025. 7. 15. 01:44
문제 링크https://www.acmicpc.net/problem/10999 문제 해설이 문제는 구간 합 구하기의 변형된 버전이다. 값을 특정 값 하나만 갱신하는 것이 아니라 주어진 구간을 갱신한다. "구간 합 구하기"에서 나온 로직을 조금 응용하는 정도로는 이 문제를 풀 수 없다. 시도해보면 시간 초과가 뜰 것이다. 업데이트 구간이 처음부터 끝까지일 경우 O(N)의 시간 복잡도가 나올 것이기 때문이다. 백준 블로그를 참고해도 된다. 그림으로 하나하나 뜯어서 설명할 자신이 없어 추상화된 설명이 진행될 것이다. 여기에서는 지연된 전파라는 개념을 사용한다. 지연이라는 단어를 쓰는 이유는 노드를 순회할 때 관련 서브 트리를 한 번에 전부 갱신하지 않기 때문이다. 전파는 다음 순회 때 방문하는 노드가 비로소 갱..
-
[백준] 2042번 구간 합 구하기알고리즘/백준 2025. 7. 10. 16:45
문제 링크https://www.acmicpc.net/problem/2042 문제 해설기본 개념세그먼트 트리의 개념을 정확하게 아는 것이 중요하다. 백준 블로그에 자세한 설명이 있지만 내 방식으로 이해한 걸 풀어서 정리해본다. 백준 북도 참고하길 바란다. 세그먼트 트리를 만드는 시작은, 리프 노드를 배열의 값으로 초기화하는 것이다. 우리가 사용할 트리는 데이터 기준으로는 완전(complete) 이진 트리로 마지막 레벨을 제외한 레벨이 모두 가득차 있고 마지막 레벨은 왼쪽 노드부터 연속적으로 채워진 상태이지만 실제로는 포화(perfect) 이진 트리를 사용할 거다. 모든 레벨에 노드가 있고 리프가 모두 같은 레벨인 포화(perfect) 이진 트리로 크기를 잡아두면 레벨(높이, h)를 구해서 트리의 전체 크..
-
[백준] 14503 로봇 청소기알고리즘/백준 2025. 7. 9. 01:12
문제 링크https://www.acmicpc.net/problem/14503 문제 해설문제에 있는 절차 그대로 풀어쓰면 된다. 전체 코드#include using namespace std;using Pair = pair;Pair dirs[] = { {-1,0}, {0, 1}, {1, 0}, {0, -1} };int map[50][50]{};int N, M, start_r, start_c, dir;int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cin >> N >> M; cin >> start_r >> start_c >> dir; for (int i = 0; i > map[i][j]; int current_r ..
-
[메모리 풀링] 중앙 풀 + 스레드 로컬 슬랩(下편)개발/C·C++ 2025. 7. 3. 17:47
[메모리 풀링] 중앙 풀 + 스레드 로컬 슬랩(上편)에서 이어집니다. 전역 메모리 풀링의 문제점메모리 요청이 들어올 때마다 풀링 시스템에서 할당받고 반환하는 것은 효율적이지 않다고 했다. 락 프리이든 락이든 메모리 블록을 할당하고 반환할 때마다 경합이 발생할 수 있고, 그 요청과 반환 때마다 특정 로직이 실행되는 것이기 때문이다. 또한 메모리 블록이 파편화돼서 관리되기 때문에 캐시 혜택을 보기 어려운 상황이 된다는 것이 단점으로 지적된다. 스레드가 매번 새로운 메모리 블록을 사용하는 상황에서는, 기존 캐시 라인이 계속 무효화되기 때문에 새 캐시를 올리는 사이클이 추가된다. 메모리 풀링을 굳이 사용하지 않아도 되는 환경에서는 무시해도 되는 오버헤드일 수 있지만, 메모리 풀링을 적용해야 하는 환경이라면 고려..