본문 바로가기

전체 글

(293)
[wsl] 그래픽 깨짐 현상 최근 wsl2는 GUI 프로그램을 실행할 수 있다. 그런데, 내 환경에서는 GUI가 깨져 보이는 현상이 있었다. 다음 과정을 거쳐 해결했다.그래픽카드 드라이버 업데이트: 자신의 그래픽카드에 맞는 드라이버를 최신 버전으로 업데이트한다.WSL 버전 업데이트: wsl을 업데이트하고 한번 껐다가 켠다.wsl --updatewsl --shutdownwsl이 문제때문에 GUI를 제대로 사용할 수가 없었는데 해결되었다.
[라즈베리파이] 라즈베리파이 5 device driver에서 gpio에 접근 https://www.youtube.com/watch?v=P3Judr4i7QI&list=PLCGpd0Do5-I3b5TtyqeF1UdyD4C-S-dMa&index=5유튜브 강의를 수강하면서 device driver을 구현하고 있었다. 나는 14번 핀에 버튼을, 21번 핀에 LED를 연결한 상태였다. 그런데, 라즈베리파이 5 기준으로 두 핀이 인식되지 않는 문제가 있었다.#define BTN_NO 14 // 14#define LED_NO 21 // 21if(gpio_request(LED_NO, "rpi-gpio-21")) { printk("cannot allocate gpio 21\n"); goto AddError;}/* set gpio 21 as output direction */if(gpio_..
[라즈베리파이] vscode로 커널 개발 시 intellisence 에러 없애기 해결 방법vscode 설정 중 C / C++ intellisence와 관련된 설정 파일인 "c_cpp_properties.json" 파일의 내용을 다음과 같이 수정한다.{ "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "/lib/modules/6.6.51+rpt-rpi-2712/source/include", "/usr/src/linux-headers-6.6.51+rpt-rpi-2712/arch/arm64/include/generated", "/u..
sync / async & blocking / non-blocking sync & asyncsynchronous라는 표현은 "동시에 실행된다"는 의미를 가지고 있다. 작업이 "동시에 실행된다"라고 해석하는 경우 동시성(Concurrent)이나 병렬(Parallelism)이 되는데, 이는 프로그래밍 언어에서 말하는 동기/비동기와는 다른 개념이다. sync나 async는 작업의 동시 실행이 아니라, 작업의 동기화(synchronization) 개념에 가깝다.synchronous: 한 작업의 끝이 다른 작업의 시작과 동기화되어, 작업이 순서대로 실행된다.asynchronous: 한 작업의 끝이 다른 작업의 시작과 동기화되지 않는다. 각 작업은 시스템 흐름(실행)과 독립적이다.SYNCHRONOUS |--------A--------| |---..
[라즈베리파이] PC에서 SSH로 접근 나는 라즈베리파이를 위한 모니터를 가지고 있지 않으므로, PC에서 SSH로 라즈베리파이를 연결해 작업을 처리하고 있다. 이 방법에 대해 정리해본다.라즈베리파이를 wifi와 연결한다.공유기를 통해 라즈베리 파이에 할당된 주소를 찾는다.PC에서 라즈베리파이에 할당된 주소로 SSH 요청을 보내 접근한다.라즈베리파이 wifi 연결라즈베리파이 이미지는 공식 문서에서 제공하는 Raspberry PI Imager라는 프로그램을 이용해 만든다.사용자 정보: 라즈베리파이 유저의 이름 & 비밀번호가 된다. 차후 SSH 접속 시 사용한다.무선 LAN: 라즈베리파이가 기본으로 연결할 wifi 주소와 비밀번호를 입력한다. 두 정보를 작성하고 SSH 사용을 활성화한 후, OS를 만들어 라즈베리파이에 연결하자. 라즈베리파이에 전원..
[운영체제] 뮤텍스, 세마포어, 튜링 동치 경쟁 상태(Race Condition)둘 이상의 프로세스가 읽거나 쓸 때 타이밍이나 순서에 따라 결과 값이 달라질 수 있는 상태임계 구역(Critical Section)여러 프로세스가 공유하는 자원에 대해 한번에 둘 이상의 프로세스가 접근해서는 안되는 영역. 한번에 여러 스레드가 접근하여 값을 변경하면 데이터의 일관성이 깨지는 race condition이 발생할 수 있다. 상호 배제(mutual exclusion): 특정 프로세스가 크리티컬 섹션에서 실행되면 다른 프로세스는 크리티컬 섹션에서 실행 불가진행(progress): 자기 크리티컬 섹션에서 실행되는 프로세스 없고 해당 크리티컬 섹션에 진입하려고 하는 다른 프로세스들 있으면 나머지 구역에서 실행중이지 않은 프로세스들만 다음 누가 그 임계구역에 진입..
[Spring] 어노테이션 기반 커스텀 인증 시스템 구현 서론 소프티어 부트캠프에서 진행된 프로젝트에서는 Spring Security를 사용할 수 없어 직접 인증 시스템을 구현해야 했다. 인증 시스템의 본질은 사용자가 특정 자원에 접근하려고 할 때 해당 사용자가 접근 권한이 있는지 검사하는 것이다. "사전"에 검사한다는 측면에서, 스프링은 아래와 같은 다양한 방식으로 인증을 구현할 수 있다.Spring InterceptorSpring AOPServlet Filter 요구사항이 없다면 어떤 방식으로 구현하더라도 상관 없지만, 현재 팀 프로젝트는 ControllerAdvice을 이용해 서버에서 발생하는 모든 예외를 잡아 동일한 규격의 메시지를 반환하도록 설계되어 있으며, 인증 시스템 역시 ControllerAdvice의 예외처리에 의해 관리되게 구성하고 싶었기에 ..
[Spring] JPA Specification과 한계 결론현재 글이 작성된 시점 ( 2024.09 ) 에서는 hibernate가 fetch graph 기반 field projection을 지원하지 않는다. JPA Specification은 fetch graph 기반으로 projection을 처리하므로 JPA 구현체로 hibernate을 이용하고 projection이 필요하다면 QueryDSL을 이용하는 것이 더 적합할 수 있다.연관 관계를 fetch하는 작업은 Specification 내부가 아니라, findBy 메서드에서 project 힌트를 줘서 처리할 수 있다.Page userPage = eventUserRepository.findBy( searchSpec, (q) -> q.project("eventFrame").page(pa..