본문 바로가기

전체 글

(291)
[라즈베리파이] 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..
[spring] swagger와 관련된 설정들 프로젝트에서 Swagger을 이용하면서 알게 된 설정들을 정리한다.https://github.com/blaxsior/Team6-AwesomeOrange-BE GitHub - blaxsior/Team6-AwesomeOrange-BE: 현대자동차그룹 소프티어 부트캠프 6조 어썸오렌지 팀 프로젝트현대자동차그룹 소프티어 부트캠프 6조 어썸오렌지 팀 프로젝트 (fork). Contribute to blaxsior/Team6-AwesomeOrange-BE development by creating an account on GitHub.github.comJavadoc 함께 사용하기https://springdoc.org/#javadoc-support나는 여러 사람과 협업하는데 있어서 주석의 역할이 상당히 중요하다고 생..
[spring] Spring Message Rest API와 사용 thymeleaf과 같은 뷰 템플릿을 이용할 때는 자동으로 코드를 대응되는 메시지로 변경해주지만, rest api 형식으로 구현하게 되면 이러한 편의성이 제공되지 않는다. Spring 입장에서는 사용자가 정말 응답에 국제화를 제공하고 싶은지 알 방법이 없기 때문에 당연한 것 같긴 하다.Rest API에서 예외 메시지 등을 국제화하고 싶다면 필요한 위치에 MessageSource을 주입받아 사용한다. Spring boot을 이용하면 MessageSource는 기본적으로 MessageSourceAutoConfiguration 설정을 통해 Bean 등록 되어 있으므로 별도로 설정하지 않아도 된다.사용한 설정은 다음과 같다.spring: config: import: optional:secrets.yml ..