All

Computer Theory/Web

SSH로 원격 서버에 접속하기

SSH SSH(Secure Shell)는 원격 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜을 의미한다. 기존의 유닉스 시스템 쉘에 원격 접속하기 위해 사용하던 Telnet, Rlogin, RSH는 데이터 전송시 암호화가 이루어지지 않아서 스니핑을 통해 데이터가 노출되기 쉬운 문제점을 가지고 있었다. SSH 프로토콜은 안전한 원격 접속과 보호되지 않은 네트워크에서 안전한 네트워크 서비스를 제공하기 위해 암호화를 사용함으로써 이전의 문제점을 해결 하였다. SSH 프로토콜은 클라이언트-서버 모델로 동작하며 대칭키 방식, 비대칭키 방식, 해시 알고리즘을 사용하여 인증 및 암호화를 수행한다. 대칭키 방식 : 동일 키값으로 암호화와 복호화를 하는 방식, 클라이언트-서버 간 전체 연결을 암호화에 사용 비대..

Cloud/Docker

docker compose로 컨테이너 관리하기

도커 컴포즈 도커 컴포즈는 단일 서버에서 여러개의 컨테이너를 하나의 서비스로 정의하여 컨테이너의 묶음으로 관리할 수 있는 작업환경을 제공하는 관리도구를 의미한다. 여러 개의 컨테이너가 하나의 어플리케이션으로 동작할 때 도커 컴포즈를 사용하지 않는다면 일일이 하나씩 컨테이너를 만들어야하는데 해당 방법으로 한다면 관리가 쉽지 않다. 이런 단점을 보완하기 위해서 나온 것이 도커 컴포즈이며 이를 통해 여러개의 컨테이너의 옵션과 환경을 정의하는 파일을 읽어 컨테이너를 순차적으로 생성하는 형식으로 간편하게 여러개의 컨테이너를 관리 할 수 있다. 아래는 도커 컴포즈 파일의 예시이다. 참고로 yaml 파일은 뛰어쓰기 2칸을 기준으로 영역을 구분한다. 🐋 docker-compose.yaml version: "3.8" s..

FrameWork/PyQT

QThread을 사용하여 작업 단위 분리하기

스레드 프로그램이 메모리에 올라가서 실행중인 것을 프로세스라고 부르는데, 이 프로세스의 실행 단위를 스레드라고 한다. 프로세스는 최소 하나 이상의 스레드를 갖으며 경우에 따라 여러 스레드를 가질 수 있다. PyQT에서는 이를 QThread 클래스를 상속받은Worker 클래스를 통해 처리하는 편이다. 아래는 QThread의 예제이다. 🖥️ main.py import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * class Worker(QThread): def run(self): while True: print("안녕하세요") self.sleep(1) class MyWindow(QMainWindow): def __init__(self): supe..

FrameWork/Django

DRF에서 ModelViewset을 이용하여 API을 작성할 때, 쿼리 스트링 사용 방법

Django Rest Framework에서 ModelViewset을 이용하여 API을 작성할 때, 쿼리 스트링을 사용하기 위해서는 django-filter 라이브러리가 필요하다. django-filter Docs : https://www.django-rest-framework.org/api-guide/filtering/#djangofilterbackend Filtering - Django REST framework www.django-rest-framework.org 일단 위의 공식문서를 따라서 작성하자면 아래와 같다. 🖥️ settings.py INSTALLED_APPS = [ ... 'django_filters', ... ] REST_FRAMEWORK = { 'DEFAULT_FILTER_BACKEND..

Cloud/Docker

맥 M1, M2 에서 linux/amd64로 docker 빌드하기

맥 m1, m2 OS는 기본적으로 arm 기반으로 아키텍처를 이용하기 때문에 m1 노트북으로 도커파일을 빌드하여 도커 이미지를 만들게 된다면, 플랫폼이 linux/arm64 버전으로 생성이 된다. 우리가 일반적으로 서버에서 사용하는 OS는 linux/amd64 즉 arm이 아닌, amd 이기 때문에 이미지를 만들 때, --platform 옵션을 지정해줘야 한다. docker build --platform linux/amd64 -t docker-test .

Cloud/Docker

도커 컨테이너에 접속하여 파일 수정하기

도커 컨테이너에 접근하기 위해서는 아래 명령어를 이용한다. docker exec -it [docker container_id] bash 가끔 컨테이너 내에서 내용을 수정해야 한다면 vim을 설치한다. apt-get upgrade apt-get install nano apt-get install vim # 파일 수정하기 vim [file_name]

Algorithm/Programmers

프로그래머스 LV2 [1차] 캐시

문제 https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 처음에 문제를 읽고 조금 당황했었는데 LRU(Least Recently Used) 알고리즘을 이용하여 문제를 풀이하라고 했기 때문이다. 그래서 혹시 이런 알고리즘 류를 외워서 풀어야 하는가 했으나, 커뮤니티에 의하면 해당 테스트 쳤을 당시에 검색을 통해 알고리즘 참고하여 문제를 했다고 적혀 있길래 나도 LRU 알고리즘을 검색하여 이해한 후 문제를 풀이하였다. LRU 알고리즘은 가장 오랫..

Algorithm/Programmers

프로그래머스 LV0 접미사인지 확인하기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/181908 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 해당 문제는 주어진 문자열의 접미사가 맞는지 확인하는 문제이다. 파이썬에서는 접두사, 접미사를 확인하기 위해 제공되는 함수인 startswith, endswith을 제공하고 있다. 사용하는 방법은 아래와 같다. 🖥️ main.py name = "정해원" print(name.startswith("정")) # True print(name.endswith("원")) # True 이를 이용하..

Algorithm/Programmers

프로그래머스 LV0 OX퀴즈

문제 https://school.programmers.co.kr/learn/courses/30/lessons/120907 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 해당 문제는 주어진 식과 결과가 서로 맞는지 검증한 불리언 값들을 리스트에 담아 반환하는 문제이다. 사실 파이썬에서는 "수식 계산하면 eval()"를 자주 사용 했기 때문에, 이를 활용하여 코드를 작성하였다. 🖥️ main.py from typing import List def solution(quizs) -> List[str]: answer: List[str] = [] for qui..

JHeaon
'분류 전체보기' 카테고리의 글 목록 (12 Page)