전체 글 11

GenMachine Ren4000 시끄러운 팬 소음 해결하기 - Linux TDP/주파수 제한 가이드

최근에 이 Ren4000 미니 PC를 중고로 하나 구입했다. 홈랩용으로!요즘 유행하는 n100에 비해 훨씬 나은 CPU 성능을 갖고 있는 AMD Ryzen 7 4800U가 장착되어있어 많은 기대를 갖았고, K3s 클러스터 노드로 쓰기 시작했다. 성능은 훌륭한데 한 가지 문제가 있으니, 팬 소음이 역대급이다... 시도 1: 팬 속도 컨트롤 - 실패sudo pwmconfig# /usr/sbin/pwmconfig: There are no pwm-capable sensor modules installed리눅스에서 팬 속도를 제어하는 패키지를 설치해보았으나 실패! PWM 팬 제어가 안되고 펌웨어에서만 팬을 제어하는 것으로..시도 2: GenMachine 공식 드라이버 - 기대와 실망GenMachine에서 공식적으..

기타 2025.12.18

PostgreSQL vs MySQL, 어떻게 선택해

기술 인터뷰를 참여하면 가끔 듣는 질문이 있다.왜 그 프로젝트에서 PostgreSQL을 사용하셨나요? 처음에는 전혀 대답하지 못했다. 왜냐하면 입사했을 때부터 회사의 모든 프로젝트에서 PostgreSQL을 사용하고 있었고, 별다른 고민이나 의문을 갖지 않고 그대로 사용했기 때문이다. 그리고 몇 년뒤, 두번째로 질문을 받았을 때는 어설픈 지식으로 오답을 말했다.JSON 데이터타입을 쓰려구요. 면접관: MySQL도 JSON 타입 지원하는데요? 반성했다. 이전에 똑같이 받았던 질문을 왜 복기하지 않았을까? 아니 그 이전에 왜 아무런 기술적 고민 없이 DB를 사용하고 있었을까? 이 문제에 대해 좀 더 깊이있게 고민해봐야겠다 싶었다. 하지만 이 질문은 오랫동안 ToDo리스트에서 자고있었다. 첫째로 중간중간에 짤막..

Back-End 2023.09.23

파이썬의 GIL 이란

파이썬은 두 개 이상의 스레드가 바이트코드를 실행하는 것을 원하지 않는다. CPython의 메모리 관리 정책은 Thread Safe하지 않기 때문이다. 이러한 문제를 해결하고자 Python 바이트 코드를 실행하려면 인터프리터 잠금(GIL)을 획득해야 한다는 규칙을 추가했다. GIL [Global Interpreter Lock]이란 Python Object 접근을 제한하는 mutex이다. GIL은 한 번에 하나의 스레드만이 파이썬 바이트코드를 실행하도록 보장하기 위해 CPython 인터프리터가 사용하는 메커니즘이다. PyObject를 묵시적으로 Thread Safe 하도록 만들어서 CPython의 구현부를 단순하게 만든다. 다시 말해 로직 그 자체에 집중한 CPython 구현부를 작성하며 그 외 변수들의 ..

Back-End/Server 2022.09.05

프로세스와 스레드

프로세스(Process) 프로세스의 개념 프로세스란 실행 중인 프로그램을 뜻한다. 디스크에 있는 실행파일이 메모리에 올라가서 실행되기 시작하면 프로세스가 되며, CPU를 획득해 코드를 수행하거나 CPU를 반환하고 입출력 작업을 수행한다. 프로세스를 이해하기 위해서는 Context에 대해 알 필요가 있다. Context란 Context란 프로세스가 현재 어떤 상태에서 수행되고 있는지 정확한 상태 관리를 위해 필요한 정보를 의미한다. 일반적으로 멀티 프로세싱 환경에서는 타이머 인터럽트에 의해 짧은 시간 동안 프로세스가 완료될 때까지 CPU 자원의 획득 / 반환 과정을 반복적으로 발생시키는 방식으로 CPU 자원 관리가 이루어진다. 따라서 CPU 자원을 다시 획득해 중단됐던 명령을 재개하기 위해서는 직전 수행 ..

HTTP 인증에 관한 개요

BASIC 인증 유저네임과 패스워드를 base64 의 형태로 인코딩하여 전송하고 서버는 이를 디코딩하여 인증을 확인한다. 형태는 다음과 같다. username = 'foo' password = 'supersecretpassword' credentials = `${username}:${password}` encoded = base64.encode(credentials) request.headers.Authorization = `Basic ${encoded}` 장점 HTTP 기본 인증 프로토콜로 대부분의 브라우저에서 지원 구현이 간단함 단점 base64로 인코딩 되기 때문에 패킷 탈취 시에 보안에 매우 취약함. (SSL 반드시 필요) DIGEST 인증 Basic 인증을 기반으로 보안을 강화한 인증방식. 서버..

Back-End/Server 2022.05.08

한영전환시 팝업창 뜨지 않게 하기

1. tweaks 설치 sudo apt install gnome-tweak-tool 2. tweaks 실행 3. Keyboard & Mouse -> additional layout options 4. Switching to another layout -> 한영전환키 나의경우 Alt-R 출처: https://askubuntu.com/questions/967364/ubuntu-17-10-and-later-cant-change-the-input-switching-shortcut-to-altshift Ubuntu 17.10 and later: can't change the input switching shortcut to alt+shift When I try to set the default combo for ..

Back-End/Linux 2020.05.24

무료 도메인(Free Domain) Freenom의 Not Available 문제.

유명 무료 도메인 공급 업체인 Freenom 에서 무료 도메인을 발급 받으려고 하는 경우에 어떤 도메인을 검색해도 모두 Not Available 로 비활성화되서 제대로 진행이 되지 않는 문제가 있다. 버그인지 의도인지는 모르겠지만 여러가지로 시도 중 해결할 수 있는 방법을 찾았다. 바로 마지막 최상위 도메인(TLD)까지 모두 입력하는 것이다. 무료의 경우 .tk / .ml / .ga / .cf / .gq 등의 무료 TLD 를 포함하는 전체 도메인을 입력하면 정상적으로 진행되는 것을 발견했다. 자동으로 선택되기 때문에 우측상단에 1 domain in cart가 확인 되었다면 checkout 버튼을 클릭하여 진행하면 된다. 이후에 진행하는 방법은 이미 많은 자료가 있기 때문에 생략한다. 끝. ex) 구글 혹..

Back-End/Server 2020.02.14

객체와 배열의 프로토타입

□ 객체의 리터럴 방식으로 생성한 객체의 프로토타입 Object.prototype▲Object □ 배열 형태로 생성한 객체의 프로토타입(자바스크립트에선 배열도 객체 타입) Object.prototype ▲Array.prototype ▲Array(object) 따라서 객체 리터럴 방식으로 생성된 객체는 array.prototype을 상속받지 않기 때문에 array.prototype의 push()나 pop() 메서드를 사용할 수 없다. 출처 : 인사이드 자바스크립트 p57~59(송현주, 고현주 / 한빛미디어)

Commit 동작 구조를 알아보자.

앞으로 Git과는 어떻게든 피할 수 없다면, Git에 대해 조금 더 알아보자. 1. 새로운 파일을 최초에 add하게 되면 Index파일과 [blob] Object 파일 2개가 생성된다. 2. Commit을 하게 되면 여러가지 메시지가 추가되는데 그 중에서 주의깊게 볼 것은 역시 Object 파일이다. Object파일의 종류는 크게 3가지 종류가 있는데, 1) blob - 파일의 내용을 압축하여 지니고 있는 Object ------------여기까지는 add시 생성 2) tree - tree는 폴더의 파일의 이름과 해당 파일의 내용에 해당하는 blob code를 담고 있다. 3) commit - tree와 parent 정보 / author와 committer 정보 / Commit Message (#pare..

기타/Git 2019.02.17