분류 전체보기 56

Programming Exercise: Lab #1

경희대학교 박제만 교수님의 자료구조 수업을 기반으로 정리한 글입니다.Encoding errors▶ 운영체제별로 줄 바꿈 문자를 채택한 게 다르다.CR (Carriage Return, \r): 커서가 해당 라인의 젤 앞쪽으로 이동 e.g., Mac OS (클래식 버전)LF (Line Feed, \n): 커서는 그대로 있으면서 줄만 바꿈 e.g., Unix, Linux, Mac OS (현대 버전)CRLF (CR + LF, ENTER): 줄도 바꾸면서 커서도 제일 앞쪽으로 이동 e.g, Windows간혹 협업을 하다 보면 어떤 사람이 Mac OS에서 작업한 코드를 Windows에서 받아 실행 시키려고 하면 에러가 나는 경우가 있다.따라서, Mac에서 작성된 파일을 Windows에서 사용할 경우, “LF” or..

CS/자료구조 2025.03.25

Chapter 2: Unsorted/Sorted Lists

경희대학교 박제만 교수님의 자료구조 수업을 기반으로 정리한 글입니다.List DefinitionsLinear relationship:Each element except the first has a unique predecessor(전임자), and each element except the last has a unique successor(후임자).Length:The number of items in a list; the length can vary over time. (e.g., append, remove)Unsorted list vs Sorted list ※ 배열(Array) vs 리스트(List)C 같은 언어에서 사용하는 배열(Array)은 크기가 고정되어 있어서 한 번 선언하면 크기를 바꿀 수 없..

CS/자료구조 2025.03.23

Chapter 1: Software, Data Structure, and C++

경희대학교 박제만 교수님의 자료구조 수업을 기반으로 정리한 글입니다.What is abstraction?▶ Too abstract.▶ Too concrete(명확한).▶ Between too abstract and too concrete.AbstractionA model of a complex system that includes only the details essential to the perspective of the viewer of the system. Programs are abstractions.Tells what the program mus do, but not how the program does it.Abstraction Data Type (ADT)▶ ADT A data type who..

CS/자료구조 2025.03.22

Chapter 0: Introduction

경희대학교 박제만 교수님의 자료구조 수업을 기반으로 정리한 글입니다.What do we learn?Data StructureDataThe way to represent information in a suitable format for communication or analysis by humans or maachines. Data StructureWe should be able to properly manage a collection of data elements.Why should we learn data structure?to develop a high-quality programIt works.It can be modified without excessive time and effort.It is ..

CS/자료구조 2025.03.21

정보보안 1차시: 네트워크 - ARP와 TCP/UDP

경희대학교 중앙동아리 쿠러그의 정보보안 강의를 기반으로 정리한 글입니다.네트워크MAC vs IPMAC각 네트워크 인터페이스에 할당된 물리적인 고유 식별 주소로,Data Link 계층에서 사용되며, 같은 네트워크 내에서만 유일하면 된다. 48bit 구성 -> 8bit씩 6자리로 구성 -> 16진법으로 총 12자리로 표기ex) 12-34-56-AB-CD-EF (앞 3자리는 제조사, 뒤 3자리는 기기 고유 코드) IP실제 통신 과정에서 사용하는 고유 주소로,Network 계층에서 사용되며, 같은 네트워크 내인 LAN 환경에서는 MAC 주소 기반 통신이 이루어진다. IP 주소IPv4: 32비트로, 8비트씩 끊어 10진수로 나타낸다. ex) 192.168.0.1IPv6: 128비트로, 4자리씩 끊어 16진수로 나..

Chapter 1: Introduction

경희대학교 허선영 교수님의 운영체제 수업을 기반으로 정리한 글입니다.Computer System Basics▶ Introduction 작성한 test.cpp는 바로 실행될 수 없어, 머신이 이해할 수 있는 머신 랭귀지(binary)로 된 실행 가능한 형태의 프로그램(Executable)으로 번역해 주어야 한다. 이때 그 번역을 할 때 사용되는 게 컴파일러이다. test.exe는 결국 CPU가 해야 하는 명령어들을 순차적으로 저장을 하고 있는 것이다. machine language는 CPU가 처리, 즉 실행할 수 있는 언어로 binary로 되어 있기에 사람이 명령어를 이해하는 게 어렵다.이 머신 랭귀지를 사람이 이해할 수 있는 명령어로 표현한 게 assembly language이다. (1:1 관계) Ins..

CS/운영체제 2025.03.17

PART 01 리눅스 일반 - CHAPTER 01 리눅스의 이해

권소라 저자의 2025 이기적 리눅스마스터 2급 도서를 기반으로 정리한 글입니다.SECTION 01 리눅스의 개요1. 리눅스의 특징 및 장단점특징1) 오픈 소스 운영체제2) 멀티유저(다중 사용자), 멀티태스킹(다중 작업) 운영체제멀티유저: 여러 사용자가 동시에 동일한 시스템에 접근 가능멀티태스킹: 여러 개의 태스크를 동시에 실행하고, 교대로 컴퓨터의 자원을 사용할 수 있는 기능, 가상 터미널 환경으로 하나의 모니터에 여러 개의 가상 화면(가상 콘솔)을 두어 화면마다 다른 작업 실행 가능3) 다중 스레드를 지원하는 네트워크 운영체제하나의 프로세스 내에서 여러 개의 네트워크 작업(요청)을 동시에 처리할 수 있기 때문에 강력한 네트워크 지원 가능네트워크 서버로 사용이 가능하며 인터넷과 이더넷에 안정적으로 연결..

Computer Network Lecture.03 DLC

경희대학교 이성원 교수님의 컴퓨터 네트워크 수업을 기반으로 정리한 글입니다.ContentsDLC BasicSimple ProtocolStop-and-Wait ProtocolGo-Back-N ProtocolSelective Repeat ProtocolDLC Example - HDLCDLC Example - PPPDLC BasicData Link Control LayerConceptData Link layer2계층 하단부 - MAC Layer: physical한 medium을 여러명이 공유할 때 어떤식으로 효율적으로 공유할 것인가에 대한 방법2계층 상단부 - DLC Layer: physical한 layer에서 error가 발생했을 때 어떤 방법으로 검출 및 복구할 것인가에 대한 방법으로 2계층 역할에 충실D..

Beginners: DH101 - 3 (코딩)

DreamHack의 Beginners 로드맵을 기반으로 정리한 글입니다.Visual Studio Code코딩(Coding)은 프로그래밍 언어를 작성함으로써 컴퓨터에게 명령할 수 있는 체계를 만드는 행위로, 해킹과 뗄 수 없는 관계이다. 그리고 이러한 코딩을 시작하기 위해선 소스 코드 편집기를 잘 사용할 수 있어야 한다. 비주얼 스튜디어 코드(Visual Studio Code, VS Code)는 Windows, macOS, Linux에서 사용 가능한 소스 코드 편집기이다. 기본적으로 JavaScript, TtypeScript, Node.js를 지원하며 확장 프로그램(Extension)을 통해 C, Java, Python 등 100개 이상의 언어를 지원한다. 가볍고 무료인데 다양한 기능을 제공하여 많은 사람..

Beginners: DH101 - 2 (리눅스 사용법)

DreamHack의 Beginners 로드맵을 기반으로 정리한 글입니다.셸(Shell)셸은 유저가 리눅스 시스템을 이용할 수 있는 인터페이스이다. 셸은 유저에게 입력을 받고 운영체제가 그것을 프로그램으로 처리하면 그 결과를 유저에게 출력한다.  Ubuntu를 기준으로 했을 때, 터미널을 실행하면 bash 셸이 자동으로 실행된다. 셸 프롬프트(Shell Prompt)user@user-VirtualBox:~$ 이것을 셸 프롬프트라고 부른다. 유저는 셸 프롬프트를 보고 셸이 명령어를 입력 받을 준비가 되었음을 알 수 있다. user@user-VirtualBox:~$ iduid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),27(sudo),30(di..