프로그래밍 12

docker + nginx로 단순한 https 연결 설정 (답지 有)

https://pentacent.medium.com/nginx-and-lets-encrypt-with-docker-in-less-than-5-minutes-b4b8a60d3a71 Nginx and Let’s Encrypt with Docker in Less Than 5 MinutesGetting Nginx to run with Let’s Encrypt in a docker-compose environment is more tricky than you’d think …pentacent.medium.com여기에서 시키는 대로만 하면 빠르게 https 설정 할 수 있습니다. 글 제목에는 5분 걸린다고 써있는데 저는 영어를 잘 못해서 50분 걸렸네요. 아래에 나름대로 내용 요약 + 쓸데없는 첨언을 해봤습니다. ..

프로그래밍 2024.09.27

Vivado 오류 [synth 8-3352, multiple driven net] 해결

Verilog 수업 실습에서 시뮬레이션에 이상이 없음을 확인하고 합성(synthesis) 및 구현(implementation)을 실시했는데, 합성에서부터 아래와 같은 경고 메세지가 발생하더니 구현에 실패해버렸다. Xillinx 문의 페이지나 다른 커뮤니티에서는 그 원인을 하나의 포트가 여러 번 연결되었기 때문이라고 했지만 나에게 적용되는 사항은 아니었다. 하는 수 없이 경고가 발생한 위치의 코드를 이리저리 고쳐보던 중 우연히 해결했다. 연결 관계를 나타내는 wire 변수를 모듈 선언부에 작성했기 때문. 아래 이미지 대로 첫 번째 코드에서 두 번째 코드로 바꿔주니 잘 실행되었다. 둘의 차이가 뭔지는 잘 모르겠지만;; 혹시 나같은 문제를 겪는 분이 있다면 wire 변수의 선언 위치를 확인해보자. 대충 찾아보..

X86-64 어셈블리 기본만 알아두자

x86-64가 뭐임?x86 : 인텔 사에서 생산하는 'CPU 시리즈' - x86, IA...로 시작하는 아키텍쳐들이 여기 속함 x86-64 : 이 시리즈에 속하는 CPU 아키텍쳐, 64bit를 기본 연산 단위로 사용 - 이 아키텍쳐를 기반으로 코어 i7, Pentium같은 실제 제품이 생산된다. - 또다른 의미 : x86-64 아키텍쳐에서 사용하는 어셈블리 언어 Byte Ordering(Endian)LSB(데이터의 가장 오른쪽 바이트)의 위치를 기준으로 기억하면 직관적 Big endian : LSB가 큰(biggest) 주소에 Little endian : LSB가 작은(least) 주소에 x86-64에서는 little endian 방식을 사용한다. little endian 방식은 '거꾸로 적는 것'이라고..

리눅스 - 리눅스 개발 환경 (gcc, make, gdb, vim)

쉘 스크립트가 아닌, 리눅스에서 제공하는 프로그램 개발 환경에 대해 알아보자. 제목에 있는 소프트웨어들에 대하여 기본 원리, 기능 그리고 자주 쓸 법한 명령어에 대해서만 기술한다. 직접 사용해보면서 배우는 게 더 많을테니... gcc 기능 C언어 컴파일러이다. 컴파일이란 쉽게 말해 사람만 이해할 수 있는 언어로 작성된 .c 파일을 기계가 이해할 수 있는 "목적 파일" .o(objective) 파일로 변환해주는 작업이다. gcc는 컴파일러이지만 목적 파일을 실제 실행할 수 있는 "실행 파일"로 만드는 기능(링킹)까지도 겸비한 멋진 프로그램이다. gcc는 일반적으로 리눅스를 설치할 때 포함되지만, 나처럼 자신의 리눅스에서 gcc를 사용할 수 없을 경우 sudo apt install gcc 명령어를 이용해 설..

리눅스 - Bash 쉘과 쉘 스크립트

Bash? 쉘? 스크립트? 쉘은 운영체제에 접근할 수 있으면서 사용자의 명령어를 해석해주는 프로그램이며, Bash 쉘은 쉘의 한 종류이다. 그리고 쉘 스크립트란 쉘 내에서 명령어 반복 처리 등의 목적을 위해 작성할 수 있는 프로그램이다. 간단하게 말하면 (안 간단함) 쉘 스크립트로 C언어처럼 for나 if를 사용해 명령어를 수행할 수 있다. Bash 쉘의 장점 스크립트 설명 전 잠깐 다른 얘기를 하자면, bash 쉘은 표준 출력이나 산술 연산 등에 유리하다고 알려져있다. 또한 사용자의 명령어 입력을 홈 디렉토리의 .bash_history라는 파일에 보관한다는 장점이 있다. 파일을 직접 확인할 필요 없이, history 명령어를 사용하면 지금까지 사용한 명령어를 확인할 수 있다. 환경변수 HISTSIZE로..

리눅스 - 디스크 정보, TAR, GZIP, AWK

디스크 사용 명령어 df : 전체 파일 시스템의 정보를 보여준다. 보여주는 속성은 Filesystem(시스템 명), 1K-blocks(용량), Used(사용량), Available(남은 용량), Use%(사용률), Mounted on(마운트 된 디렉토리)이다. 여기서 마운트란, 디렉토리와 실제 파일 시스템(디스크)을 연결시키는 걸 의미한다. udev라는 이름의 파일 시스템은 입출력 장치 처리를 담당하는 /dev 디렉토리에 연결되어 있고, 946,764KB의 저장공간을 가지며, 그 중 하나도 사용하지 않았다. df가 디스크의 정보를 알려주는 반면, 파일이나 디렉토리의 디스크 사용량을 알려주는 명령어도 있다. du 명령어이다. du [-s] 파일명들 : 파일이나 디렉토리가 사용하는 디스크 블록 수(한 블록에..

리눅스 - 파일 조작 명령어(find, grep ...)

find 디렉토리명 [-옵션] : 지정한 디렉토리 내에서 조건에 맞는 파일을 찾는다. 적용할 수 있는 다양한 옵션이 있으니 아래를 참고하자. >> -name 파일명 : 이름으로 검색, wildcard 사용 가능 >> -type x : 파일 종류로 검색, d : 디렉토리, f : 일반 파일 등 >> -perm nnn : 접근 권한으로 검색, 8진수 표현 사용 >> -atime n, -mtime n : 마지막 접근 시간, 마지막 수정 시간으로 검색. 시간이 현재 날짜 기준 n일 전인 파일을 검색하며, n 앞에 + -를 붙여 경과 일자가 n일 이상, 이하 즉 n일보다 더 이전, n일 이후의 날짜를 기준으로 검색할 수도 있다. >> -user 사용자명 : 소유자 정보로 검색 >> -print : 찾은 파일의 절..

리눅스 - 프로세스 명령어와 시그널

프로세스와 프로그램 우리 눈에 보이는 것과 달리 프로그램은 디스크에 저장된 '컴파일 된 실행 코드'에 지나지 않는다. 프로그램을 구동하려면 이 코드를 메모리로 가져와야 한다. 메모리로 가져와 구동 중인 프로그램을 프로세스라고 부른다. 하나의 프로그램이 여러 프로세스를 가질 수도 있다. 모든 프로세스는 고유 번호 PID를 가진다. 어떤 프로세스를 실행하는 데에는 부모 프로세스가 필요하며 부모 프로세스의 고유 번호는 PPID라고 한다. 현재 실행중인 사용자 프로세스(시스템 전용이 아닌 프로세스)는 명령어 ps로 확인할 수 있다. 출력되는 정보는 다음과 같다. PID, TTY(터미널 종류), TIME(실행 시간), CMD (프로세스명) ps 명령어에 대한 옵션은 다음과 같다. (시스템 V 기준) >> -e :..

리눅스 - 쉘 기본 사용법 (입출력 재지정, 대치 등)

쉘이란 쉘은 쉘 프롬프트라고도 부르며, 리눅스에서 사용되는 명령어 처리기이다. 터미널이라고 생각하면 쉽다. 주로 명령어 처리, 시작 파일 실행, 스크립트 (프로그래밍) 기능을 수행한다. bourne 선생님께서 만든 '본 쉘'이 최초 버전이며, 현재는 이를 확장한 Bourne Again SHell, bash 쉘이 널리 사용된다. 로그인 쉘 : 시스템에 로그인할 때 실행되는 쉘, 꼭 bash가 아닐 수도 있으며 보통 계정 생성할 때 시스템 관리자가 결정한다. /etc/passwd 파일에서 확인할 수 있다. 시작 파일 쉘이 시작될 때 실행되는 파일이다. 시스템 시작 파일과 사용자 시작 파일 두 가지가 있으며, 각각 사용자 전체의 환경과 사용자 개개인의 환경을 설정하는 데 쓰인다. 아래 설명은 Bash 쉘 기준..

리눅스 - 디렉토리 구조

대충 이런 이미지를 찾을 수 있는데... 어지럽다. 몇 개만 알아보자. root : 다른 모든 디렉토리(폴더)가 저장된 최상위 디렉토리 bin : binary, 기본 명령어 ex)cp 에 대한 실행 파일(컴파일 완료된 바이너리 파일), 즉 명령어 실행하는 곳 etc : 기타 등등을 뜻하는 etc. 시스템 관리, 환경 설정을 위한 파일과 명령어 boot : bootloader, 컴퓨터 키면 커널 가져오는 곳 dev : device, 주변장치 담당하는 곳 home : 사용자 홈 디렉토리, home 하위 디렉토리에 시스템 사용자들의 개인 파일이 저장되는 디렉토리 ex) 황태건 가 생성된다. lib : 라이브러리(프로그램용) tmp : temporary, 임시 파일 usr : user, 명령어, 시스템 프로그램..