본 글에서는 Visual studio code 내에서 입력된 문자열을 아스키(ASCII) 코드 값으로 변환해 주는 확장 기능에 대해 소개한다. 코드를 작성하다 보면 특정 문자 또는 문자열에 대한 아스키(ASCII) 코드 값을 사용해야 하는 경우가 있는데, 본 확장 기능을 이용하면 문자(열)과 아스키 코드 값 사이의 변환을 편하게 수행할 수 있다. Visual studio code 용 Hex ascii converter 확장 기능 설치 다음 절차에 따라 Hex ascii converter 확장 기능을 설치하여 사용할 수 있다. 1. 편집기 좌측의 마켓 플레이스 아이콘을 클릭하고, 검색 창에 "ascii hex"를 입력하면 "Hex ascii converter"라는 확장 기능이 검색된다. Install 버튼..
본 글에서는 Visual studio code 내에서 아스키(ASCII) 코드 값을 확인할 수 있는 확장 기능에 대해 소개한다. 코드를 작성하다 보면 어떤 문자의 아스키(ASCII) 코드 값을 알아야 하는 경우가 있다. 구글 검색을 통해 아스키 코드 테이블을 확인할 수 있긴 하지만, Visual studio code로 코드를 작성하는 중에는 VScode 확장 기능을 통해 더욱 쉽고 빠르게 확인할 수 있다. Visual studio code 용 ASCII Table 확장 기능 설치 다음 절차에 따라 ASCII Table 확장 기능을 설치하여 적용할 수 있다. 1. 편집기 좌측의 마켓 플레이스 아이콘을 클릭하고, 검색 창에 "ascii"를 입력하면 "ASCII Table"이라는 확장 기능이 검색된다. Ins..
도커(Docker) : 공유 디렉토리(폴더) 연결하기 본 글에서는 도커 컨테이너를 구동하는 로컬 호스트 시스템과 도커 컨테이너 간에 공유 디렉토리(폴더)를 연결(마운트)하는 방법을 설명한다. 기본적으로, 도커 컨테이너가 종료되면 그 동안 발생한 컨테이너 내부의 변경사항이 모두 손실된다(도커 이미지로 커밋하지 않는 이상). 따라서, 변경사항이 저장될 수 있도록 로컬 호스트 시스템의 디렉터리를 도커 컨테이너 내부에 마운트한 공유 디렉토리 상에서 작업을 수행하는 경우가 많다. 다음과 같이 "-v" 또는 "--volume" 옵션을 추가하여 도커 컨테이너를 실행하면 공유 디렉터리를 연결할 수 있다. host system directory : 공유하고자 하는 호스트 시스템 디렉토리 절대 경로 container di..
도커(Docker) : 쉘 사용하기 본 글에서는 도커 컨테이너 실행 시 쉘을 사용할 수 있도록 실행하는 방법을 소개한다. 경우에 따라 도커 컨테이너에서 쉘을 이용해야 할 경우가 있다. 본인의 경우, 도커를 주로 임베디드 플랫폼 개발을 위한 리눅스 개발환경으로 사용하고 있기 때문에 쉘을 항상 사용하고 있다. 다음과 같은 명령으로 도커 컨테이너를 실행하면, 컨테이너 실행 후 바로 종료되어 버린다. docker run [IMAGE NAME] 하지만 "-it" 또는 "-i -t" 옵션을 추가하여 도커 컨테이너를 실행하면 쉘을 이용한 입출력이 가능하다. docker run -it [IMAGE NAME] 보다 자세한 내용은 아래 공식 문서 사이트에서 확인 가능하다. | Docker Documentation Dock..
도커(Docker) : 종료된 컨테이너 제거하기 본 글에서는 종료된 도커 컨테이너를 제거하는 방법에 대해 소개한다. 종료된 단일 도커 컨테이너 제거하기 종료된 도커 컨테이너를 제거하는 방법은 보통 다음과 같다. "docker ps -a" 명령을 입력하여 종료된 도커 컨테이너의 "CONTAINER ID"를 확인한다. "docker rm " 명령으로 컨테이너를 제거한다. 다음은 종료된 도커 컨테이너를 제거하는 화면이다. 종료된 다수의 도커 컨테이너를 한번에 제거하기 종료된 도커 컨테이너의 개수가 많을 경우 위와 같은 방법으로 일일이 제거하기에는 너무 번거롭다. 이럴 경우 "docker rm $(docker ps -a -q)" 명령을 입력하여 한번에 제거할 수 있다. docker rm $(docker ps -..
우분투(Ubuntu) 리눅스에 ifconfig 설치하기 본 글에서는 우분투 리눅스에 ifconfig 유틸리티를 설치하는 방법을 소개한다. ifconfig은 네트워크에 관련된 주요 유틸리티이기 때문에 일반적인 우분투 리눅스 머신에는 기본적으로 설치가 되어 있다. 하지만 도커의 초기 이미지처럼 최소화된 패키지의 우분투를 실행하면 설치가 되어 있지 않은 경우가 있다. 실제로 도커를 이용하여 공식 우분투 리눅스 컨테이너를 실행하면, ubuntu:16.04 와 ubuntu:18.04에는 ifconfig이 설치되어 있지 않다. (ubuntu:14.04에는 설치되어 있다) "apt install net-tools" 또는 "apt-get install net-tools" 명령을 통해 ifconfig 유틸리티를 설치할 ..
리눅스 시스템에서 IPv6 주소 설정/확인하기 본 글에서는 리눅스 시스템 내 네트워크 인터페이스의 IPv6 주소를 추가, 제거하거나 확인하는 방법을 소개한다. IPv6 주소를 관리하기 위해서는 관련 유틸리티가 필요한데 ifconfig이나 ip라는 명령 유틸리티를 사용할 수 있다. ifconfig을 이용한 IPv6 주소 관리 IPv6 주소 추가 시에는 ifconfig 명령의 "inet6 add" 옵션을 사용한다. ifconfig inet6 add / IPv6 주소 제거 시에는 ifconfig 명령의 "inet6 del" 옵션을 사용한다. ifconfig inet6 del / 다음 화면은 ifconfig 명령을 이용하여 eth0 네트워크 인터페이스에 "2001:0db8:0:f101::1/64" 값을 갖는 I..
도커(Docker) : MAC 주소 설정(변경)하기 본 글에서는 도커 컨테이너 내부에서 사용되는 네트워크 인터페이스의 MAC(Medium Access Control) 주소를 설정하는 방법에 대해 설명한다. 도커 컨테이너를 실행하면, 기본적으로 "eth0"라는 네트워크 인터페이스가 생성되며 해당 인터페이스를 통해 도커 외부와 통신을 수행한다. 해당 네트워크 인터페이스에는 MAC 주소가 할당되는데, 도커에서 임의로 MAC 주소를 부여한다. 다음 화면은 "02:42:ac:11:00:03"이라는 MAC 주소가 할당된 모습이다. MAC 주소 설정 방법 상황에 따라 컨테이너 내부 네트워크 인터페이스의 MAC 주소를 원하는 대로 변경할 수 있으며, 그 방법은 다음과 같다. ifconfig을 이용하여 MAC 주소를 설..
도커(Docker) : 포트 포워딩 설정(포트 맵핑)하기 본 글에서는 도커 컨테이너 내부에서 동작하는 서버로 컨테이너 외부에서 접속할 수 있도록 포트 포워딩(Port forwarding) 설정 또는 포트 맵핑(Port mapping)하는 방법을 소개한다. NAT가 적용되는 도커 컨테이너 도커 컨테이너를 실행하면 기본적으로 NAT(Network Address Translation) 환경이 적용된다. 도커 컨테이너가 실행되는 호스트 시스템에 NAT 기능이 구동되며, 도커 컨테이너는 네트워킹을 위해 NAT 내부 망 IP 주소를 할당받게 된다. 다음 화면은 도커 컨테이너에서 네트워크 인터페이스의 정보를 확인한 화면이다. root@5f26874d8117:/workspace# ifconfig eth0 Link en..
도커(Docker) : IPv6 기능 활성화 하기 본 글에서는 도커(Docker) 컨테이너에서 IPv6 기능을 활성화 하는 방법을 소개한다. IPv6 를 지원하지 않는 도커 컨테이너 도커 컨테이너를 실행하면, 기본적으로는 IPv6 기능이 활성화 되지 않는다. 다음 화면은 도커 컨테이너를 실행한 후 ifconfig 명령을 통해 네트워크 인터페이스의 상태를 확인해 본 화면이다. IPv6 기능이 지원될 경우, 각 네트워크 인터페이스의 MAC 주소를 기반으로 한 링크-로컬 IPv6 주소가 자동으로 할당되어야 하는데, 그렇지 않은 것을 확인할 수 있다. root@ff6676c91fa4:/workspace# ifconfig eth0 Link encap:Ethernet HWaddr 02:42:ac:11:00:02 i..
도커(Docker) : Privileged 모드로 실행하기 본 글에서는 도커(Docker) 컨테이너를 Privileged 모드로 실행하는 방법을 소개한다. Unprivileged 모드 도커 컨테이너 도커 컨테이너는 기본적으로 Unprivileged 모드로 실행되며, 이 모드에서는 시스템 주요 자원에 접근할 수 있는 권한이 부족하기 때문에, 특정 장치 등의 시스템 자원에 접근할 수 없다. 도커 공식 문서에서는 다음과 같이 표현하고 있다. By default, Docker containers are “unprivileged” and cannot, for example, run a Docker daemon inside a Docker container. This is because by default a co..
리눅스 네트워크 프로그래밍 - UDP6(UDP over IPv6) 송수신 본 글에서는 리눅스 시스템 상에서 IPv6 프로토콜을 통해 UDP 데이터그램(이하 UDP6)을 송수신하는 프로그램의 작성 방법을 소개한다. UDP6(UDP over IPv6) 데이터그램 송신 프로그램 C 언어로 작성된 프로그램 상에서 UDP6 데이터그램을 송신하는 절차는 다음과 같다. 소켓을 연다 - socket() 시스템콜 호출. 소켓을 송신용 네트워크 인터페이스에 연결(bind)한다 - setsockopt() 시스템콜 호출. 목적지 정보(IPv6 주소, UDP 포트번호)를 설정한다. UDP 패킷을 전송한다 - sendto() 시스템콜 호출. 다음은 UDP6 데이터그램을 송신하는 예제 프로그램의 소스 코드이다. #include #..