본문 바로가기

분류 전체보기910

Ubuntu ] Kernel version 업그레이드 되지 않게 고정하기 현재 설치되어 있는 커널 버전 확인하기$ dpkg -l | grep linux-image또는$ dpkg -l | grep linux-  현재 사용 중인 커널 버전 확인하기$ uname -r  현재 실행중인 커널 버전에서 더이상 업그레이드 되지 않도록 고정하기 (apt upgrade 명령에서 제외)$ sudo apt-mark hold linux-generic linux-image-generic linux-headers-generic  정상적으로 고정 되어있는지 확인하기$ apt-mark showhold  업그레이드 수행$ sudo apt update && sudo apt upgrade  고정 해제 시$ sudo apt-mark unhold linux-generic linux-image-generic lin.. 2025. 1. 17.
LDD ] PCIe 디바이스 드라이버 작성하기 - (2) Parallel Port에 대해서먼저 맨땅에 데이터시트를 읽으려니 이해가 힘들어서 Parallel port 프로토콜에 대해 대충 알아봤다. Parallel port란 물리적인 포트를 의미하기도 하지만, 이를 통해 이루어지는 통신 방식도 포함한다. 먼저 Parallel port는 보통 DB-25 커넥터를 사용하며 아래 핀 배열을 기반으로 한다. 핀 번호신호 이름설명방향1Strobe데이터 전송 시작 신호출력2-9Data0-Data78비트 데이터 라인출력(기본)/입력10Ack데이터 수신 확인 신호입력11Busy장치 사용 중 신호입력12Paper-Out용지 부족 신호입력13Select장치 선택 신호입력14Auto Feed자동 줄 바꿈 제어출력15Error장치 오류 신호입력16Initialize장치 초기화 제어출.. 2025. 1. 15.
Ubuntu ] 부팅시 화면 멈춤 현상 해결 방법 (nomodeset) 부팅 중 시스템이 멈추는 현상은 보통 커널이 그래픽카드를 초기화하는 과정에 문제가 발생하여 생긴다고 한다. 다음의 방법으로 해결을 시도해보자  1. 부팅 시 GNU GRUB 메뉴에서 e(편집)키를 누른다.   2. " linux /boot/vmlinuz-***"로 시작하는 줄을 찾아 줄 끝에 한 칸 띄고 nomodeset을 입력한뒤 Ctrl+X 또는 F10을 저장한 뒤 빠져나온다.   nomodeset은 부팅 중 커널이 KMS(Kernel Mode Setting)를 사용해 그래픽 드라이버를 초기화하지 않도록 방지하고, 대신 기본 드라이버(VESA 또는 fbdev)를 사용하여 최소한의 그래픽 환경을 제공해 화면이 표시되도록 한다. 위의 방법은 1회성 해결책이기에 이렇게 부팅한 이후 올바른 드라이버를 설치하.. 2025. 1. 13.
Acer 노트북 Secure Boot disable 하기 부팅 시 F2 키를 연타해 BIOS에 진입한다.  Boot 탭에서 Secure Boot가 [Enabled] 된 상태인데 위아래 방향 키를 눌러도 Secure Boot 행으로 이동이 되지 않는다.    그 땐 먼저 Security 탭에서 Set Supervisor Password를 선택해 설정해 준다   그리고 다시 Boot 탭으로 이동하면 Secure Boot가 [Disabled] 상태로 바꿀 수 있다. 2025. 1. 11.
Windows ] BitLocker 비활성화 하기 일부 노트북에 Windows Pro 설치 시 BitLocker 기능을 켜지 않았어도 자동으로 활성화되는 경우가 있다. 바로 내 노트북이 그런 경우였다. Win + X > 디스크 관리에서 BitLcoker로 암호화되어 있는지 여부를 확인할 수 있다.    BitLocker 복구키 찾기 Microsoft 계정을 사용하여 PC에 로그인하는 경우 BitLocker 복구 키가 자동으로 Microsoft의 클라우드에 백업된다고 한다.아래 웹사이트에서 PC 로그인에 사용하는 계정과 동일한 Microsoft 계정으로 로그인하여 확인할 수 있다.http://go.microsoft.com/fwlink/?LinkId=237614    만약 윈도우 로컬 계정을 사용하고 복구키 백업도 안해둔 상태에서 BitLocker 기능으로.. 2025. 1. 9.
C ] TUI ARINC429 비행 고도/속도 송신 앱 (Text-based User Interface) 개발 배경 :콘솔 창에 그래픽 요소를 추가하여 사용자 친화적인 인터페이스를 구현한 형태를 TUI(Text-based UI) 또는 CUI(Console UI)라고 한다. 사용자로부터 키보드 입력을 받아 프로그램을 제어하고 데이터를 시각적으로 구분하기 위해 박스나 테두리를 활용하고 색상을 입혀 데이터를 강조한다.이런 TUI 앱을 언젠가 한번 만들어봐야지 하고 생각했었는데 마침 적당한 사례를 발견해서 업무상 굳이 필요는 없었지만 개인 시간을 들여 한번 만들어 봤다.  어플리케이션 설명 :이 어플리케이션은 대기 자료 컴퓨터(Air Data Computer)를 시뮬레이션하기 위한 도구로 비행고도(Altitude)와 비행속도(Airspeed) 정해진 주기로 송신하도록 제어할 수 있다. 현재 송신하고 있는 데이터를 .. 2025. 1. 7.
C] 콘솔 프로그램 플리커 현상 개선하기 (더블 버퍼링 & 오프스크린 버퍼) 콘솔 화면을 주기적으로 갱신하는 프로그램을 개발 시 화면이 깜빡이는 플리커(flicker) 현상이 발생할 수 있다. 이번 글에서는 이런 플리커 현상을 개선하기 위한 전략을 알아보자.  먼저 대략 60fps로 7세그먼트 형식의 디지털시계를 출력하는 C언어 프로그램을 작성해보았다. 프로그램을 실행시키면 아래 이미지 처럼 화면이 깜빡이면서 출력되는 것을 볼 수 있다.    플리커 현상의 원인은? 플리커 현상은 화면 갱신 과정에서 발생하는 중간 상태가 사용자에게 노출되면서 발생한다. 아래 코드를 보면 system("cls")를 사용해 화면을 완전히 지운 후, 초기화된 화면에 새로운 데이터를 출력하고 있다. 이 과정이 빠르게 반복되면서 빈 화면과 새 데이터를 그리는 중간 상태가 짧은 시간 동안 화면에 보여지게 되.. 2025. 1. 5.
SCPI 사용해 DC Power supply 제어하기 이전에 SCPI에 대한 글을 썼었는데 이번에는 SCPI를 직접 사용하여 계측장비를 제어해보도록 한다. SCPI(Standard Commands for Programmable Instruments)란? 다양한 계측 장비를 프로그래밍하기 위한 표준화된 명령어 세트이다. SCPI 명령어는 주로 장비를 원격으로 제어할 때 사용되며 여러 제조사의 다양한 장비 간 호환성을 확보하도록 개발되었다. Standard라는 말이 무색하게도 명령어 셋은 장비별로 차이가 있기 때문에 매뉴얼을 찾아보면 된다.    내가 다룬 GW INSTEK 사의 GPD-4303S 제품은 후면 USB Type-B port를 통해서 PC와 연결하고 Com port를 아래와 같이 설정하면 시리얼 인터페이스로 제어할 수 있다.   명령어는 직관적인 .. 2025. 1. 3.
Ubuntu ] 18.04에서 20.04로 업그레이드 하기 우분투 18.04에서 20.04로 업그레이드하는 과정을 정리한다. 업그레이드 시 시스템파일과 패키지는 업데이트되고 사용자의 홈 디렉토리는 그대로 유지된다.   1.현재 시스템 확인$lsb_release -a$uname -r  2. 현재 시스템 업데이트 업그레이드 전 시스템을 최신 상태로 유지한다.$sudo apt update && sudo apt upgrade -y 더이상 사용하지 않는 패키지는 삭제한다.$sudo apt autoremove -y    3. 업그레이드 도구 설치 업그레이드 도구가 설치되어 있는지 확인한다.$sudo apt install update-manager-core   4. PPA(추가저장소) 비활성화 업그레이드 과정에서 PPA(Personal Package Archive)와 공식 .. 2025. 1. 1.
VSCode에서 리눅스 커널 모듈 개발시 Intellisense Error 없애기 Workspace에서 .vscode/c_cpp_properties.json 추가 (Ctrl + Shift + P > Edit Configuration) 그리고 커널 모듈 코드 작성시 필요한 매크로와 헤더 경로를 추가해주면 된다. { "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "/usr/include", "/usr/local/include", "/usr/src/linux-headers-5.4.0-150-generic/include", .. 2024. 12. 29.
Linux와 Windows 멀티 부팅시 시간이 어긋나는 문제 해결하기 문제 원인컴퓨터에는 RTC(Real-Time Clock)라는 칩이 메인보드에 내장되어 있는데, RTC는 배터리 전원을 사용해 컴퓨터가 꺼져 있어도 지속적으로 시간을 카운팅하는 기능을 한다. 그리고 컴퓨터가 다시 켜지면 운영체제는 RTC에 저장된 시간을 불러오고 이후에는 소프트웨어적으로 시스템 시간을 관리한다. 하지만 윈도우와 리눅스가 RTC에 시간을 저장하는 방식에 차이가 있는데 윈도우는 로컬 타임을 저장하고, 리눅스는 UTC를 저장한다. 때문에 윈도우와 리눅스를 번갈아 부팅할 경우 시간이 어긋나는 문제가 발생할 수 있다.   문제 해결 방법 문제 해결을 위한 2가지 방법을 생각해 볼 수 있겠다. 리눅스가 하드웨어 시계를 로컬 시간으로 처리하도록 하는방법윈도우가 하드웨어 시계를 UTC로 처리하도록 하는 .. 2024. 12. 27.
LDD ] PCIe 디바이스 드라이버 작성하기 - (1) PCIe 카드 구입  이제부터 PCIe 리눅스 디바이스 드라이버를 공부해보려고 PCIe 카드 하나를 구입했다. 학습용으로 사용할거기 때문에 네이버에서 낮은 가격순으로 정렬해서 가장 저렴한걸 구입해봤다. COMS 사의 SW562 제품으로 CH382L 칩셋을 탑재한 x1 슬롯 타입 PCIe 페러럴 포트 카드이며 윈도우 디바이스 드라이버CD와 함께 제공된다.   📝 페러럴 포트란? Parallel Port는 예전에는 프린터, 스캐너, 산업용 장비 등 다양한 외부 장치를 연결하는 데 사용되었지만, 최근에는 USB나 네트워크 연결 방식으로 대체되어 PC에서 기본적으로 제공되지 않는 경우가 많다. 때문에 레거시 장비와 호환을 위해서 PCIe 슬롯에 꼽으면 PC에 Parallel Port를 추가해주는 이런 확장 카.. 2024. 12. 25.
Linux ] flameshot : 스크린샷 캡쳐 및 편집 프로그램 flameshot 설치$sudo apt install flameshot  flameshot 실행$flameshot gui  flameshot 설정$flameshot config   단축키 등록하고 쓰기시스템 설정 > 장치 > 키보드 > 사용자 설정 단축키 추가    드래그앤 드롭으로 캡쳐 영역 선택우클릭으로 편집 툴 컬러 선택마우스 휠로 편집 툴 굵기 선택 2024. 12. 23.
USB Serial 장치의 COM Port 고정하는 방법 (Windows) 먼저 USB 장치는 모두 고유 식별자를 가지고 있으며 USB 시리얼 장치의 경우 해당 식별자를 바탕으로 운영체제가 COM port를 할당하게 된다.  USB 장치의 고유 식별자 VID (Vender ID) : USB-IF(USB Implementers Forum)에서 제조사에게 고유하게 부여하는 제조사 식별자PID (Product ID) : 각 제조사가 제품 라이업에 따라 자체적으로 관리하는 제품 식별자Serial Number : 동일한 모델의 제품이라도 각각의 장치를 구분하기 위한 고유 문자열   USB 장치의 고유 식별자 확인 방법장치 관리자 > 포트 > 장치 선택 후 우클릭 > 속성 > 자세히 > 속성 : 장치 인스턴스 경로 선택 > 값 확인  값이 위와 같은 경우 VID, PID, Serial N.. 2024. 12. 21.
Jetson Xavier NX ] 고정 IP 설정 netplan 사용하여 네트워크 구성 설정하기 netplan.io 설치$sudo apt update$sudo apt install netplan.io  네트워크 인터페이스 설정 추가$sudo vim /etc/netplan/config.yamlnetwork: version: 2 ethernets: eth0: dhcp4: no addresses: [192.168.0.123/24] gateway4: 192.168.0.1 nameservers: addresses: [8.8.8.8, 8.8.4.4]  설정 파일 적용$sudo netplan apply   설정 적용확인$ifconfig     ➕ 네트워크 인터페이스의 하드웨어 설정은 ethtool 명령을 통해.. 2024. 12. 19.
inet_addr, inet_aton, inet_pton, inet_ntoa, inet_ntop 1. 문자열 형식의 IP 주소를 uint32_t 형식으로 변환하는 함수 :inet_addr, inet_aton, inet_pton  - inet_addr문자열 형식의 IPv4 주소를 uint32_t로 변환.반환된 값이 네트워크 바이트 순서로 저장됨.Deprecated(더 이상 권장되지 않으며, 향후 버전에서 제거될 가능성이 있으니 사용을 자제해야하는 함수) 이므로 최신 코드에서는 inet_aton 또는 inet_pton을 사용하는 것이 권장됨.#include #include #if defined(_WIN32) || defined(_WIN64)#pragma comment(lib,"ws2_32")#include #else#include #endifint main() { const char* ip_str = .. 2024. 12. 17.
배치파일에서 call 명령어 사용법 배치 파일에서 call 명령어는 크게 두 가지 경우에 사용된다. 1. 다른 배치 파일 호출 후 돌아오기2. 서브루틴 호출    1. 다른 배치 파일 호출 후 돌아오기  배치 파일에서 다른 배치 파일을 호출할 때 단순히 파일 이름만 적으면 현재 실행 중인 배치 파일은 호출된 파일로 넘어가고 다시 돌아오지 않는다. 이런 경우 call 명령어를 사용하면 호출된 배치 파일이 끝난 후 원래 배치 파일로 다시 돌아와 남은 작업을 이어서 수행할 수 있다. first.bat@echo offecho 첫 번째 배치 파일 실행 중call second.batecho 첫 번째 배치 파일로 돌아와서 마지막 작업 실행 중  second.bat@echo offecho 두 번째 배치 파일 실행 중     2. 함수 형태로 서브루틴 호.. 2024. 12. 15.
배치 파일에서 명령 인수 활용법 명령 인수(또는 매개변수)는 배치 파일을 실행할 때 외부에서 값을 전달할 수 있는 방법이다. 배치 파일 내에서 %1, %2, %3 등으로 인수에 접근할 수 있고, 여기서 각 숫자는 전달 된 인수의 순서를 의미한다.  - 사용 예시@echo off:: 인수 확인if "%1"=="" ( echo 파일 이름을 입력해 주세요. exit /b)if "%2"=="" ( echo 대상 폴더를 입력해 주세요. exit /b):: 인수로 받은 파일을 지정된 폴더로 복사set "source=%1"set "destination=%2"copy "%source%" "%destination%"echo 파일 %source%를 %destination%로 복사함.batchfile.bat test.txt C:\Ba.. 2024. 12. 13.
AMBA (AHB, APB, AXI) AMBA(Advanced Microcontroller Bus Architecture)란?ARM에서 도입한 오픈-표준 온칩 인터커넥트 사양이다. System-on-Chip (SoC) 설계에서 프로세서, 메모리 컨트롤러, 주변 장치와 같은 다양한 컴포넌트 간 상호 연결을 위한 표준으로, AMBA의 프로토콜은 잘 문서화되어 있고 로열티 없이 사용할 수 있기 때문에 오늘날 임베디드 프로세서 버스 아키텍처의 사실상 표준이다. AMBA 아키텍처의 대표적 버스 프로토콜은 다음과 같다.  AHB (Advanced High-Performance Bus) : 프로세서와 메모리 또는 고속 주변 장치 간 연결에 사용한다.APB (Advanced Peripheral Bus) : 저전력, 저속 주변 장치를 위해 설계된 버스 프로.. 2024. 12. 11.
배치파일에서 setlocal, setlocal enabledelayedexpansion 사용법 setlocal - setlocal과 endlocal 이란?setlocal은 배치 파일 내에서 환경 변수나 코드 블록이 현재 세션에서만 적용되도록 설정하는 명령어이고 endlocal은 setlocal에 의해 생성된 지역 환경 설정을 원래 상태로 복구하는 명령어이다.  - endlocal을 생략할 수 있는 경우일반적으로 배치 파일이 끝나면서 세션이 종료되면 자동으로 endlocal이 적용되므로, 배치 파일 마지막에서 endlocal을 생략해도 큰 문제가 생기지 않는다. 하지만 배치파일 내에서 다른 배치파일을 호출하거나 연달아 여러 배치파일을 호출하는 경우 각 setlocal에 맞는 endlocal을 명시적으로 추가해주는 것이 안전하다.  - setlocal을 사용해야 하는 경우?배치 파일 내에서 다른 배치.. 2024. 12. 11.
Visual Studio ] NO Operation 코드 보통 GCC에선 코드의 특정 위치에서 아무 작업도 하지 않고 시간을 잠시 지연시키거나 디버깅 시 브레이크포인트를 목적으로 asm("nop"); 구문을 많이 사용한다.  여기서 asm은 어셈블리를 코드에 삽입할 수 있도록 해주는 GCC 확장이고 nop은 아무 작업도 수행하지 않는 어셈블리 명령어로 프로세서가 이 명령어를 만나면 한 사이클 동안 아무 작업도 하지 않고 넘어간다. asm( "nop");   Visual Studio에서 사용 가능한 NO Operation 코드 그럼 MSVC(Microsoft Visual Studio Compiler) x64 에서는 이와 유사한 방식으로 어떻게 아무 작업도 하지 않으면서 필요시 브레이크포인트를 설정할 수 있는 코드를 작성할 수 있을까? 먼저 __noop; 과 (.. 2024. 12. 9.
CCS ] .out(ELF) 파일에서 섹션 정보 파싱하기 CCS에서 프로젝트를 빌드하면 .out 확장자의 ELF 형식 실행파일이 생성된다. 해당 파일을 파싱하여 섹션 정보를 획득해보자.     CCS 폴더 경로에서 주운 elf.h 파일, 여기서 함수 원형은 무시하고 구조체 정의랑 매크로 상수만 활용하자. 근데 또 여기엔 Elf32_Phdr 정보가 없어서 다른데서 구해왔다. /* * ======== elf.h ======== */#ifndef ELF_#define ELF_ 1/* * ======== Elf32_Handle ======== */typedef struct Elf32_Object *Elf32_Handle;typedef Bits32 Elf32_Addr;typedef Bits16 Elf32_Half;typedef Bits32 Elf32_Of.. 2024. 12. 7.
Visual Studio ] 프로젝트 이름 바꾸기 1. 기존 Project 폴더를 복사/붙여넣기 하여 복사본 생성  2. 복사본 폴더명을 원하는 Project 이름으로 변경  3. 프로젝트 폴더 안 최상위 경로에 이전 프로젝트 이름으로 존재하는 파일 등을(.sln, .vcproj, .vcxproj.filter, .vcxproj.user) 새로운 프로젝트 이름으로 변경  4. .sln 파일과 .vcporj 파일을 텍스트 파일 편집기로 열어서 찾기/바꾸기 기능으로 이전 프로젝트 이름을 새 프로젝트 이름으로 모두 변경  5. .vs 폴더 삭제 (캐시 데이터가 저장된 폴더로 Visual Studio로 프로젝트를 열면 새로 생성됨)  6. 빌드 출력물이 들어있는 x64 또는 x86 폴더 삭제 (빌드하면 새로 생성됨)  7. 새로운 이름의 프로젝트를 Visual .. 2024. 12. 5.
C++ ] <random> 헤더 사용 난수 생성 C++ 헤더를 사용해 난수 생성하는 방법 1. 헤더 파일 포함#include    2. 시스템 기반 난수 시드 생성시스템에서 제공하는 하드웨어 기반 난수 시드를 가져온다.std::random_device rd;   3. 난수 생성 엔진 초기화시드를 사용해 난수 생성 엔진을 초기화한다. 보통은 Mersenne Twister 알고리즘을 사용한 std::mt19937 엔진을 많이 사용한다.std::mt19937 gen(rd()); // Mersenne Twister 엔진에 시드 할당   4. 분포 정의 (범위와 형식 설정)난수가 발생할 범위와 형식은 분포(distribution)를 통해 정의한다.  정수형 균등 분포, 범위 내의 모든 값이 동일한 확률로 선택된다.std::uniform_int_distribu.. 2024. 12. 3.
Excel에서 그림, 도형, 텍스트 박스 등의 개체 선택 쉽게 하기 홈 > 편집 > 찾기 및 선택 > 개체 선택을 누르면 이제 부터 드래그 앤 드롭 시 그림, 도형, 텍스트 박스와 같은 개체만 선택이 된다.   다시 이전 처럼 셀 선택이 되게 하려면 개체 선택을 다시 한번 눌러 비활성화 해주면 된다. 2024. 12. 1.
Line Coding (선로 부호화) 1. Line Coding (선로 부호화)이란?Line Coding은 디지털 데이터를 전기적 디지털 신호로 변환하는 과정이다. 이 과정에서 데이터를 전송 매체에 맞춰 변환함으로써 신호 왜곡을 줄이고, 오류 검출과 복구를 용이하게 하는 역할을 한다.    2. Line Code의 분류2.1 Unipolar (단극형) ( A+, 0 )Unipolar 방식은 신호를 하나의 전압 레벨로 표현한다. 즉, 데이터 비트가 1일 때는 일정한 전압(+A)을 사용하고, 비트가 0일 때는 0 전압을 사용한다. 이 방식은 단순하지만, DC 성분이 포함되기 쉽고, 클럭 동기화가 어렵기 때문에 장거리 전송에 적합하지 않다.- 대표 방식 : Unipolar RZ, Unipolar NRZ    2.2 Polar (극형) ( +A, .. 2024. 10. 30.
C++ ] CLI Loading indicator와 Progress bar 사용자에게 작업이 진행중임을 알리는 간단한 로딩 인디케이터와 프로그레스 바 만들어보기   로딩 인디케이터 #include #include using namespace std;bool running = true;void loading_indicator() { const char* states[] = {" ", ". ", ".. ", "... ", ".... ", "....."}; int index = 0; while (running) { cout      프로그레스 바 #include #include #include using namespace std;class ProgressBar {private: int barWidth; int progress;.. 2024. 10. 28.
SerDes SerDes란?   SerDes(서데스, Serializer/Deserializer)는 병렬 데이터를 직렬로 변환(Serialize)하고, 다시 직렬 데이터를 병렬로 변환(Deserialize)하는 기능을 수행하는 회로 블록을 말한다. SerDes는 칩간 고속 통신에 사용되어 여러개의 병렬 라인을 고속의 하나의 직렬 라인으로 통합하여 더욱 간단하고 안정적으로 고속 데이터 전송을 가능하게 한다.     SerDes의 기능 Serialize : 송신 측에서는 전송할 병렬 데이터를 하나의 직렬 신호로 변환한다.Deserialize : 수신 측에서는 들어온 직렬 데이터를 다시 병렬 데이터로 변환한다.Impedance matching : 고속 데이터 전송 시 발생할 수 있는 신호 반사를 줄이기 위해 임피던스 매칭.. 2024. 10. 20.
DISM을 사용하여 Windows 기능 켜기/끄기 하는 법 보통 Windows 기능을 켜고 끄는 작업은 제어판 > 프로그램 및 기능에서 할 수 있는데 DISM(Deployment Image Servicing and Management)을 사용하면 명령줄로 켜고 끌 수 있다.     예를 들어 TFTP 기능을 켜고 끄는 건 관리자 권한으로 명령 프롬프트를 실행하고 다음 명령을 입력하면 가능하다.  - Windows 기능 켜기Dism /online /Enable-Feature /FeatureName:TFTP /All  - Windows 기능 끄기Dism /online /Disable-Feature /FeatureName:TFTP  - Windows 기능 사용 여부 확인하기Dism /online /Get-FeatureInfo /FeatureName:TFTP 2024. 10. 16.
Git ] push 또는 pull 할 때 Username과 Password 묻는 경우 1. 인증 방법 Git에서 HTTPS 프로토콜을 사용해 Private Repository에 접근하려고 하는 경우 Username과 Password를 요구한다. 그런데 2021년 부터 패스워드 인증방식은 지원하지 않기 때문에 깃허브의 경우 토큰을 발급받아서 입력해주면 된다. GitHub > 우측 상단 프로필 > Settings > Developer Settings > Tokens (classic) > 토큰의 유효기간을 설정하고 access 허용 범위를 체크로 선택한 후 토큰을 생성한다.   2. 인증 정보 저장 방법이렇게 해도 매번 push/pull 할 때마다 Username과 Password를 묻기 때문에 여간 귀찮은게 아니다. 이를 해결하기위해 git에서는 인증정보를 저장해두는 credential.he.. 2024. 10. 10.