2024/10 12

[Linux] HTTP

1. 웹 서비스에 사용되는 프로토콜: HTTP(HyperText Transfer Protocol) HTTP(hypertext transfer protocol)은 응용 계층(application, L7)의 프로토콜로 HTML(HyperText Markup Language)를 전송하는 데 사용되는 프로토콜이다. 최근에는 HTML 이외에도 모든 웹 관련 API 통신에 이용되고 있다. HTTP는 기본적으로 비연결성(Connectionless), 무상태성(Stateless) 특성을 가지고, 요청(request)/응답(response) 동작에 기반하여 아주 단순한 방식으로 서비스를 제공한다. 하지만 HTTP 통신은 신뢰성 있는 데이터 통신이 필요하기 때문에 전송 계층(transfer, L4) 프로토콜인 TCP 위에..

System/Linux 2024.10.17

[Linux] Local Repository 만들기

1. Repository가 뭐야? Local Repository는 왜 필요해? Repository란 rpm 기반의 Linux 소프트웨어 패키지들이 저장된 저장소이다. Repository는 일반적으로 외부의 서버에 존재하기 때문에 /etc/yum.repos.d 디렉토리에 저장된 정보를 기반으로 원격으로 rpm 패키지를 가져오게 된다. Linux를 사용하다 보면 rpm 명령어를 이용해 소프트웨어 패키지를 설치하는 경우도 있지만,  rpm 명령어를 사용할 경우, 의존성 문제를 직접 해결해야 하기 때문에, 네트워크가 된다면 dnf(yum)을 사용해 패키지를 설치하는 경우가 훨씬 편리하다는 것을 알 수 있다.   그렇다면 사내 폐쇄망 같은 상황에서는 그냥 rpm으로 할 수 밖에 없는 것일까? 패키지를 다운 받아야..

System/Linux 2024.10.16

[DB] 집합 연산자(Set operator) / 조인(JOIN)

1. 쿼리의 결과 간의 연산: 집합 연산자(Set Operator) 집합 연산자(Set Operator)는 SELECT 쿼리의 결과를 대상으로 연산을 수행하는 연산자이다. 집합 연산자에는 UNION, UNION ALL, INTERSECT, MINUS(EXCEPT)가 있다. 주요 집합 연산자들의 특징에 대해 알아보자. 주요 집합 연산자UNION두 개의 SELECT 쿼리의 결과를 중복을 제거하고, 결합하여 반환 SELECT column_name FROM table1UNIONSELECT column_name FROM table2; **문자셋을 utf-9이나 euckr로 지정했음에도 한글 표기가 되지 않는 이유는 콘솔로 접속했기 때문이다. 원격 터미널(putty)로 접속하면 정상적으로 출력된다.  UNION A..

DB/MariaDB(SQL) 2024.10.15

[DB] Character Set(문자 집합)

*Rocky Linux 9.4와 MariaDB 기반으로 정리한 포스팅입니다.  1. 문자 집합? 인코딩? 디코딩? 문서를 열어보다 보면 간혹 외계어처럼 한글이 깨져서 보일 때가 있다. 이럴 때 흔히 나오는 단어들이 캐릭터 셋(character set), 인코딩(incoding)이런 단어일 것이다. 캐릭터 셋과 인코딩이란 무엇일까? 먼저 문자 집합(character set)은 정보를 표현하기 위한 글자나 기호의 집합을 정의한 것이다. 문자나 기호를 컴퓨터에서 저장하거나, 통신에 사용하기 위해서는 문자나 기호를 바이너리 형식(이진수)로 변환해야 하는데, 이러한 과정을 인코딩(incoding, 부호화)라고 하며, 인코딩된 문자 부호를 다시 디코딩(decoding)해서 원래의 문자나 기호로 표현할 수 있다.  ..

DB/MariaDB(SQL) 2024.10.14

[DB] SQL(DCL) / 원격 접속 도구(MySQL WorkBench)

*Rocky Linux 9.4와 MariaDB 기반으로 정리한 포스팅입니다.   계정과 권한을 관리하자: DCL(Data Control Language)DCL(Data Control Language)는 사용자 계정을 생성/삭제 및 계정에 부여된 권한을 설정하는 데 사용된다. 먼저 Mysql 데이터베이스에 들어간 후,  다음 쿼리문을 통해 사용자 계정 목록을 확인해 보자.use mysql; SELECT user,host,password FROM mysql.user; 다른 계정을 생성하지 않았다면, 세 개의 빌트인 계정(시스템 관리 계정)들이 출력될 것이다. 빌트인 계정들은 기본적인 데이터베이스 관리 및 운영에 필수적인 역할을 하는 계정들이므로 함부로 삭제하면 안 된다. 이제 DCL 명령어들에 대해 알아보자..

DB/MariaDB(SQL) 2024.10.14

[DB] SQL(DML) / Python 스크립트 적용 방법

*Rocky Linux 9.4와 MariaDB 기반으로 정리한 포스팅입니다.  테이블에 레코드를 넣어보자: DML(Data Manipulatation Language) DML(Data Manipulation Language)는 데이터베이스에서 데이터를 조회하거나 조작(추가, 수정, 삭제)하기 위해 사용된다. DDL과 다르게 데이터베이스의 구조를 변경하는 것이 아닌, 테이블 내의 데이터를 관리(Manipulation)하기 위한 SQL이라고 이해하면 쉽다. DML에는 SELECT, INSERT, UPDATE, DELETE가 있다.  1) SELECT : 테이블에서 데이터 출력테이블의 레코드 모두 출력select * from [출력할 테이블명] EX) select * from memberTB; //membe..

DB/MariaDB(SQL) 2024.10.14

[DB] SQL(DDL)

*Rocky Linux 9.4와 MariaDB 기반으로 정리한 포스팅입니다.  데이터를 담을 객체를 만들자: DDL(Data Definition Language)DDL(Data Definition Language, 데이터 정의어)는데이터를 담을 객체(테이블, 데이터베이스, 컬럼..)을 생성/삭제/변경할 때 사용된다. 저번 포스팅에서 MariaDB를 설치하고, 최초 접속 및 비밀번호 설정하는 방법을 배웠으니, 이번엔 DDL을 이용해 데이터베이스와 테이블을 만들고 조작하는 방법을 알아보자.   먼저 show database; 명령어를 쳐보면 MariaDB를 설치했을 때, 기본적으로 생성되는 빌트인 데이터베이스(built-in database)들이 나온다. 이러한 빌트인 데이터베이스들은 MariaDB를 운영하..

DB/MariaDB(SQL) 2024.10.10

[DB] DB 기초 이론 및 개념

1. 데이터베이스(Database)란?데이터베이스(Database)는 개념적으로는 '일정한 기준을 가지고 데이터를 모아놓은 것(집합)'으로, 물리적으로는 '테이블(table)을 담는 저장 공간'으로 간단하게 정의할 수 있다. 데이터베이스를 다루면서 주로 사용되는 개념들 몇 개를 정리하고 넘어가자.  테이블(Table, 표): 실제 데이터들이 저장되는 공간, 행(row)와 열(column)으로 구성된다.  컬럼(Column, 열): 테이블에 저장되는 항목을 컬럼으로 구분한다. 로우(Row, 행, 줄): 데이터가 입력/출력/삭제되는 최소 단위, 레코드(record)하고도 한다.   2. DB를 관리/운영해주는 소프트웨어: DBMS DBMS(Database Management System)은 앞서 언급한 데이..

DB/MariaDB(SQL) 2024.10.10

[Linux] e-mail(Mail Server)

우리가 사용하는 이메일의 체계는 겉보기엔 단순해보이지만, 세부적으로 보면 여러 메일 서버 구성 주체들과 프로토콜들의 상호 작용으로 운영되는 상당히 복잡한 체계를 가지고 있다. 이번 포스팅에서는 이메일 체계의 구성 및 통신 과정에 대해 설명해보려한다.  1. 이메일 통신 과정 이메일은 다음과 같은 과정을 거쳐 수신자에게 도착하게 된다. 아래의 설명을 참고하여 대략적인 과정을 파악하도록 하자. 메일 서버 구성 요소와 관련 프로토콜들에 대해서는 추후 더 자세히 다룰 예정이다.  1) 다른 도메인끼리의 메일 전송 과정  발신 이메일: pororo@naver.com수신 이메일: crong@daum.net 1. pororo는 MUA를 이용하여 메일을 작성하고, naver.com 도메인의 MTA(보내는 메일 서버)로..

System/Linux 2024.10.09

[Linux] FTP

1. 파일 전송 서비스/프로토콜: FTP(File Transfer Protocol)FTP(File Transfer Protocol)은 인터넷을 통해 파일을 전송하는데 사용되는 표준 네트워크 프로토콜이자 서비스이다. 하지만 FTP를 이용해서 파일을 다운받아 본 사용자는 거의 없을 것이다. 일반적으로 FTP는 개발자, 엔지니어들이 서버 운영을 위한 목적으로 파일을 업로드/다운로드 할 때 많이 사용하며, 큰 파일이나 많은 파일을 안정적으로 빠르게 업로드/다운로드 할 수 있다는 장점이 있다.   일반적으로 FTP는 TCP 20, 21번 포트를 이용한 평문 통신으로 알려져 있지만, 실제로는 통신 방식에 따라서 랜덤 포트를 사용하는 경우도 있다(뒤에 FTP의 동작 방식과 관련한 부분에서 더 자세히 다루도록 하겠다)..

System/Linux 2024.10.07