Maximize Your Potential

2024/08 19

[Python BootCamp]서버와 AWS: Django 기반의 ToDoList 서버 구축하기

서버란 무엇인가?서버는 사용자가 요청하는 데이터를 제공하는 프로그램입니다. 이 서버 프로그램이 실행되는 컴퓨터를 서버 컴퓨터라고 합니다. 서버 컴퓨터는 24시간 365일 동안 항상 켜져 있어야 하며, 정상 작동 상태를 유지해야 합니다. 예를 들어, 집에 있는 컴퓨터에 서버 프로그램을 설치하여 개인 서버로 사용할 수 있지만, 안정적인 운영을 위해서는 데이터센터와 같은 전문 환경에서 서버를 관리하는 것이 바람직합니다.이러한 이유로, 서버를 대여해주는 서버 호스팅 서비스가 등장했습니다. 서버 호스팅 업체는 서버를 물리적으로 구축하고, 이를 가상화하여 고객에게 제공합니다. 이러한 가상 서버를 가상 머신(Virtual Machine)이라고 합니다. 가상 머신은 한 대의 물리적 서버를 여러 개의 논리적 서버로 분할..

BackEnd 2024.08.18

[Python BootCamp] AWS Gunicorn&Nginx Github CI/CD 배포 과정

# CI / CD- 과정- ubuntu 생성 후 업데이트 업그레이드sudo apt updatesudo apt upgrade- 계정 비밀번호 설정ssh -i ~/.ssh/mykey [사용자이름]@[서버 IP]SSH 설정 파일 열기: 먼저, SSH 서버의 설정 파일인 sshd_config를 열어야 합니다. 이를 위해 다음 명령어를 사용합니다:sudo vim /etc/ssh/sshd_configvim 대신 nano나 다른 텍스트 편집기를 사용할 수도 있습니다.비밀번호 인증 활성화: sshd_config 파일에서 PasswordAuthentication 설정을 찾아서 yes로 변경합니다. 만약 이 줄이 주석 처리되어 있다면 (즉, 줄 앞에 #가 있다면), 주석 처리를 제거하고 yes로 설정합니다.Password..

BackEnd 2024.08.17

[Python BootCamp]리눅스 기본 명령어 가이드: 파일 및 디렉토리 관리, 검색, 정렬, 와일드카드 활용법

리눅스는 강력한 유닉스 계열 운영 체제로, 다양한 명령어를 통해 효율적인 시스템 관리와 파일 처리가 가능합니다. 이 글에서는 리눅스의 주요 명령어인 cd, pwd, ls, mv, cp, mkdir, rmdir, rm, cat, sort, grep, find, touch, which, whereis와 같은 명령어들을 다루고, 각각의 사용법과 활용 방법을 설명합니다. 이러한 명령어들은 리눅스 시스템을 효과적으로 다루기 위해 필수적인 도구들이며, 이를 이해하고 활용하는 것은 리눅스 사용자로서의 필수적인 능력입니다.cdcd는 "change directory"의 약자로, 리눅스와 다른 유닉스 계열 운영 체제에서 디렉토리(폴더)를 이동할 때 사용하는 명령어입니다.cd 명령어의 사용법은 다음과 같습니다:cd [디렉토..

BackEnd 2024.08.16

[Python BootCamp] Git: 소스 코드 관리의 필수 도구

1. Git이란 무엇인가?Git은 소스 코드 관리 시스템으로, 소프트웨어 개발에서 소스 코드의 변경 사항을 추적하고 버전을 관리할 수 있게 해주는 도구입니다. 분산 버전 관리 시스템(DVCS)으로, 프로젝트의 모든 히스토리를 로컬에 복사하여 독립적으로 작업할 수 있게 합니다. Git은 오픈 소스 프로젝트부터 대규모 엔터프라이즈 프로젝트에 이르기까지 널리 사용되고 있습니다.1.1 Git의 주요 특징분산형 구조: 중앙 서버에 의존하지 않고, 로컬 저장소에서 모든 작업이 가능.빠른 성능: 변경 사항을 추적하고, 병합 작업이 매우 빠름.강력한 브랜치 관리: 브랜치와 병합이 효율적이며, 다양한 워크플로를 지원.2. Git의 기본 개념2.1 저장소(Repository)저장소는 프로젝트의 소스 코드와 이력 데이터를 ..

BackEnd 2024.08.16

[Python BootCamp] Python과 SQL을 이용한 데이터 관리 및 분석 튜토리얼

안녕하세요. Python Boot Camp에서는 MySql과 PostgreSql을 다루었는데요. 배운 것에 대해서 복습 리뷰하는 시간을 가지겠습니다. 쿼리 실습과 웹크롤링 및 데이터 분석을 잠깐 소개하고,SQL로 CRUD DML을 처리하는 방법을 배웠습니다.1. SQL 쿼리 기본 실습SQL은 데이터베이스를 관리하고 조작하기 위한 언어입니다. 다음은 SQL의 기본적인 쿼리 사용법을 설명합니다. 1) 데이터 조회: 테이블에서 모든 데이터를 조회하거나 특정 열만 선택적으로 조회할 수 있습니다.SELECT * FROM student; -- 모든 데이터를 조회SELECT 학번, 이름, 학과 FROM student; -- 특정 열만 선택적으로 조회2) 별칭 사용: 열에 별칭을 붙여 가독성을 높일 수 있습니다. ..

BackEnd 2024.08.15

[CS지식 공부하기] 데이터베이스 - InnoDB vs MyIsam

InnoDB의 주요 특징과 장점 트랜잭션 지원InnoDB는 완벽한 ACID(Atomicity, Consistency, Isolation, Durability) 모델을 지원하는 트랜잭션을 제공합니다. 이는 데이터의 정합성과 안정성을 보장하며, 여러 작업을 그룹화하여 하나의 작업으로 관리할 수 있습니다. 외래키 지원데이터베이스 설계에서 중요한 요소인 외래키를 지원합니다. 이를 통해 데이터 간의 일관성을 유지하고 복잡한 쿼리와 관계를 효율적으로 관리할 수 있습니다. MVCC (Multi-Version Concurrency Control)동시성을 높이기 위해 여러 버전의 데이터를 관리할 수 있는 기능을 제공합니다. 이는 읽기 작업 중에 발생할 수 있는 락 경쟁을 최소화하여 성능을 향상시킵니다. Locking L..

CSKnowledge 2024.08.15

[CS지식 공부하기] 데이터베이스 MySQL 엔진 처리 동작 과정

쿼리파서쿼리파서는 쿼리를 요청 받았을 때 가장 먼저 작동하는 구간입니다. 사용자의 요청으로 들어온 SQL구문을 토큰으로 분리해 트리형태의 구조로 변경합니다. 쿼리파서는 쿼리를 파싱한후 SQL 구문의 문법오류 여부 확인합니다. 이후 전처리기로 보내게 됩니다. 전처리기전처리기는 SQL 쿼리의 유효성을 검증하는 중요한 단계입니다. 먼저, Parser가 만든 트리를 기반으로 SQL 구문의 유효성을 검사합니다. 각 토큰을 테이블이나 컬럼명, 내장 함수 등의 개체와 매핑하여 해당 객체의 존재 여부와 접근 권한을 확인합니다. 이 과정에서 권한이 없는 개체의 토큰은 걸러지게 됩니다. 옵티마이저옵티마이저는 SIUD와 같은 쿼리를 최적으로 실행하기 위한 실행 계획을 수립하는 프로세스입니다. 이때 비용 기반 최적화와 규칙 ..

CSKnowledge 2024.08.14

[CS지식 공부하기] 데이터베이스 - MySQL의 구성 요소: 엔진과 스토리지 엔진

MySQL은 관계형 데이터베이스 관리 시스템(RDBMS)으로, 데이터의 저장, 관리, 접근을 담당하는 여러 구성 요소로 구성되어 있습니다. MySQL의 구성요소를 알면 쿼리문 하나 하나 날릴 때마다 어떤 식으로 동작하는 지 조금더 자세히 할수 있게 되고, 오류를 더 쉽게 수정할수 있을 듯합니다. 이 글에서는 MySQL의 핵심 구성 요소인 MySQL 엔진과 스토리지 엔진에 대해 살펴보겠습니다.MySQL 엔진MySQL 엔진은 클라이언트의 접속과 SQL 요청을 처리하는 역할을 합니다. 이를 위해 다음과 같은 논리적인 절차를 거칩니다. 일종의 사람에게서 두뇌와 같은 역할을 하며, 논리적인 절차로 결정을 내립니다.쿼리 파싱 및 전처리: 클라이언트로부터 받은 SQL 쿼리를 분석하여 문법적으로 올바른지 확인하고, 실..

CSKnowledge 2024.08.13

[Python BootCamp] 장고의 다양한 특징들 및 웹 개발의 다양한 아키텍처와 패턴

이번 글에서는 Django 프레임워크를 사용한 웹 개발의 다양한 아키텍처와 패턴에과 장고의 다양한 특징들에 대해 알아보겠습니다. 목표는 단순히 코드를 작성하는 것이 아니라, 개발 과정을 더욱 체계적이고 효율적으로 만들어, 장기적인 유지보수와 협업에 유리한 환경을 조성하는 것입니다.  버전 관리장고에서는 데이터베이스의 스키마 변경을 관리하기 위해 마이그레이션 시스템을 사용합니다. makemigrations와 migrate 명령어를 이용하여 데이터베이스의 변경사항을 생성하고 적용할 수 있습니다. 이를 통해 개발자는 데이터베이스의 버전 관리를 수월하게 할 수 있으며, 프로젝트의 다양한 버전 간의 데이터베이스 스키마를 쉽게 유지 및 관리할 수 있습니다.python manage.py makemigrationspy..

BackEnd 2024.08.12

[CS지식 공부하기] 알고리즘 - 그래프: 이해와 활용하는 자료구조

그래프는 현대의 정보 시대에서 다양한 분야에서 활발히 사용되는 중요한 자료구조입니다. 이 글에서는 그래프의 기본 개념과 그래프를 활용하는 방법에 대해 알아보겠습니다. 또한, 이를 통해 다양한 분야에서 그래프가 어떻게 활용되는지에 대해 살펴보겠습니다.그래프의 기본 개념그래프는 노드(정점)와 간선(엣지)으로 이루어진 자료구조입니다. 이 노드들은 서로 연결되어 있으며, 이 연결 관계가 그래프의 핵심입니다. 무방향 그래프는 간선에 방향이 없는 경우이며, 양쪽으로 이동할 수 있습니다. 반면에 유향 그래프는 간선에 방향이 있는 경우로, 한 방향으로만 이동할 수 있습니다.Adjacency정점을 연결하는 모서리가 있는 경우 정점이 다른정점과 인접하다고 함Path(경로)정점 A에서 정점 B로 이동할 수 있는 일련의 가장..

CSKnowledge 2024.08.12