Windows10 WSL2에서 Linux GUI 실행하기

Knowledge 2022. 5. 25. 09:53

최근 CVE 분석할 때 실습하거나 Wargame 풀 때 여러 OS 환경에서 해보는 중이라 (ubuntu 16.04/18.04/kali 등등..) virtual OS를 사용하는 경우가 많아진 겸 VMware, Virtualbox, Docker, WSL2를 한번씩 다 써보고 있는 중이다. 맛만보자 컨셉 WSL2를 활성화 한 후 Ubuntu 18.04를 설치하고 wsl2 환경에서 gui를 실행하기 위한 방법을 찾아보았으나 MS에서 공식적으로 support 해주는 linux gui app은 Windows11 build 22000 이상을 전제로 하고 있다. Windows 11 https://docs.microsoft.com/ko-kr/windows/wsl/tutorials/gui-apps WSL을 사용하여 Lin..

Article Thumbnail
Docker 명령어 정리

Knowledge 2022. 5. 3. 11:01

다운 받고자 하는 OS의 docker image 검색 docker search [OS VERSION] image download docker pull [image 이름 (:버전 지정하는 경우)] image list 확인하기 docker images 내려받은 image로 container 생성하기 docker create [옵션] [container ID] Container 시작하기 docker start [container ID 또는 container name] Container에 접속하기 docker attach [container ID 또는 container name] create + start + attach 를 한 번에 수행하는 명령어 docker run [옵션] [REPOSITORY 또는 Ima..

Article Thumbnail
Front-End ( 프론트 엔드 ) vs Back-End ( 백엔드 )

Knowledge 2019. 9. 25. 05:33

IT 전공자라면 진로를 결정할 때에 가장 먼저 고려하는 사항이 바로 프론트엔드 / 백엔드로서의 방향성이 아닐까 싶다. 불과 10여년 전만 해도 이러한 프론트엔드와 백엔드의 구분은 명확하지 않았고, 그럴 필요도 없었으나 이제는 웹의 발달과 더불어 앱 개발도 활발하게 이루어짐에 따라 세분화된 업무를 소수의 인원이 전부 담당하기는 사실상 불가능한 문제가 되었다. 결국, 프론트엔드와 백엔드 개념이 확립되면서 두 파트의 차이점이 확립되면서 많은 개발자 및 엔지니어들이 이를 참고하여 본인의 기술에 적합한 파트에서 업무를 수행하는 형태로 이어지고 있다. 그렇다면, 정확히 Front-End와 Back-End의 주 업무 분야와 기술력 등을 알아보고 두 파트의 차이점을 구분해보도록 하자. Front-End (프론트 엔드)..

Article Thumbnail
네이밍 컨벤션 ( Naming Convention )

Knowledge 2019. 9. 23. 05:28

C언어를 처음 막 배우기 시작할 때 학과 교수님께서 좋은 프로그래머가 되기 위한 조건 3가지라며 알려주셨던 것 중 하나가 바로 Naming Rules, 식별자 작성 규칙에 의거한 좋은 이름 짓기 였다. 그닥 어렵지 않게 느껴지지만 실상 코드를 짤 때 제일 어려운 게 naming 아닌가 싶다. ( 창의력 부족..) 본 포스팅에서 naming convention의 정확한 의미와 몇몇 대표적인 케이스에 대해 알아보자. 네이밍 컨벤션 ( Naming Convention ) Coding Convention 중 하나 소스 코드와 문서에 있는 변수 이름, 타입, 함수 등의 식별자에 사용되는 문자열을 선택하기 위한 여러가지 규칙 프로젝트, 프로그래밍 언어, 개발 도구 등에 따라 달라진다 코딩 컨벤션 ( Coding C..

Article Thumbnail
도커 ( Docker )

Knowledge 2019. 9. 11. 22:11

Docker 컨테이너 기반의 오픈소스 가상화 플랫폼 Linux 응용 프로그램들을 소프트웨어 컨테이너 안에 자동 배치시키는 오픈소스 프로젝트 2013년 3월 Pycon Conference에서 dotCloud 창업자 Solomon Hykes가 라는 세션을 발표하면서 알려졌다. Linux에서 운영 체제 수준 가상화의 추상화 및 자동화 계층 추가 제공 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리 단순화 기존의 가상화 및 반가상화 보다 경량화 된 방식 Docker의 주요 개념 Container(≒ Process) 가상화 기술 중 하나로, 리눅스 커널 레벨에서 제공되는 격리된 공간 안에서 프로세스가 동작하는 기술 기존 가상화 방식(예: Virtual Box..

Article Thumbnail
파일 시스템

Knowledge 2019. 9. 6. 23:02

디지털 포렌식에 관심이 있는 사람이라면, 파일 시스템에 관한 이야기를 들어본 적이 있을 것이다. 주로 파일 시스템을 토대로 포렌식 분석 등에 쓰이는 것으로 알고 있지만, 사실 컴퓨터를 공부하는 사람이라면 기본적으로 메모리와 함께 공부해야 할 부분이라고 볼 수 있다. 본 글에서는 파일 시스템이 정확히 무엇을 의미하는 것인지 그 정의와 목적을 알아본 후 운영체제 별 파일 시스템에는 어떠한 것이 있는지 알아보도록 한다. 파일 시스템 ( File System ) 컴퓨터에서 저장되는 모든 데이터를 하나의 객체(파일)로 취급하면서 사용자가 쉽게 사용할 수 있도록 관리하는 방식 사용자에게 하드디스크 동작을 추상화 시켜주는 도구 즉, 파일의 이름을 정하고 저장 및 검색을 위해 논리적으로 어디에 위치 시켜야 하는지에 대..

Article Thumbnail
Garbage Collection ( 쓰레기 수집 )

Knowledge 2019. 9. 6. 00:46

IT 전공자라면 모두 메모리 관리의 중요성에 대해 한 번쯤은 들어본 적이 있을 것이다. 각종 프로그래밍, 시스템 운용, 여러 프로세스 작업 관리 등 여러 부분에서 메모리를 효율적으로 쓰는 것은 IT 전문가가 되기 위해 기본적으로 갖추어야 될 소양이라고 생각한다. 본 글에서는 이러한 메모리 관리 기법 중 하나인 Garbage Collection에 대해 알아보고자 한다. Garbage Collection 동적 할당된 메모리 영역 가운데 더 이상 사용할 수 없게 된 영역을 탐지하여 자동으로 해제하는 기법 사용할 수 없게 된 영역이라 하면, 어떤 변수도 가리키지 않게 된 영역을 의미 주로 Heap 메모리에서 처리 및 사용 여부 식별하고 사용하지 않는 객체는 제거한다. 1959년 리스프의 문제를 해결하기 위해 존..

Article Thumbnail
JSON (JavaScript Object Notation)

Knowledge 2019. 9. 2. 01:11

이전 포스팅에서 언급한 바와 같이 XML은 헤더와 태그 등의 여러 요소로 가독성이 비교적 떨어지고, XML 특성상 메모리 용량을 많이 소비하는 단점이 있어왔다. 이에 따라 각광을 받게 된 것이 간결하고 통일된 양식을 쓰는 JSON이다. 이제부터 JSON에 대해 알아보도록 하자. JSON ( JavaScript Object Notation ) : 경량의 Data 교환 형식 사람이 읽을 수 있는 텍스트 기반의 데이터 교환 표준 XML의 대안으로, 보다 쉽게 데이터를 교환 및 저장하기 위해 고안된 포맷 컴퓨터 프로그램의 변수 값을 표현하는 데 적합함 JSON의 가장 중요한 특징 JavaScript를 확장하여 만들었기에 JavaScript 객체 표기법을 따른다는 것과 언어 독립형 데이터 포맷이기 때문에 프로그래..

Article Thumbnail
XML (eXtensible Markup Language)

Knowledge 2019. 9. 1. 22:37

웹 페이지를 구축하는 데 쓰이는 웹 프로그래밍 언어에는 다양한 언어들이 있다. 누구나 한번쯤 들어봤을 법한 HTML 부터 PHP, JSP, XML 등 구조와 특징이 차별화 된 언어들이 즐비해 있다. 물론 위의 언어들을 모조리 다 마스터해야 하는 것은 아니지만 기본적인 개념은 알아둘 필요가 있다. 이번 포스팅에서는 XML에 대해 알아보도록 한다. XML ( eXtensible Markup Language ) : 확장 가능한 Markup 언어 ※ 여기서 Markup 언어란, 간단히 표현하자면 태그 등을 이용하여 데이터의 구조를 기술하는 언어 중 한 가지를 말한다. W3C에서 권장하는 여러 특수 목적의 마크업 언어를 만드는 용도의 언어 기존 HTML과 달리 웹상에서 구조화된 문서를 전송 가능하도록 설계되어 있..

Article Thumbnail
비밀키 / 공개키

Knowledge 2019. 8. 31. 23:31

암호 시스템의 설계에 있어서 가장 중요한 것은 알고리즘(Algorithm)과 키(Key)라고 할 수 있다. 알고리즘(Algorithm) 암호화/복호화에 적용된 수학적 원리 및 수행절차 암호화 알고리즘과 복호화 알고리즘으로 구분 알고리즘의 이해와 구현은 쉬워야 하나 공격에는 대신 강해야 한다. 키(Key) 암호화 혹은 복호화 능력을 얻기 위한 지식 동일한 알고리즘을 여러 사용자들이 고유하게 활용할 수 있게 해준다. 이러한 키 알고리즘은 크게 비밀키와 공개키 방식으로 구분할 수 있다. 비밀키(Private Key) 암호화 / 복호화를 위해 비밀 메시지를 교환하는 당사자만이 알고 있는 키 등장시기 : BC 500년경 키 대칭성 : 암호화 키 = 복호화키 ( 대칭키 ) 키 개수 : N*(N-1)/2 장점 계산속..

Article Thumbnail
하드웨어 / 미들웨어 / 소프트웨어

Knowledge 2019. 8. 30. 01:41

하드웨어 ( HardWare ) 본래 '쇠붙이'라는 뜻 컴퓨터를 구성하는 기계적, 전기적, 전자적(電子的) 기능을 대상으로 하는 장치 그 자체. ex) 중앙처리장치 / 기억장치(memory unit) / 입출력장치 하드웨어 분류 전자부품 컴퓨터에서 가장 중요한 중앙처리장치의 연산/제어회로 또는 기억장치/입출력장치의 제어, 판독, 쓰기회로 등에 사용 점차 회로의 집적화(IC)가 진척되어 크게 변혁하는 중 기계부품 대용량 기억장치/입출력장치에서 특히 중요한 부분 고(高)정밀도이자 강고(强固)한 것이 요구됨 미들웨어 ( MiddleWare ) 서로 다른 기종의 하드웨어나 프로토콜, 통신 환경 등을 연결하여 응용 프로그램과 그 프로그램이 운영되는 환경 간에 원만한 통신이 이루어질 수 있게 하는 소프트웨어 운영 ..

Article Thumbnail
소프트웨어 개발 방법론

Knowledge 2019. 8. 15. 20:27

소프트웨어 개발 방법론 소프트웨어 개발에 필요한 반복적인 과정(절차, 방법, 산출물, 기법, 도구)들을 체계적으로 정리한 것 수 많은 소프트웨어 실제 개발 과정을 정리하여 체계적인 분석을 통해 각각의 상황에 맞는 개발 방법을 정의한 이론 소프트웨어를 생산하는 데 필요한 프로그래밍 개발 과정들을 정리하고 표준화하여 프로그래머들이 프로그래밍 개발과정에서 각 개인이 개발과정에서의 일관성을 유지하고 프로그래머들 간의 효과적인 협업이 이루어질 수 있도록 돕기 위한 방법론 소프트웨어 방법론 구성 요소 1. 구조적 방법론 1970년대 절차 지향 소프트웨어 개발 방법론 제한된 구조에서 코드 생성 및 순차적 실행 프로세스 단위로 문제 해결 : 알고리즘 단위 구조( 순차, 선택, 반복 )로 코드 표현 과정 설명 1) 요구..

Article Thumbnail
API , Restful

Knowledge 2019. 8. 14. 23:15

API 1) API 란? 애플리케이션 프로그래밍 인터페이스 ( Application Programming Interface )의 약자 애플리케이션 소프트웨어를 구축하고 통합하기 위한 정의 및 하위 함수, 프로토콜, 도구들의 집합 명확하게 정의되어 있는 다양한 컴포넌트 간 통신 방법 당사자들 간 계약을 나타내는 Documentation을 갖춘 계약으로 비유되기도 함 2) API 이점 구현 방식을 모르는 제품 또는 서비스가 서로 커뮤니케이션 가능 애플리케이션 개발 간소화로 시간과 비용 절약 새로운 툴과 제품 설계 또는 기존 툴/제품 관리 실행 시 유연성 제공 설계/ 관리/ 사용 방법을 간소화 하며 혁신 기회 제공 3) API 작동 방식 한쪽 당사자가 특정한 방식으로 구성된 원격 요청을 보내면 다른 쪽 당사자..

Article Thumbnail
프로그래밍 언어 종류 10가지

Knowledge 2019. 8. 10. 00:51

1. C언어 1972년, 데니스 리치에 의해 개발된 프로그래밍 언어 실질적으로 모든 컴퓨터 시스템에서 사용할 수 있도록 설계됨 정규화된 표준 C 라이브러리가 존재하며, 이식성이 뛰어남 아직도 필자를 포함한 많은 개발자들에게 사랑받는 언어 시스템 프로그램 개발에 매우 적합하며, 응용 프로그램 개발에도 많이 쓰임 대표적인 절차지향 언어 2. JAVA 1995년 발표된 썬 마이크로시스템즈의 제임스 고슬링과 다른 연구원들이 개발한 언어 웹 애플리케이션, 모바일 기기용 소프트웨어 개발에 가장 많이 사용하는 언어 중 하나 자바 8부터 람다식(Lambda Expressions)을 지원하여 함수적 프로그래밍을 지원 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하여 멀티 스레드를 쉽게 구현 오픈 소스(Open ..