전체 글 56

[인터넷보안] 01. 정보 보안의 세계

정보 보안은 막연히 "해킹을 막는 일"이 아니라, 무엇을 왜 지키는가에 대한 명확한 기준에서 출발한다. 그 기준이 바로 CIA, 정보 보안의 세 기둥이다. 이 글에서는 보안의 3대 요소, 정보 보안의 역사적 흐름, 관련 법률, 그리고 보안 전문가에게 요구되는 소양을 정리한다.1. 정보 보안의 3대 요소 (CIA)모든 정보 보안은 세 가지 속성으로 집약된다. 요소의미대표 수단기밀성(Confidentiality)인가된 사용자만 정보에 접근방화벽, 암호, 패스워드무결성(Integrity)인가된 사용자가, 인가된 방법으로만 변경위·변조 탐지가용성(Availability)필요한 시점에 정보 자산에 접근 가능이중화, 백업 세 요소를 일상으로 이해하기기밀성: 내 일기장을 남이 못 보게 하는 것무결성: 화폐를 정부만 ..

[Ubuntu] 03. 홈 서버 배포 - ASP.NET Core 서버를 Docker와 Nginx로 올리기

오늘은 기존에 GitHub에 있던 ASP.NET Core 게임 프로젝트를 홈 서버에 올려서 실제 도메인으로 접속되도록 만드는 작업을 했다. 처음에 Azure에서 배포했다가 무료 기간이 끝나고 연결이 풀렸었는데 바빠서 방치했다가 이제서야 홈 서버를 구축한 김에 옮기는 작업을 시도해봤다. 이전에 Ubuntu 서버 기본 보안 설정, Docker 설치, DB 컨테이너 구성, Nginx 기본 설정까지는 어느 정도 끝내둔 상태였다. 그래서 오늘은 실제 프로젝트를 서버에 올리고, 내가 가진 도메인으로 접속되는지 확인하는 것이 목표였다. 오늘 작업은 간단하게 Docker로 앱을 빌드하고 Nginx로 연결하고 금방 끝날 줄 알았다. 그런데 막상 해보니 앱 컨테이너, MSSQL 컨테이너, Nginx, Cloudflare ..

study/server 2026.07.01

[자바프로그래밍] 01. 자바 특징과 역사

자바는 "한 번 작성하면 어디서든 돌아가는" 언어로 유명하다. 이 한마디에 자바를 이해하는 거의 모든 것이 담겨 있다. 이 글에서는 자바가 왜 그렇게 설계됐는지, 그 핵심인 JVM과 바이트코드가 무엇인지, 그리고 자바를 특징짓는 성질들을 정리한다.1. 자바의 탄생 배경자바의 역사1991년 썬 마이크로시스템즈의 제임스 고슬링이 주도한 Green Project에서 시작됐고(초기 이름 OAK), 1995년 Java로 발표되어 인터넷 시대와 함께 대중화됐다. 2009년 오라클이 썬을 인수해 지금에 이른다.자바가 풀려던 핵심 문제는 플랫폼 호환성이었다. 기존 언어는 OS나 하드웨어가 다르면 소스를 다시 컴파일하거나 고쳐야 했다. 윈도우용으로 짠 프로그램이 맥에서 안 도는 것이다.2. 플랫폼 독립성: WORA와 J..

language/java 2026.07.01

[인터넷활용] 01. HTML 기초와 주요 태그

웹 페이지는 결국 브라우저가 읽어 화면으로 그려내는 문서다. 그 문서의 뼈대를 기술하는 언어가 HTML이다. 이 글에서는 HTML 문서의 기본 구조, 자주 쓰는 태그, 그리고 사용자 입력을 받는 폼(Form)까지 정리한다.1. HTML 문서의 기본 구조HTML은 태그로 내용을 감싸 의미와 구조를 부여하는 마크업 언어다. 모든 문서는 다음 골격에서 출발한다. 크게 두 영역으로 나뉜다.: 문서의 메타 정보. 문자셋, 제목, 스타일·스크립트 연결 등 화면에는 보이지 않지만 문서를 설명하는 정보가 들어간다.: 실제로 브라우저 화면에 표시되는 내용. DOCTYPE와 charset은 왜 쓸까은 "이 문서를 HTML5 표준 모드로 해석하라"고 브라우저에 알리는 선언이다. 은 문자 인코딩을 지정해 한글이 깨지지..

language/html 2026.06.30

[C++] 01. C++ 기초와 입출력

C++은 C언어 위에 객체 지향이라는 새로운 패러다임을 얹은 언어다. C로 짠 코드를 거의 그대로 쓸 수 있을 만큼 C와의 호환을 목표로 설계됐지만, 거기에 클래스와 객체 개념을 더해 더 큰 프로그램을 체계적으로 다룰 수 있게 했다.이 글에서는 C++의 첫 프로그램과 입출력 방식(cin/cout)을 보며, C와 무엇이 같고 무엇이 달라졌는지를 짚는다.1. C++ 개요와 첫 프로그램#include // 입출력 헤더using namespace std; // std 네임스페이스 사용int main() { cout C의 #include , printf 자리에 #include , cout이 들어온 게 한눈에 보인다. main 함수 구조는 C와 같다. 네임스페이스(namespace)이름 충..

language/c++ 2026.06.29

[Ubuntu] 02. 홈 서버 구축 - Docker Compose 기반 개발 환경 구성과 DB 보안

이번에는 Ubuntu 서버의 기본 보안 작업을 마무리했다.Cloudflare에서 도메인을 관리하고, SSH 공개키 인증을 적용하고, Root 로그인과 비밀번호 로그인을 막고, UFW와 Fail2Ban, 자동 보안 업데이트까지 설정하면서 운영체제 자체를 먼저 단단하게 만드는 데 집중했다.오늘은 그 위에 실제 개발 환경을 올리는 작업을 진행했다.목표는 단순히 Docker를 설치하는 것이 아니라, 앞으로 게임 서버, 자동화 프로젝트, 데이터베이스 연구, 개인 실험 등을 모두 이 서버 위에서 운영할 수 있는 기반을 만드는 것이다.오늘 목표오늘 진행한 목표는 다음과 같았다.Docker Compose 구조 정리PostgreSQL 컨테이너 구축SQL Server 컨테이너 구축Portainer 구축DB 포트를 외부에 ..

study/server 2026.06.28

[C언어] 01. 첫 프로젝트

모든 프로그래밍 언어 학습은 화면에 "Hello World"를 띄우는 것에서 시작한다. 단순해 보이는 이 한 줄짜리 프로그램에도 사실 C언어의 기본 골격이 모두 담겨 있다.이 글에서는 첫 프로그램을 작성해보고, 그 안에 들어 있는 구성요소(헤더, main 함수, 전처리기, 주석)가 각각 무슨 역할을 하는지 하나씩 짚어본다.1. 첫 프로그램: Hello World#include int main(void){ printf("Hello World! \n"); printf("Kim ChulSoo \n"); return 0;}실행하면 다음과 같이 출력된다.Hello World!Kim ChulSooprintf 끝의 \n은 줄바꿈 문자다. 화면에서 커서를 다음 줄로 옮겨, 두 문장이 각각 다른 줄에 출..

language/c 2026.06.28

[컴퓨터네트워크] 01. 네트워크의 이해와 설정

지금 이 글을 보는 것도, 메시지를 보내는 것도 모두 네트워크 위에서 일어난다. 컴퓨터네트워크는 "여러 컴퓨터가 어떻게 데이터를 주고받는가"를 다루는 분야다. 첫 글에서는 네트워크의 기본 개념, 데이터 전송의 단위인 패킷, 그리고 직접 네트워크를 들여다보고 설정하는 도구들을 정리한다.1. 네트워크란?네트워크(Network)통신 장비들이 그물망처럼 연결되어 데이터를 교환하고 협력할 수 있게 해주는 통신망이다. 가장 단순하게는 통신 설비로 두 대 이상의 컴퓨터를 연결한 것이다.네트워크로 우리는 데이터와 주변장치(프린터 등)를 공유하고, 멀리 떨어진 사람과 통신하며, 함께 작업한다. 혼자 동작하던 컴퓨터가 서로 연결되며 가능해진 모든 것이 네트워크의 산물이다.2. 데이터 전송의 단위: 패킷패킷(Packet)네..

[Ubuntu] 01. 홈 서버 구축 - 원격 접속 환경과 기본 보안 설정

오늘은 집에서 남는 노트북으로 운영할 ubuntu 서버의 기본 환경을 정리했다. 목표는 단순히 SSH 접속이 되는 서버를 만드는 것이 아니라, 외부에서도 비교적 안전하게 관리할 수 있는 개발 서버의 기반을 만드는 것이다. 앞으로 Docker, PostgreSQL, Nginx, GitHub Actions 등을 올릴 예정이라, 그 전에 운영체제 수준에서 필요한 기본 보안과 원격 관리 환경부터 먼저 구축하기로 했다.목표오늘의 목표는 다음과 같았다.Cloudflare를 이용한 도메인 구성Windows와 Ubuntu를 각각 서브도메인으로 분리SSH 공개키 인증 적용비밀번호 로그인 차단Root 로그인 차단UFW 방화벽 구성Fail2Ban 설치자동 보안 업데이트 설정웹 서비스를 올리기 전에 OS 자체를 먼저 단단하게..

study/server 2026.06.26

[데이터베이스실습] 01. 데이터베이스 기초

이 시리즈는 오라클(Oracle)을 직접 다루며 SQL을 손에 익히는 실습 과정이다. 본격적으로 테이블을 만들고 쿼리를 던지기 전에, 첫 글에서는 무엇을 다루는가에 대한 토대를 잡는다.관계형 데이터베이스가 무엇이고, 데이터를 담는 그릇인 릴레이션이 어떤 규칙 위에 서 있으며, 데이터가 망가지지 않게 지키는 제약조건이 무엇인지를 짚어야한다. 이 토대가 흔들리면 이후의 SELECT·조인·서브쿼리가 전부 모래 위 집이 된다.여러명이 동시 사용할 수 있는, 검색이라는 목적을 가진.1. 데이터베이스와 DBMS데이터베이스와 DBMS데이터베이스: 조직체의 응용 시스템들이 공유해서 사용하는 운영 데이터(operational data)가 구조적으로 통합된 모임.DBMS: 데이터베이스를 정의하고, 질의어를 지원하며, 리포..

data/oracle 2026.06.26