ㅇ 일 자 : 2026년 4월 30일(목) * 5월 가정학습기간 자율학습하기
ㅇ 내 용
- GUI 개발 방식
- 프로그래밍 언어의 이해와 객체지향 패러다임에 대한 이해
- 프로젝트 준비를 위한 파이참 가상환경 설정하기
1. 주요 프로그래밍 언어의 특징
컴퓨터 언어의 근간은 C언어 계열에서 시작되었으며, 현대의 많은 언어가 이를 기반으로 발전했다.
1.1. C언어: 모든 현대 언어의 뿌리가 되는 로우레벨(Low-level) 언어, 시스템의 근간을 이해하는 데 필수적임
1.2. C++: C언어의 기능을 확장 '객체지향' 개념을 도입한 언어, 개발자 간의 실력 차이나 대규모 프로젝트의 복잡성 보완하기 위함
1.3. Python : 문법이 직관적이며, 최근 AI 및 데이터 과학 분야의 성장과 함께 가장 대중적인 언어로 자리 잡았다.
2. 객체지향 언어(OOP)의 심층 이해
객체지향은 단순히 문법적인 규칙을 넘어, 소프트웨어를 만드는 '철학'과 '트렌드'의 변화를 의미한다.
2.1. 프로그래밍의 기초 단위
1 bit = 0과 1을 저장하는 최소 단위
1 byte: 8개의 bit가 모인 단위 (데이터 처리의 기본 단위)
2.2. 절차지향 vs 객체지향
가. 절차지향 (Procedural): 순차적인 실행을 중시합니다. 소스코드를 하나의 거대한 '문서'로 취급하며, 여러 명이 작업할 때 타인이 내 변수를 수정하여 로직이 망가지는 것을 막기 어렵다.
나. 객체지향 (Object-Oriented): 프로그램을 독립된 '세포(객체)'들의 모임으로 봅니다. 문제가 발생했을 때 해당 객체 내부에서 해결하며, 외부의 간섭을 차단
다. 객체지향의 본질: 캡슐화와 메시징
라. 세포와 캡슐화: 특정 기능과 데이터를 세포처럼 하나의 캡슐(클래스) 안에 가두는 것입니다. 이를 통해 협업 시 타인이 내 코드를 함부로 건드리지 못하게 보호
마. 메시징(Messaging): "시키지 말고, 요청하라."
객체 내부의 상세 구현은 몰라도 되며, 인터페이스를 통해 필요한 기능만을 요청하는 방식으로 소통
3. 클래스(Class) 문법과 보안 (Private)
객체지향을 구현하는 핵심 도구는 클래스(설계도)이며, 핵심 기법은 접근 제어
가. 프라이빗(Private) 변수 : 데이터를 외부에서 마음대로 수정하는 것을 막기 위해 사용,
파이썬에서는 변수명 앞에 __(언더바 두 개)를 붙여 선언합니다.
<예시 코드>
Python
import math
class Circle:
def __init__(self, radius):
self.__radius = radius # 외부에서 직접 접근 불가
나. 게터(Getter)와 세터(Setter) : 프라이빗 변수에 안전하게 접근하고 값을 수정하기 위한 통로입니다. (교재 492p 참고)
(1) 게터 (Getter): 내부의 변수 값을 읽어오는 메서드. 직접 변수에 접근하지 않고 함수를 거쳐 값을 전달받는다
(2) 세터 (Setter): 내부의 변수 값을 변경하는 메서드. 값을 변경할 때 유효성 검사(예: 반지름이 음수인지 확인)로 안전

💡 핵심 요약
"소스코드는 문서이며, 객체지향은 그 문서를 세포 단위로 나누어 관리하는 것이다." 외부에서 데이터를 직접 수정하게 두지 말고, 캡슐화를 통해 독립성을 보장하며 필요한 기능은 인터페이스를 통해 요청하는 구조를 지향해야 한다.
4. 핵심 용어 정리
프로그램을 구성하는 단위는 그 크기와 역할에 따라 다음과 같이 구분된다.
(1) 모듈 (Module): 함수, 변수, 클래스를 모아 놓은 단일 .py 파일.
(2) 패키지 (Package): 여러 모듈을 하나의 폴더로 묶은 것. 관련 있는 기능을 그룹화
(3) 라이브러리 (Library): 특정 기능을 수행하기 위해 모듈과 패키지들을 모아놓은 집합체.
예: random 모듈 내의 기능들은 클래스로 구현
4.1. 클래스(Class)와 객체지향의 이해
객체지향 프로그래밍(OOP)은 데이터를 단순한 값으로 보는 것이 아니라, 데이터와 그 데이터를 처리하는 로직(함수)을 하나의 '객체'로 묶어 관리하는 방식
(1) 클래스의 진화 과정
- 변수: 단일 데이터 저장
- 배열/리스트: 같은 혹은 다른 자료형의 데이터 묶음
- 구조체: 관련 있는 데이터를 하나로 묶음
- 클래스: 데이터(변수) + 로직(함수)을 하나로 묶은 사용자 정의 자료형
(2) 클래스 vs 객체(인스턴스)
- 클래스 (Class): 객체를 만들기 위한 '설계도' 또는 '틀'. (예: 붕어빵 틀)
- 객체/인스턴스 (Object/Instance): 클래스를 통해 메모리에 실제로 생성된 '실체'. (예: 구워진 붕어빵)
- 클래스는 하나지만, 이를 통해 만든 객체는 여러 개가 될 수 있으며 각자 독립적인 상태를 유지한다.
(3) 클래스의 주요 구성 요소와 문법
- 생성자 (__init__) : 클래스가 인스턴화될 때(객체가 만들어질 때) 자동으로 단 한 번 호출되는 특수 함수, 주로 객체의 초기 상태(변수 값)를 설정하는 데 사용됨
- 멤버와 메서드 :
-- 멤버 변수: 클래스 내부에서 정의된 변수 (데이터).
-- 메서드 (Method): 클래스 내부에서 정의된 함수 (로직). 첫 번째 매개변수로 항상 self를 사용하여 자기 자신을 참조
4.2. 객체지향의 4대 특징
클래스를 사용하는 근본적인 이유는 프로그램의 재사용성과 유지보수성을 높이기 위함
(1) 추상화 (Abstraction): 복잡한 현실 세계의 사물을 필요한 특징(데이터, 기능)만 추출하여 모델링하는 것.
(2) 상속 (Inheritance): 기존 클래스(부모)의 기능을 그대로 물려받아 새로운 클래스(자식)를 만드는 것. 중복 코드를 줄이고 기능을 확장할 때 필수적
(3) 캡슐화 (Encapsulation): 데이터와 기능을 하나로 묶고, 중요한 정보를 외부에서 직접 수정하지 못하도록 숨기는 것.
(4) 다형성 (Polymorphism): 같은 이름의 메서드가 상황(객체)에 따라 다르게 동작하게 하는 것.
5. 실전 적용: 패키지 구조와 연동
여러 파일을 관리할 때는 계층적인 구조(패키지)를 사용해야 유지보수가 편리하다.
(1) __init__.py: 해당 폴더가 단순한 디렉토리가 아닌 '파이썬 패키지'임을 선언하는 역할을 한다.
(2) 메인 실행 파일(main.py): 패키지로부터 모듈을 import하여 전체 로직을 구동한다.
💡 핵심 요약
단순 코딩이 아닌 **"사용자 정의 자료형(Class)"**을 설계하는 관점이 필요하다.
원본(부모 클래스)을 훼손하지 않고 상속을 통해 기능을 확장함으로써, 개발의 효율성과 안전성을 동시에 확보할 수 있다.
1. 프로그램 개발 언어에는 어떤것을 사용하는가?
- C언어 : 개발언어 중 가장 쉬운 언어다
- C++ : C언어에서 확장해서 C++언어를 개발자 소요가 증가하면서 실력차이를 보완하기 위한 개발 언어
-C언어 Python : 모든 컴퓨터의 언어 기반은 C언어이다. c++, java, c언어가 근간이 된다.
2. 객체지향 언어에 대한 이해
가. 프로그래밍 언어를 나누는 기준은? 0,1을 저장하는 단위 1bit, 1bit를 8개 모으면 1byte
나. 객체지향, 절차지향 언어?
* 객체지향 : 실행간 문제 발생시 문제를 어떻게 해결할까?
* 절차지향 : 다수팀원이 작성해도 순차적으로 코드를 실행
| 예) 소스코드는 문서이다. 내 코드에 타인의 값이 와서 수정할 수 있는데 내가 만든 값을 다른사람의 로직이 들어와서 로직에서 변수를 건드려서 내 코드가 망가진 경우, 문제가 발생할 때 "객체지향 언어"로 애러를 해결할 수 있다. 즉 내가 만든 코드를 타인이 건드렸을 때 막을 방법이 없다. 상호 협의해서 조치해야 한다. 그리고 "클래스"(=설계도)라는 문법개념과 "객체지향"이라는 트렌드 이다. |
다. 과거에는 문법을 배우는 것이 어려워서 문법체계의 틀을 벗어나지 못해서 개발이 쉽지 않았다. 그래서 쉬운 새로운 언어들이 많이 나오고 있지만 파이썬이 AI등장으로 개발자 사용언어로 사용 용이
라. 영상시청(엘런케이) : 소스코드는 문서이다. 코드를 특정패턴으로 만들고자 하는 노력이다. 문서를 어떻게 잘 정리하냐는 것이다.객체지향은 클래스를 만들어서 사용할 때 메세지를 봐야 한다.
마. 객체지향의 본질 = 세포와 캡슐화 : 분업을 하는데 있어서 타인의 클래스는 알수도 없고, 이해해야 하는 범위 특정한 세포안으로 제한, 내 클래스만 하면 되고 내가 만든 클래스를 타인이 건들일 수가 없다.
바. 일반적으로는 변수값 입력한 부분에 값을 변경해 버리면 막을 방법이 없었지만, 이제는 객체지향 언어를 통해 변수에 값을 할당 받아서 외부에서는 데이터를 캡슐화 해서 다른곳에서 건드릴수 없도록 하는 것이다.
사. class 라고 하는 문법 키워드(if, for)를 사용해서 접근제어자(private)를 사용해서 프로그램을 세포처럼 구성하는 것이다.
* 교재 491p 프라이빗 변수
- 일단 변수를 마음대로 사용하는 것을 막아야 할때 파이썬은 클래스 내부의 변수를 외부에서 사용하는 것을 막고 싶을 때 인스턴스 변수이름 __<변수이름> 형태로 선언한다.
예) import math
class Circle:
def__init__(self, radius):
self.__radius=radius
아. 메시징과 인터페이스
- 메시징 : 예) Random, 리스트..... / 클래스를 만든 이유 객체지향 언어로 사용한다.
자.객체지향이 추구하는 소통 방식 : 알아서 랜덤값 가져와서 사용할수 있도록 한다.
3. 용어의 이해 정리
- 모듈 :함수, 변수, 클래스로 모아놓은 파이썬 파일(.py) 코드를 재사용하고 구조화시 사용한다
- 패키지 : 유용한 기능(모듈)을 폴더구조로 묶어놓고 라이브러리 단위 pip(기본패키지관리자), __init__.py가 있어야 패키지로 인식된다. import문을 불러와 데이터 분석에 사용한다.
- 라이브러리 : 특정 작업을 쉽게 구현하도록 미리 만들어진 함수, 클래스, 데이터들의 집합체이다. 도서관 Library에서 책을 빌리듯이 import 해서 재사용 하는 도구이다. ( 모듈은 파일단위 + 패키지는 폴더단위 = 라이브러리)
예) random 값이 ==> class 이다.
4. 클래스(Class)에 대하여
가. C파일.py 함수명과 매개변수가 동일하면 클래스를 담당하는 이는 a파일,b파일.py파일을 수정해도 클래스 기본파일에는 영향을 미치지 않는다.
나. 객체지향 프로그램 이해, 클래스, 인스턴스를 구분한다. 클래스 만드는 방법 이해
다. 이제부터는 무조건 클래스를 만들어서 코드를 구현한다.
라. c를 제외한 모든 프로그래밍 언어는 ""객체 지향""(Object) 프로그래밍 언어
마. Class라는 것을 기반으로 객채(Object)를 만든다.
바. Logic 기존에는 Data를 변수 하나에 담아서 사용했는데 다음에는 배열 사용
배열(Array)= 같은 값 자료형을 여러개 담을수 있는 것, 같은 자료형만 담을수 있다는 제한이 있어서 List에는 다양한 자료형을 담을수 있다. 다음에는 딕셔너리(dict), 그래서 하나의 값을 통으로 담을 수 있는 Class가 있다.
결국 데이터와 로직이라는 개념으로 프로그램을 만드는데 좀더 쉽게 하기 위해서 배열 -> 리스트 -> 함수포함한 묶음(구조체) -> 객체지향을 담은 -> Class 발전되면서 개발이 좀더 수월해 지게 되었다.
사. 변수 하나에 Data 값을 여러개 담아서 사용했다.
"(자료형)"(=숫자,문자열,불, 자료형태, 특정 데이터 형태로 나눈것, 숫자는 숫자, 문자는 문자형태로 관리하는 것, 만들어진 자료형 ""고정""되어 있는것)
그런데 "(사용자 정의 자료형)" : 사용자가 새로 만들어서 "원하는 방식데로 편리"하게 사용하고자 개발자 요구사항으로 사용자 정의 자료형이 되었다.
예) 회원정보를 다루는 자료형이 필요할 때(이름Str, 나이int, 주민번호Str, 휴대폰int.....)
# 클래스를 선언합니다. 클래스를 만들겠다 의미.
Class Student:
count = 0
def__init__(self, 변수....):
아. 객체 : 프로그램은 데이터와 로직 2가지로 이뤄져 있다. 예를 들어 추상화의 경우 특징을 찾아서 포함한 경우, 학생의 성적을 작성하는 경우 각 학생은 객체.
자. 기본자료형에서 사용자 정의 자료형으로 전환 사용해서 사용자 편의 증대
- 사용자 정의 자료형 만들때 값을 전달한다. 매개변수의 함수형태로 데이터가 입력된다.
- 클래스(내가 만든 자료형의 틀,값),객체(내부에 복사가 되어와서 사용되는 위치) 즉 클래스와 객체는 다르다.
차. 클래스 선언하기
1)"생성자"는 클래스가 실제로 사용되서 변수에 담길때 무조건 한번은 동작하는 함수
2)파이썬은 문법적인 부분을 잘 따지지 않고 자유롭게 사용하도록 했다 (선언부, 할당)
예) num = 1 num변수에 1을 할당해서 사용한다.
일반적으로 변수명 앞에 자료형을 사용한다.
예) int num = 0 앞에 있는 내용이 뒤를 수식한다. int 다음에는 숫자변수 0값이라는 것을 알수 있다.
파이썬은 선언과 할당이 구분이 안된다. 그런데 클래스에서는 할당과 선언이 구분될 수 있다.
int num 변수명만 적어주고 나중에 값을 할당할 수 있다.
num=1
예) 함수형태 Student() 괄호안에 값을 저장해 주어야 하기 때문에 () 사용한다
3) 메소드 : 클래스 내부에 있는 함수이다. 객체와 인스턴스는 동일 의미다.
- 멤버 함수(변수) : 멤버함수를 메서드, 클래스 내부에 있는 변수와 함수를 멤버라고 한다.
- 인스턴스 함수(변수) : 클래스를 사용하면 객체 인스턴스, 하드웨어(전기전자)에서 나온 용어이다.
※ 클래스는 어렵지만 가장 중요하다. 한두번 사용해서는 안되고 자주 사용해봐야 한다
카. 추상화
속성과 기능을 가진 객체를 만들겠다는 의미, Data Logic (예, 추상화 진행: 늑구사진 --> 늑구 스케치 --> 늑구 이모티콘)
타. 상속이란? 교재 496p
-isinstance(s...., d.....)
-상속 때문에 클래스를 사용한다. 문법적인 부분에서 쉽게 사용하는 방법, 클래스는 상속이 가능하다
-용어의 정의
캡슐화 : 자료를 숨길수 있다.
추상화
상속: 누군가 만들어 놓은 기본형태에 내가 원하는 것만 추가 및 교체
다형성: 같은 명령이라도 객체에 따라 다르게 동작한다
예) 원본이 있다면 원본을 건들지 않고 사본을 만들어서 사용할 때 중복되는 부분이 있는데 이것을 해결하려면 중복부분을 제외하고 추가되는 부분만 사용할때를 상속이라고 한다.
- 원본을 그대로 두고 확장된 Class만 수정이 가능하기 때문에 면책과 개발에서 편리하다.
- 객체지향의 특징에 상속이 포함되어 있다.
- 상속을 기반으로 수많은 기법들이 나온다. 이때 문제를 해결하는 방법들을 배워 나간다
파. 클래스 변수 설정 : 클래스끼리 값을 공유한다. def--init--( , , ....) 자료형 형 틀이다. 안에 들어있는 파란동그라미에 있는 객체 여러개가 공유하는 하나의 클래스 변수값이 된다. 덮어쓰기가 될수 있음에 유의하기[교재 490p]
ㅇ 게터와 세터의 역할은? 프라이빗으로 만든 변수를 할당하고 가져오는데 사용하는 특별 함수다
<< 파이참 setup >>
버젼 확인 python3 -- version
which python3 최신버젼 설치 확인
Sudo apt update
Sudo apt install - y python3
특정 구버젼 설치
Sudo add-apt-repository ppa : deadsnakes/ppa-y
Sudo apt update
sudo apt install python3.10
파이참 공식 사이트에서 제공하는 snap패키지로 간편하게 설치하기
sudo snap install pycharm - community -- calssic
pycharm - community
◇ 교육자료 참고사이트 및 파이썬 환경을 활용한 자기주도 학습하기 ◇
| 혼공파이썬 - 클래스 이해하기 객체지향 등장 배경 및 유튜브 영상 시청 절차지향 문제점 (공유 데이터) 캡슐화 _ _ (private), 멤버함수 맴버변수에 접근함수 == 세터와 게터 클레스 --> 객체 --> 상속 Pyside6, GUI, 파이썬 구버전 설치 파이참 라이브러리 설치 GUI 실행예제, 코드분석 Designer 실행 .ui 저장후 .py로 변환 후 로직 적용하기 .py 디자인코드 --> 로직 적용 모듈, 패키지, 클래스 |
파이참 가상환경 >>> venv - Firstsection - Firstwindow.py >>> main.py (import sys print(sys.argv) |
"GUI (GUI는 Graphical User Interface, 그래픽 사용자 인터페이스) 이해"
사용자가 컴퓨터나 스마트폰을 사용할 때 텍스트 명령어 대신 화면에 보이는 아이콘, 버튼, 메뉴 등의 '그래픽 요소'를 마우스로 클릭하거나 손으로 터치하여 조작하는 환경을 뜻한다.
1. GUI가 등장한 이유 (과거 vs 현재)
GUI를 가장 쉽게 이해하는 방법은 과거의 방식인 CLI와 비교하는 것이다.
1.1. CLI (Command Line Interface)
컴퓨터 초기 시절이나 개발자들이 검은 화면(터미널)에 cd /users/documents 같은 영어 명령어를 직접 타이핑해서 컴퓨터를 움직이던 방식입니다. 명령어를 모르면 컴퓨터를 쓸 수 없었다.
1.2.GUI (Graphical User Interface)
현재는 내 문서 폴더 아이콘을 '마우스 더블 클릭'해서 여는 방식입니다. 컴퓨터 구조를 잘 모르는 대중들도 직관적으로 소프트웨어를 사용할 수 있게 되었다.
2. GUI의 핵심 요소
우리가 매일 사용하는 윈도우, 맥OS, 스마트폰 앱은 모두 아래와 같은 GUI 요소로 가득 하다.
- 창 (Window): 프로그램이 실행되는 독립적인 화면 영역
- 아이콘 (Icon): 폴더, 휴지통, 프로그램 등을 직관적으로 표현한 작은 그림
- 버튼 (Button): 클릭하면 특정 동작(저장, 취소 등)을 수행하는 요소
- 메뉴 (Menu): 상단이나 마우스 우클릭 시 나타나는 기능 목록 집합
3. 개발자 입장에서의 GUI
PySide6(Qt), PyCharm, UI 파일이 바로 이 GUI 프로그램을 만들기 위한 도구들.
개발자는 디자이너가 구상한 그래픽(UI)을 코드와 연결하여,
사용자가 '로그인' 버튼을 눌렀을 때 실제로 서버에 정보를 보내는 등의 기능(Logic)을 구현
당장 우리가 쓰는 카카오톡, 메모장, 포토샵 등이 모두 개발자들이 GUI 라이브러리를 통해 만든 결과물
파이썬의 대표적인 GUI 라이브러리인 PySide6(Qt)를 활용하여 화면을 설계하고, 이를 파이썬 코드로 변환해 비즈니스 로직과 연결하는 개발 과정
1. 개발 환경 및 도구 (Development Environment)
- PyCharm (파이참)
- 의미: JetBrains사에서 만든 파이썬 전용 통합 개발 환경(IDE)
- 특징: 강력한 코드 자동 완성, 디버깅, 가상환경 관리 기능을 제공합니다. 현재 파이썬 개발자들 사이에서 가장 점유율이 높고 대중적인 툴이기 때문에 GUI 개발 환경으로 주로 선택
2. 개발 방식 및 대상 (Development Approach)
- 소스코드 기반 개발자
- 의미: 화면을 마우스로 그리기보다, 코드(widget = QPushButton())를 직접 타이핑하여 GUI를 구축하는 방식을 선호하는 개발자
- 특징: 디자인 도구(Qt Designer)를 쓰더라도 결국 최종 결과물이 파이썬 코드(.py)로 명확하게 떨어지기 때문에, 코드를 직접 제어하고 수정하기 용이
- UI Design (디자이너용)
- 의미: 개발자가 코딩하기 전, UI/UX 디자이너가 화면의 레이아웃, 색상, 컴포넌트 배치를 구상하는 단계 또는 디자이너가 사용하는 도구를 뜻함
3. UI 설계 방식 (UI Design Methodology)
- 위지윅 (WYSIWYG)
- 의미: "What You See Is What You Get"의 약자로, "보는 대로 얻는다"는 뜻
- 특징: 코드를 짜지 않아도 툴 안에서 버튼, 텍스트 상자 등을 마우스로 드래그 앤 드롭하여 배치하면, 화면이 보이는 그대로 실시간 디자인되는 직관적인 개발 방식. Qt Designer가 대표적인 위지윅 툴
4. PySide6 핵심 개념 및 파일 구성 (PySide6 Artifacts)
- PySide6 설치 위치 경로
- 의미: 파이썬 환경에 PySide6 라이브러리가 저장된 실제 하드디스크 상의 경로
- 중요성: 위지윅 디자인 툴인 pyside6-designer.exe 실행 파일이나, UI 파일을 파이썬 코드로 바꿔주는 pyside6-uic.exe 도구가 바로 이 설치 경로 내에 존재하기 때문에 경로를 찾아두는 것이 중요
- UI (Qt Design의 UI 파일)
- 의미: Qt Designer라는 디자인 툴로 화면을 그리고 저장했을 때 생성되는 확장자 .ui 파일
- 포맷 (XML): 이 .ui 파일의 내부 구조는 컴퓨터가 읽기 좋은 XML 형태의 텍스트로 이루어져 있다. (예: 어떤 버튼이 가로/세로 몇 픽셀 크기로 어디에 위치해 있는지 등이 XML 태그로 기록됨)
- Python (.py 파일 / code)
- 의미: XML로 된 .ui 파일은 파이썬 코드가 아니기 때문에 프로그램에서 바로 쓸 수 없다. 따라서 변환 도구(pyside6-uic)를 사용해 파이썬 소스코드(.py)로 변환해야 한다.
5. 아키텍처 및 구현 (Architecture & Implementation)
- D -> UI -> UI -> Logic -> PyCharm
- 의미: GUI 프로그램이 만들어지는 전체적인 파이프라인(흐름)
- D (Design): 대략적인 화면을 구상/디자인 한다.
- UI (툴 작업): Qt Designer(위지윅 툴)로 화면을 배치하여 .ui 파일을 만든다.
- UI (코드 변환): .ui(XML) 파일을 파이썬 코드(.py)로 변환 한다.
- Logic (로직 연결): 변환된 UI 코드 위에, 버튼을 눌렀을 때 실제로 작동할 기능(비즈니스 로직)을 파이썬 코드로 구현
- PyCharm: 이 모든 소스코드 작성과 기능 테스트를 파이참 IDE에서 진행하여 최종 GUI 프로그램을 완성
- UI 구현
- 의미: 앞서 만든 화면(UI)과 실제 기능(Logic)을 결합하여, 사용자가 눈으로 보고 조작할 수 있는 실제 소프트웨어 형태로 완성해내는 단계.

'학습 로그 > c# c++' 카테고리의 다른 글
| D+21 [Unix] 명령어 실습 및 예습 (0) | 2026.05.06 |
|---|---|
| D+21 [UNIX, Linx] 이해 & 실습 (0) | 2026.05.06 |