분류 전체보기 1187

[프로그래머스] 올바른 괄호

문제 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12909 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻이다. 예를 들어 - "()()" 또는 "(())()" 는 올바른 괄호다. - ")()(" 또는 "(()(" 는 올바르지 않은 괄호다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 작성하라. 풀이 괄호는 가장 마지막에 열린 것부터 닫힌다. 그리고 Stack은 가장 마지막에 추가된 값이 먼저 삭제된다. 괄호와 Stack의 특징을 ..

Algorithm 2023.06.29

[프로그래머스] 베스트앨범

문제 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42579 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 1. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 2. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 3. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수를..

Algorithm 2023.06.28

[k8s] Cronjob/Job - startingDeadlineSeconds/activeDeadlineSeconds

개요 정기적으로 수행하는 작업을 위한 Cronjob, 그리고 일반적인 Job은 각각 startingDeadlineSeconds, activeDeadlineSeconds라는 설정을 가지고 있다. 각각의 역할에 혼동이 생겨 개념을 적어둔다. Job - activeDeadlineSeconds 일반적으로 Pod 실패나 컨테이너 오류로 종료되지 않는 한, Job은 중단되지 않고 실행된다. 만약 한 번 실행한 Job이 특정 시간 안에 종료되어야 한다면 activeDeadlineSeconds 지정하면 된다. apiVersion: batch/v1 kind: Job metadata: name: pi-with-timeout spec: backoffLimit: 5 activeDeadlineSeconds: 100 templa..

Kubernetes 2023.06.27

[K8s] pod container에 root 권한 제한하기

개요 Pod 컨테이너가 root로 실행되면 안 되는 경우 SecurityContext를 활용하여 프로세스 실행 사용자를 변경할 수 있다. 추가로 root 권한을 획득하지 않게 설정하고 싶다면 allowPrivilegeEscalation 설정 적용을 고려해 볼 수 있다. allowPrivilegeEscalation 프로세스가 부모 프로세스보다 많은 권한을 얻을 수 있는지에 대한 부분을 제어한다. 컨테이너 프로세스에 설정되는 no_new_prives 플래그를 직접 제어한다. allowPrivilegeEscalation는 privileged 모드로 실행되거나 CAP_SYS_ADMIN을 가지고 있으면 항상 참이다. allowPrivilegeEscalation과 uid, privileged/CAP_SYS_ADMI..

Kubernetes 2023.06.26

[Redis] 비밀번호 설정

개요 인터넷과 연결되어 있는 Ubuntu 서버에 Redis를 설치하고 모든 접속을 허용하게끔 설정해두었더니 기가 막히게도 해킹을 당했다. 저장해두었던 데이터가 사라지고 backup1, backup2…… 이라는 키에 crontab 규칙이 저장되어 있었다. 로그를 보니 타인에 의해 아래와 같은 명령어가 실행된 것 같았다. # 기본 로그 경로 view /var/log/redis/redis-server.log 일단 redis 포트를 변경해두었는데, 비밀번호까지 설정해두려고 한다. 방법을 적어둔다. redis 설정 편집 redis.conf 파일을 열고 SECURITY 항목을 확인하면 친절하게 관련 내용을 주석으로 설명하고 있다. /etc/redis/redis.conf requirepass 설정은 명령을 처리하기 ..

Database 2023.06.23

[AWS] EC2 인스턴스 Type 변경

개요 AWS 특징 중 하나는 유연함이다. 필요하다면 리소스의 수나 유형을 편리하게 조정할 수 있다. 마침 테스트 서버로 사용할 EC2의 타입을 잘못 지정해서…… 이 글에서는 EC2 Type을 변경하는 방법을 적어둔다. EC2 인스턴스 유형을 변경하는 방법은 크게 두 가지다. - 변경할 EC2의 AMI를 생성한 뒤 새 인스턴스로 생성한다. - 변경할 EC2 인스턴스 자체의 유형을 변경한다. 이 글에서는 두 번째 방법을 이용한다. 요구 사항 EC2 인스턴스의 유형을 변경할 때는 다음과 같은 사항이 요구된다. 1. EC2 인스턴스가 중지(Stopped)된 상태여야 한다. 2. 인스턴스 구성과 호환되는 유형을 선택해야 한다. 만약 호환되지 않는 경우 새 인스턴스를 생성하는 방식으로 진행해야 한다. (참고 : 인..

AWS 2023.06.22

[Python] redis 사용하기

개요 2023.06.16 - [Redis] 개념 및 설치/실행 2023.06.19 - [Redis] redis-cli로 데이터 읽고 쓰기 위 두 개 글에서 Redis를 설치하고 cli을 이용해 간단히 데이터를 읽고 써봤다. 이 글에서는 Python을 이용해 redis에 접속하고 작업을 해보려고 한다. redis 패키지 설치 Python을 이용해 redis를 사용할 때는 redis 패키지 설치가 필요하다. 필요하다면 더 좋은 성능을 위해 hiredis를 지원하도록 설치해도 된다. pip install redis # 또는 pip install redis[hiredis] redis 모듈 import redis 모듈을 import 하여 사용한다. import redis redis 서버 접속 Redis 생성자에 ..

Python 2023.06.21

[redis] 서버 원격 접속 허용

개요 Redis도 MySQL과 비슷하게 기본적으로는 localhost의 접속만을 허용한다. 만약 다른 서버에서 redis를 접속해야 한다면 redis 서버에서 원격 접속을 허용해야 한다. 방법을 적어둔다. + redis는 Ubuntu 20.04 LTS에서 직접 설치했고, 방화벽 등의 네트워크 이슈는 없는 걸로 가정한다. Redis.conf 변경 Redis 서버의 설정 파일은 아래 경로에 위치하고 있다. /etc/redis/redis.conf 파일을 열고 NETWORK 관련 부분을 찾으면 친절하게 주석으로 네트워크 설정에 대한 내용이 포함되어 있다. Redis는 bind 설정이 지정되어 있지 않으면 모든 네트워크 인터페이스의 연결을 수신한다. 따라서 사진의 가장 아랫줄을 주석 처리하기만 하면 된다. 모든 ..

Database 2023.06.20

[Redis] redis-cli로 데이터 읽고 쓰기

개요 2023.06.16 - [Redis] 개념 및 설치/실행에서 redis를 설치해봤는데, 이 글에서는 redis-cli를 이용해 redis를 사용하는 방법을 간단히 정리해보려고 한다. 접속 redis-cli 명령어를 이용해 redis에 접근할 수 있다. 아무 옵션 없이 사용하면 localhost의 6379 port에서 동작하는 redis 서버 접속을 시도한다. redis-cli 접속 서버와 port를 지정하는 방법은 아래와 같다. redis-cli -h localhost -p 6379 기본적으로 대화형 모드로 사용할 수 있다. 데이터 쓰기 SET 명령어에 키와 값을 지정하여 데이터를 저장한다. SET key value [expiration EX seconds|PX milliseconds] [NX|XX..

Database 2023.06.19

[Redis] 개념 및 설치/실행

Redis '키-값' 구조의 비정형 데이터를 저장하고 관리하기 위한 비관계형 데이터베이스 관리 시스템(DBMS)으로, redis라는 이름은 REmote DIctionary Server의 약자이다. 살바토르 산필리포(Salvatore Sanfilippo)가 개발해 현재는 Redis Labs가 지원하는 오픈 소스 기반 데이터베이스다. 주로 데이터베이스, 캐시, 메시지 브로커, 스트리밍 엔진으로써 사용된다. 특징 - 인메모리 데이터베이스 Redis의 가장 큰 특징 중 하나는 데이터를 메모리로 불러와 처리하는 메모리 기반 DBMS, 즉 인 메모리 데이터베이스라는 점이다. 데이터를 디스크나 SSD에 저장하는 데이터베이스보다 빠른 성능을 기대할 수 있다. - 다양한 데이터 타입 strings, hashes, lis..

Database 2023.06.16