728x90
반응형

마이그레이션 파일은 데이터베이스 스키마 변경 이력을 기록하는 Python 파일입니다. 쉽게 말해 "데이터베이스를 어떻게 변경할지" 적어놓은 설명서예요.

왜 필요한가?

예를 들어 이런 상황을 생각해보세요:

# models.py - 처음
class Place(models.Model):
    name = models.CharField(max_length=100)

이걸 데이터베이스에 만들려면:

CREATE TABLE places_place (
    id BIGINT PRIMARY KEY,
    name VARCHAR(100)
);

나중에 모델을 수정하면:

# models.py - 수정 후
class Place(models.Model):
    name = models.CharField(max_length=100)
    address = models.TextField()  # 새로 추가!

데이터베이스도 바꿔야겠죠:

ALTER TABLE places_place ADD COLUMN address TEXT;

문제는: 매번 이런 SQL을 직접 작성하고 실행하기 번거롭고, 팀원들도 똑같이 해줘야 합니다.

마이그레이션 파일의 역할

Django가 자동으로 이런 변경사항을 Python 코드로 만들어줍니다:

# migrations/0001_initial.py
class Migration(migrations.Migration):
    operations = [
        migrations.CreateModel(
            name='Place',
            fields=[
                ('id', models.BigAutoField(primary_key=True)),
                ('name', models.CharField(max_length=100)),
            ],
        ),
    ]
# migrations/0002_add_address.py
class Migration(migrations.Migration):
    dependencies = [
        ('places', '0001_initial'),  # 이전 마이그레이션에 의존
    ]
    
    operations = [
        migrations.AddField(
            model_name='place',
            name='address',
            field=models.TextField(),
        ),
    ]

실제 예시

프로젝트 구조는 이렇게 됩니다:

backend/
├── apps/
│   └── places/
│       ├── models.py              # 모델 정의
│       └── migrations/            # 👈 여기에 마이그레이션 파일들
│           ├── __init__.py
│           ├── 0001_initial.py          # 첫 번째: 테이블 생성
│           ├── 0002_add_address.py      # 두 번째: 컬럼 추가
│           └── 0003_add_rating.py       # 세 번째: 또 다른 변경

장점

  1. 버전 관리: Git으로 데이터베이스 변경 이력 추적 가능
  2. 자동화: SQL 직접 작성 안 해도 됨
  3. 이식성: PostgreSQL, MySQL, SQLite 등 어떤 DB든 동일한 파일 사용
  4. 협업: 팀원들이 python manage.py migrate 한 번으로 동기화
  5. 되돌리기: 이전 상태로 롤백 가능

워크플로우

# 1. models.py 수정
# (예: Place 모델에 phone_number 필드 추가)

# 2. 마이그레이션 파일 생성
python manage.py makemigrations
# → migrations/0004_add_phone_number.py 자동 생성

# 3. 데이터베이스에 적용
python manage.py migrate
# → 실제 DB 테이블에 phone_number 컬럼 추가됨

즉, 코드(models.py)와 데이터베이스를 동기화하는 다리 역할을 합니다!

반응형
728x90
반응형

Ghost CMS를 블로그로 쓰기 위해서는Node.js 지식이 조금 필요하다는데,
이름이 비슷한 React.js는 무엇인지, Vue.js는 무엇인지 그 차이점이 궁금해서 알아보았습니다. 처음 검색 시엔 검색결과가 쉽게 다가오지 않아서 제가 이해한대로 재구성하였습니다.

Node.js와 React.js 용도, 기능 차이점

Node.js와 React.js는 모두 JavaScript 환경에서 주로 사용되고 이름이 유사한데요,

Node.js

Node.js는 컴퓨터 언어인 JavaScript를 사용해서 컴퓨터 프로그램을 만들 수 있게 해주는 도구입니다. 보통, JavaScript는 웹 브라우저 안에서만 동작하는데, Node.js 덕분에 컴퓨터(서버) 자체에서도 동작하게 해줘요.

  • 웹 서버:
    • 컴퓨터가 다른 컴퓨터나 핸드폰에 웹 페이지를 보여주려면 '서버'라는 것이 필요해요. Node.js를 사용하면 우리의 컴퓨터를 서버로 만들 수 있어요.
  • 빠른 속도:
    • Node.js는 빨리 일을 처리하기 때문에 사용자들이 웹 페이지에서 무언가를 요청하면 빠르게 응답해줄 수 있어요.
  • 모듈:
    • 모듈은 미리 만들어진 작은 프로그램 조각이에요. 마치 레고 조각처럼 필요한 부분에 가져다 붙여서 큰 레고 작품을 만드는 것처럼, Node.js에서는 여러 모듈을 합쳐서 큰 프로그램을 만들 수 있어요.

React.js

React.js는 웹 페이지를 만드는 데 사용하는 도구입니다. 웹 페이지는 여러 조각으로 나누어져 있고, 이 조각들을 React에서는 "컴포넌트"라고 부릅니다.

  1. 컴포넌트
    1. 컴포넌트는 블록 같은 것이라고 생각하면 돼요. 여러 블록들을 조합해서 멋진 성을 만드는 것처럼, React에서는 여러 컴포넌트들을 합쳐서 웹 페이지를 만들어요.
  2. 가상 도화지 (가상 DOM):
    1. React는 변화를 기록하는 특별한 도화지를 사용해요. 이후에 무엇이 달라졌는지 확인하고, 그 부분만 새로 그려줍니다.
  3. JSX:
    1. JSX는 특별한 문법이에요. 마치 그림을 그리는 툴처럼, 우리가 원하는 화면의 모습을 쉽게 설계할 수 있게 도와줘요.
  4. 상태 & 속성:
    1. 웹 페이지에는 변하는 부분이 있어요. 예를 들어, 시계는 시간이 바뀌잖아요? 이런 변하는 부분을 React에서는 '상태'라고 해요.
    2. '속성'은 부모가 자식에게 물려주는 유전 같은거에요. 유전처럼 바꿀 수가 없는 특성이 있어요.

Node.js는 서버 측 로직을 처리하는 데 사용되며, React.js는 웹 페이지의 프론트엔드 부분, 즉 사용자 인터페이스를 만드는 데 사용됩니다. 많은 경우에, 이 두 기술은 함께 사용되어 서비스로 구축 되어집니다.

 

React.js와 Vue.js의 차이점은?

React.js와 Vue.js는 웹 페이지나 앱을 만들 때 도와주는 도구입니다. 둘 다 많이 사용되는 도구이지만, 몇 가지 주요한 차이점이 있어요.

  1. 만든 회사:
    • React.js는 페이스북이 만들었어요.
    • Vue.js는 한 개발자, Evan You가 처음 만들었고, 지금은 많은 사람들이 함께 개발하고 있어요.
  2. 작성 방법:
    • React는 JavaScript와 비슷한 JSX라는 문법을 사용해서 화면과 기능을 같이 작성해요.
    • Vue는 HTML, CSS, JavaScript를 좀 더 구분해서 작성하게 해줘요. 이렇게 작성하면 보기가 좀 더 편할 수 있어요.
  3. 학습방법:
    • React는 기본적인 부분은 쉽게 시작할 수 있지만, 여러 가지 추가 기능을 사용하려면 조금 복잡해질 수 있어요.
    • Vue는 처음 시작할 때 편하게 배울 수 있어요. 공식 문서도 친절하게 작성되어 있어서 이해하기 쉬워요.
  4. 커뮤니티와 지원:
    • React는 페이스북이 지원하고 있고, 많은 개발자들이 사용하고 있어서 정보 찾기가 쉬워요.
    • Vue는 개발자 커뮤니티가 활발하게 지원하고 있어요. 대기업보다는 개인 개발자들의 참여가 많아요.

React와 Vue는 웹 페이지나 앱을 만들 때 사용하는 도구이지만, 둘 다 각각의 장점이 있습니다. 어떤 도구를 사용할지는 개인의 취향이나 프로젝트의 요구사항에 따라 다를 수 있겠습니다.

 

결론 - Node.js, React.js, Vue.js 차이점 표 한장으로 정리

 기능/특성 Node.js React.js Vue.js
생성 및 지원 Joyent에 의해 만들어짐 페이스북에 의해 만들어짐 Evan You에 의해 개발됨
주요 사용처 서버 측 애플리케이션 사용자 인터페이스(UI) 구성 사용자 인터페이스(UI) 구성
아키텍처 이벤트 주도, 비동기 I/O 컴포넌트 기반 컴포넌트 기반 + 선언적 템플릿
데이터 반응성 N/A setState를 사용한 상태 관리 Reactive data 시스템
주된 사용 사례 백엔드 서비스, API, 서버 애플리케이션 동적 웹 애플리케이션, SPA 동적 웹 애플리케이션, SPA
학습 곡선 중간 중간 (JSX와 같은 고유한 개념이 있음) 낮음 (친숙하고 직관적인 구조)
통합 다양한 데이터베이스, 웹 서버와의 통합 가능 Redux, MobX 등의 상태 관리 도구와 통합 가능 Vuex를 포함한 다양한 플러그인과의 통합 가능

 

반응형
728x90
반응형

버전: 2025-08

1. 개요

Cloudflare Tunnel은 로컬 네트워크 환경의 애플리케이션을 외부 인터넷에 안전하게 노출시키는 방식이다. 전통적인 포트 포워딩이나 VPN과 달리 Zero Trust 원칙을 따르며, Cloudflare 네트워크를 통해 암호화된 연결을 제공한다. 이를 위한 핵심 도구가 cloudflared CLI를 통해 터널 생성, 실행, 라우팅, 모니터링, 정리 작업을 수행할 수 있다.

2. 설치 및 기본 구조

  • 설치:
brew install cloudflared 
# macOS 

apt-get install cloudflared
# Linux (repo 추가 후)

winget install Cloudflare.cloudflared
# Windows
  • 구성요소:
    • Tunnel: Cloudflare 네트워크에 등록된 고유 연결.
    • Connector: cloudflared 프로세스가 Cloudflare에 터널을 열어주는 역할.
    • Routing: 특정 도메인 → 특정 로컬 서비스로 트래픽을 매핑.

3. 운영 시나리오 예시

3.1 신규 터널 생성 및 실행


cloudflared tunnel login 
cloudflared tunnel create my-tunnel 
cloudflared tunnel route dns app.example.com my-tunnel 
cloudflared tunnel run my-tunnel

3.2 사설 네트워크 라우팅 추가


cloudflared tunnel route ip add 10.0.0.0/24 my-tunnel 
cloudflared tunnel route ip show

3.3 비정상 종료 후 정리

cloudflared tunnel cleanup my-tunnel

3.4 터널 삭제
터널은 이름 또는 UUID로 삭제할 수 있음. 안전하게 UUID로 지우는 걸 추천

cloudflared tunnel delete xxxxxxx-XXXX-XXXX-xxxx-xxxxxxxx

4. 명령어 분류

카테고리 명령어 설명
인증 cloudflared tunnel login 브라우저 인증 창을 열어 Cloudflare 계정과 터널을 연결
조회 cloudflared tunnel list 모든 활성/삭제된 터널 목록 표시 (-d로 삭제된 터널 포함)
생성 cloudflared tunnel create <NAME/UUID> 터널 생성 및 자격 증명 파일 발급
실행 cloudflared tunnel run <NAME/UUID> 지정된 터널 실행 (고가용성 연결 생성)
정보 cloudflared tunnel info <NAME/UUID> 해당 터널의 활성 커넥터 상세 정보 표시
정리 cloudflared tunnel cleanup <NAME/UUID> 비정상 종료된 터널 연결 제거
라우팅 (DNS) cloudflared tunnel route dns <HOSTNAME> 터널로 향하는 CNAME 레코드 생성
라우팅 (IP) cloudflared tunnel route ip add <IP/CIDR> 특정 네트워크 대역을 터널에 연결
cloudflared tunnel route ip show 조직의 프라이빗 라우팅 테이블 조회
cloudflared tunnel route ip delete <CIDR> 지정 CIDR 라우팅 제거
cloudflared tunnel route ip get <IP> 특정 IP가 어떤 라우팅 규칙을 따르는지 확인
로드밸런싱 cloudflared tunnel route lb <NAME/UUID> 터널을 로드밸런서 풀에 연결
설정 실행 cloudflared tunnel --config path/config.yaml YAML 설정 파일 기반 터널 실행

5. 운영 팁

  • 구성 파일 관리: /etc/cloudflared/config.yaml에 터널 이름, 인스턴스 수, 라우팅 설정을 저장하면 재시작 시 편리.
  • 모니터링: cloudflared tunnel info로 연결 상태를 주기적으로 점검.
  • 보안: 터널 자격 증명 파일(.json)은 루트 권한 또는 최소 권한으로 보호.

6. 참고 문서

반응형
728x90
반응형

AhnLab Safe Transaction(ASTx)에서 원격 접속(Remote Connection)을 허용하려면 아래 단계를 따라 설정하세요:


원격 접속 허용 설정 방법

  1. 트레이 아이콘 우클릭 → 환경 설정 열기
    작업 표시줄 오른쪽의 AhnLab Safe Transaction(방패 모양 아이콘)을 우클릭한 뒤 "환경 설정" 메뉴를 선택합니다.





  2. '원격 접속 차단' 체크 해제
    환경 설정 창 중간 부분에 있는 “원격 접속 차단” 옵션의 체크를 해제합니다. 이렇게 하면 원격 접속이 허용됩니다.

  3. 사이트 및 프로그램 특성 확인
    다만, 보호 사이트 정책이나 금융서비스 특성에 따라 설정을 해도 원격 접속이 제한될 수 있습니다. 이런 경우에는 해당 사이트와 관련된 프로그램이나 브라우저 창을 모두 종료한 뒤 다시 시도해 보세요 


요약

단계내용

1. 트레이 아이콘 우클릭 → 환경 설정
2. “원격 접속 차단” 체크 해제 
3. 해당 금융사이트 접속 / 재접속

 

주의사항

“원격 접속 차단” 기능은 사용자도 인지 못한 사이에 악의적인 원격 접근을 방지하기 위한 설정입니다. 따라서 필요 시에는 해제하셔도 되지만, 보안 측면을 고려하여 사용하시는 것을 권장드립니다.

반응형
728x90
반응형

ssh 로 key파일 이용해서 서버 접속하는데 이런 오류가 났다. 

 

이전에도 봤던 에러인데 어떻게 해결했는지 기억도 되짚어 보고 기록도 남겨둘 겸 글써두기. 

 

리눅스라면 단순히 chown 명령어로 간단히 해결했을테지만, 윈도우 환경에서는 아래와 같이 해결해줘야 한다. 

 

해당 key파일에 오른쪽 마우스 >> 속성  >> '보안' 탭 클릭 

그리고 아래 (2) 동그라미에 현재 접속하고자 하는 윈도우 계정 빼고 모두 삭제해야 한다. 
즉 현재 보이는 화면 처럼 계정 1줄 남기고 모두 삭제! 

아래 '고급'버튼을 누르면 그룹이나 사용자목록을 제거할 수 있다. 

 

 

그리고 다시 ssh 접속해보면 됨. 끗! 

 

반응형
728x90
반응형

Watchtower는 Docker 컨테이너를 모니터링하고 자동으로 최신 이미지로 업데이트해주는 도구입니다.

 

docker-compose.yml 파일 예시
 
version: "3"
services:
  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - WATCHTOWER_CLEANUP=true
      - WATCHTOWER_SCHEDULE=0 0 4 * * * # 매일 새벽 4시에 실행
      - TZ=Asia/Seoul # 시간대 설정
    restart: unless-stopped
 

주요 설정 설명:

  1. image: Watchtower의 공식 이미지(containrrr/watchtower)를 사용합니다.
  2. container_name: 컨테이너 이름을 watchtower로 지정합니다.
  3. volumes: /var/run/docker.sock를 마운트하여 Watchtower가 Docker API에 접근할 수 있도록 합니다.
  4. environment:
    • WATCHTOWER_CLEANUP: 업데이트 후 이전 이미지를 정리합니다.
    • WATCHTOWER_SCHEDULE: 크론 형식으로 업데이트 주기를 설정합니다. 위 예제는 매일 새벽 4시에 실행됩니다. (크론 형식: 초 분 시 일 월 요일)
    • TZ: 시간대를 설정합니다. 예시는 한국 시간(Asia/Seoul)입니다.
  5. restart: 컨테이너가 종료되더라도 자동으로 재시작하도록 설정합니다.

사용 방법:

  1. 위 내용을 docker-compose.yml 파일로 저장합니다.
  2. 아래 명령어로 Watchtower를 실행합니다: 
  3. bash 명령어 
     
    docker-compose up -d

 

추가 옵션 (선택 사항):

  • 특정 컨테이너만 모니터링하고 싶을 때:
    yaml
    environment: - WATCHTOWER_INCLUDE_STOPPED=true # 정지된 컨테이너도 포함 - WATCHTOWER_IGNORE_CONTAINERS=container_name # 특정 컨테이너 제외
  • 알림 설정(Slack, Email 등):
    yaml
    environment: - WATCHTOWER_NOTIFICATIONS=slack - WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL=https://hooks.slack.com/services/xxx/yyy/zzz

더 많은 설정은 Watchtower 공식 문서를 참고하세요.

 

Discord 웹훅에 Watchtower 연결하기 

Discord에서 웹훅의 TOKENWEBHOOK_ID를 확인하려면 아래 단계를 따라주세요. 이 과정은 Discord 서버의 채널에서 웹훅을 생성하고 URL에서 필요한 정보를 추출하는 방법입니다.

1. Discord 웹훅 생성

  1. 서버 및 채널 선택:
    • Discord 서버에서 알림을 받을 채널로 이동합니다.
    • 서버 관리 권한이 있어야 웹훅을 생성할 수 있습니다.
  2. 채널 설정으로 이동:
    • 채널 이름 옆의 톱니바퀴 아이콘(⚙️)을 클릭하거나, 채널을 우클릭한 뒤 "채널 수정"을 선택합니다.
  3. 통합(Integrations) 탭:
    • 채널 설정 메뉴에서 "통합" 탭을 선택합니다.
    • "웹훅" 섹션에서 "웹훅 만들기" 또는 "웹훅 보기" 버튼을 클릭합니다.
  4. 웹훅 생성:
    • "새 웹훅" 버튼을 클릭하여 웹훅을 생성합니다.
    • 웹훅의 이름과 알림을 받을 채널을 설정한 후 저장합니다.
    • 생성 후 "웹훅 URL 복사" 버튼을 눌러 URL을 복사합니다.

2. WEBHOOK_ID와 TOKEN 추출

복사한 웹훅 URL은 다음과 같은 형식을 가집니다:

text
https://discord.com/api/webhooks/<WEBHOOK_ID>/<TOKEN>
  • WEBHOOK_ID: URL에서 https://discord.com/api/webhooks/ 바로 뒤의 숫자 부분입니다.
  • TOKEN: WEBHOOK_ID 뒤의 슬래시(/) 이후 나오는 긴 문자열입니다.

예시 URL:

  • WEBHOOK_ID: 123456789012345678
  • TOKEN: AbCdEfGhIjKlMnOpQrStUvWxYz

3. 주의사항

  • 보안: 웹훅 URL, 특히 TOKEN은 민감한 정보입니다. 절대 공개적으로 공유하지 마세요. URL을 가진 사람은 해당 채널에 메시지를 보낼 수 있습니다.
  • 권한: 웹훅을 생성하거나 수정하려면 서버에서 "웹훅 관리" 권한이 필요합니다.
  • 문제 해결: URL이 작동하지 않거나 잘못된 경우, Discord 채널 설정에서 웹훅이 올바르게 생성되었는지, 또는 삭제되지 않았는지 확인하세요.

4. Watchtower 설정에 적용

이전에 제공한 docker-compose.yml에서 WATCHTOWER_NOTIFICATION_URL에 다음과 같이 입력합니다:

yaml
 
environment: - WATCHTOWER_NOTIFICATION_URL=discord://<TOKEN>@<WEBHOOK_ID>

예시:

yaml
 
- WATCHTOWER_NOTIFICATION_URL=discord://AbCdEfGhIjKlMnOpQrStUvWxYz@123456789012345678

 

 

 

반응형
728x90
반응형

현재 Claude code는 윈도우 운영체제를 지원하지 않아서 WSL 을 먼저 설치 해야 합니다.

여기서는 WSL을 설치하고 WSL 의 ubuntu에서 실행하는 것을 기본 전제로 하겠습니다.

소프트 웨어 준비

  • Node.js 18+
  • git 2.23+ (optional)
  • GitHub or GitLab CLI for PR workflows (optional)

위 세가지가 준비 되어야 하는데, 여기서 Node.js 설치하는 법을 안내하겠습니다.

1. NodeSource를 이용한 Node.js 설치 (추천)

(만약 최신 버전인 "Current" 릴리스로 설치 하고싶을 경우 1-1 따라하기)

원하는 Node.js 버전에 따라 아래 명령어를 입력하세요.
(예시: 20.x 버전 설치)

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - 
sudo apt-get install -y nodejs

설치 확인:

node -v 
npm -v

1-1. Node.js "Current" 릴리스로 설치

curl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E bash -
sudo apt-get install -y nodejs

1-2. Node.js 22.x (LTS 버전)

  • Node.js 22.x (LTS 버전)
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs

1-3. Ubuntu 공식 패키지로 설치 (버전이 낮을 수 있음)

  1. 터미널에서 아래 명령어 입력:
  2. sudo apt update sudo apt install -y nodejs npm`
  3. 버전 확인:
node -v 
npm -v

3. npm의 전역(global) 패키지 설치 위치 변경

기본적으로 npm에서 전역 패키지를 설치하려면 시스템 전체에 영향을 미치기 때문에 root(관리자) 권한이 필요합니다.
그래서 보통 sudo npm install -g 패키지명처럼 sudo를 붙여야 했죠.
그런데 sudo 없이 패키지를 설치하고 싶거나, 시스템 파일을 건드리지 않고 내 사용자 환경에서만 쓰고 싶을 때 이 방법을 씁니다.
또한, 전역 설치를 위해 sudo를 남발하면, npm이 의도치 않게 시스템 파일까지 수정할 위험이 있습니다.
내 홈 폴더(~/.npm-global)에서만 전역 설치가 이뤄지도록 하면, 시스템 파일을 건드릴 일이 없어서 훨씬 안전하겠죠?

npm list -g --depth=0 > ~/npm-global-packages.txt
mkdir -p ~/.npm-global
npm config set prefix ~/.npm-global
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

여기까지 했으면 이제 Claude code 설치 준비는 끝난겁니다.

마지막 단계

npm install -g @anthropic-ai/claude-code

위 명령어를 입력했을 때 아래와 같이 떴다면 성공한겁니다.

이제 claude 명령어를 입력해 실행해봅니다.

claude

 

아래와 같이 초기 설정이 진행됩니다. 원하는 화면 모드를 선택한 후 다음으로 넘어갑니다. 

 

Claude 구독을 하고 있다면 1번,
API 사용 기반 과금 형식으로  사용하고자 한다면 2번을 선택합니다. (저는 구독이 있어 1번을 선택합니다.)

 

그 다음에는 사용자 인증 절차를 거쳐야 합니다. claude 로그인 url이 나타나는데 컨트롤 + 클릭 하거나, 해당 주소를 브라우저에 복사 + 붙여넣기 하여 접속해줍니다. 

 

그러면 아래와 같이 연결 승인 절차가 진행됩니다. 

 

승인을 하면 길다란 코드가 발급이 되고요, Copy Code 를 클릭해서 복사해줍니다. 

 

복사해준 코드를 다시 WSL 화면으로 돌아와 붙여주고 엔터를 입력합니다. 

 

Login Successful 이라고 뜨면서 인증 절차가 잘 진행되었습니다. 엔터 쳐줍니다. 

 

보안 관련 안내사항이 있습니다. 자세한 사항은 링크를 클릭해 읽어보라는 군요. 엔터 치면 다음으로 넘어갑니다. 

 

여기서부터는 claude code를 실행할 때마다 뜨는 화면입니다. 현재 경로에서 작업할게 아니면 2번을 입력해 나갑니다. 

 

이제 claude 명령어를 입력해 WSL 내 어디서든 claude code를 활용해 개발할 수 있습니다. 즐코딩! 

반응형
728x90
반응형

증상

SER8을 잘 쓰다 갑자기 스피커를 연결해도 소리도 안들리고, 모니터를 2대 이상 연결했을 때 연결도 안되는 증상이 있었다. 

 

해결

지피티한테 물어보고 이것저것 시도해보다가 아래 Beelink 사이트에서 그래픽 드라이버를 설치하고 해결되었다. 

링크 : Beelink

 

Beelink

 

dr.bee-link.cn

 

위 링크를 들어가면 아래와 같이 5개의 파일목록이 있는데, 나는 다 다운로드를 받아두었다. 그래픽 드라이버는 맨 아래 
SER8-8845-Driver_2024-05-16_7-12-50.zip 파일에 포함되어 있다. 

 

위 SER8-8845-Driver_2024-05-16_7-12-50.zip 파일 압축을 풀면 이렇게 나온다. 이 중에 VGA 폴더에 들어간다. 

 

아래 실행파일을 실행하면 모니터들이 제대로 인식된다. 

 

 

반응형

+ Recent posts