분류 전체보기 1185

트리 (Tree)

트리 그래프(Graph)의 일종 스택이나 큐와 같은 선형 구조가 아닌 비선형 자료 구조이다. 계층적 관계를 표현한다. cycle이 없고, 서로 다른 두 노드를 잇는 길이 하나인 그래프를 트리라고 한다. 특징 하나의 루트 노드(root node, 최상위 노드)를 갖는다. 노드 a가 노드 b를 가리킬 때, a를 b의 부모 노드(parent node)라고 한다. b는 a의 자식 노드(child node)라고 한다. 루트 노드는 0개 이상의 자식 노드를 갖는다. 자식 노드는 0개 이상의 자식 노드를 갖는다. 자식 노드가 없는 노드는 잎 노드(leaf node)라고 한다. 잎 노드가 아닌 노드는 내부 노드(internal)라고 한다. 자식 노드는 한 개의 부모 노드를 가진다. 노드와 노드를 연결한 길은 간선(ed..

자료구조 2022.03.17

[k8s] org.jenkinsci.remoting.protocol.impl.ConnectionRefusalException: Unknown client name 에러

2022.03.07 - [Jenkins] HelmRelease로 설치 시, curl: (60) SSL certificate problem: certificate has expired 에러 이 글에 이어서 Jenkins 관련 문제를 하나 더 정리한다. 현상 쿠버네티스 클러스터 환경에서 동작하는 Jenkins에서 Pipeline을 구성하여 빌드했는데, 아래와 같은 출력과 함께 빌드가 완료되지 않았다. Jenkins 웹에서 확인할 수 있는 pipeline build console output 내용이다. Started by user passwd [Pipeline] Start of Pipeline [Pipeline] podTemplate [Pipeline] { [Pipeline] node Created Pod: ..

Jenkins 2022.03.16

[Nifi] UI 및 컴포넌트

메인 화면 Nifi를 실행한 뒤 접속하면 아래와 같은 화면이 반겨줄 것이다. 각 UI를 적당히 표시하면 아래와 같이 나타낼 수 있다. UI 비어있는 공간은 캔버스라고 부른다. 사용자는 캔버스에 nifi 컴포넌트를 추가하여 여러 가지 기능을 수행하는 프로세서를 구성할 수 있다. 컴포넌트는 캔버스에 드래그하여 추가할 수 있다. 캔버스 내의 컴포넌트는 컴포넌트를 우클릭하거나 Operate Pallete를 통해 조작할 수 있다. 참고로 비어 있는 캔버스를 클릭한 후, Operate Pallete를 조작하면 조작한 사항이 캔버스 내 모든 컴포넌트에 반영되므로 주의해야 한다. 상태바에서는 캔버스 내에 위치한 프로세서들이 실행 상태인지, 중지 상태인지 등의 정보를 확인할 수 있다. 컴포넌트 내 경우에는 주로 네 가지..

Apache Nifi 2022.03.15

[list] 빈 리스트 확인

보통 다른 프로그래밍 언어의 경우 리스트에서 isEmpty() 라는 메서드를 제공하거나, 리스트의 길이를 이용해서 리스트가 비어있는지 확인한다. 파이썬의 경우, 아래와 같이 리스트의 길이를 이용할 수 있다. li = [] if len(li) == 0: print("List li is empty.") else: print("List li is not empty.") 다만 이런 코드는 파이썬답지 않다고 한다. if문 활용 python에서 if으로 리스트를 확인할 때, 리스트가 비어있으면 False를, 비어있지 않으면 True를 반환한다. 따라서 아래와 같은 방식으로 확인하는 것이 조금 더 파이썬다운 코드라고 한다. li = [] if not li: print("List li is empty.") else: ..

Python 2022.03.14

[Python] 한 번에 여러 문자 치환

문자열의 특정 문자 또는 특정 문자열을 치환할 때에는 보통 str.replace 함수를 사용한다. 하지만 여러 문자를 각각 치환하는데 사용하기엔 좋지 않다. 이 경우에는 str.translate 함수를 사용하는 것이 조금 더 적절하다. 사용법 1. 치환 규칙 정의 dictionary 사용 dictionary를 사용하는 경우 ASCII 코드를 사용하여 정의해야 한다. 아래 예시는 각 대문자를 세 자리 뒤의 문자로 치환하는 규칙을 정의한 것이다. rule = {} for i in range(ord('A'), ord('Z') + 1): rule[i] = (i - ord('A') + 3) % 26 + ord('A') print(rule) str.maketrans() 사용 매개변수로 문자열을 받는다. 첫번째 매개..

Python 2022.03.13

[MySQL] 테이블 용량 확인

데이터베이스의 스토리지 용량이 계속 문제가 돼서 모든 테이블 용량을 확인하려고 한다. 테이블 용량은 테이블의 상태 정보를 통해 확인할 수 있다. 모든 테이블 용량의 합 모든 데이터베이스, 모든 테이블 용량의 합을 계산한다. SELECT SUM(DATA_LENGTH), SUM(INDEX_LENGTH), SUM((DATA_LENGTH + INDEX_LENGTH)) FROM information_schema.TABLES; # GB 단위로 출력 SELECT ROUND(SUM(DATA_LENGTH /(1024 * 1024 * 1024)), 2) AS 'DATA_SIZE(GB)', ROUND(SUM(INDEX_LENGTH /(1024 * 1024 * 1024)), 2) AS 'INDEX_SIZE(GB)', ROUN..

Database 2022.03.12

[SQL Fiddle] 무료 쿼리 테스트 사이트

간단하게 SQL 등을 테스트할 때, MySQL 등을 직접 구축하거나 할 필요 없이 웹에서 간편하게 테스트할 수 있는 사이트를 소개한다. 주소 http://sqlfiddle.com/ SQL Fiddle | A tool for easy online testing and sharing of database problems and their solutions. Query Panel Use this panel to try to solve the problem with other SQL statements (SELECTs, etc...). Results will be displayed below. Share your queries by copying and pasting the URL that is generate..

기타 2022.03.11

[MySQL] Connection 수 확인

최근 MySQL DB에서 Too many connections 에러가 발생하면서 정상적으로 기능하지 않았던 적이 있었다. 데이터베이스와 연결된 클라이언트의 수, 즉 접속 수가 너무 많아서 발생한 에러인데, 최대 접속 가능 수와 현재 접속 수를 확인하는 쿼리를 적어둔다. 최대 접속 가능한 수(max_connections) 확인 SHOW VARIABLES LIKE '%max_connection%'; 이 데이터베이스는 최대 1000개의 접속을 허용한다. 현재 접속 수(Threads_connected) 확인 MySQL에 접속되어 있다는 것은 각각에 대해 Thread가 실행되고 있는 것이다. 따라서 연결된 스레드 수가 바로 접속 수에 해당한다. SHOW STATUS LIKE 'Threads_connected'; ..

Database 2022.03.10

[BOJ] 3049 - 다각형의 대각선

문제 https://www.acmicpc.net/problem/3049 모든 내부각의 180°보다 작은 다각형을 볼록 다각형이라고 한다. 세 대각선이 한 점에서 만나지 않는 볼록 N각형이 주어졌을 때, 대각선의 교차점의 개수를 세어라. 풀이 조합 공식을 활용하면 간단하게 문제를 해결할 수 있다. 하나의 교차점이 생기기 위해서는 4개의 꼭짓점을 선택해야 한다. 그 경우의 수를 조합 공식으로 나타내면 \(_{n}\mathrm{C}_{4}\)에 해당한다. 이것을 정리하며 아래와 같다. $$ \begin{matrix} _{n}\mathrm{C}_{4} &=& {n! \over 4!(n-4)!} \\ &=& {n(n-1)(n-2)(n-3)(n-4)(n-5)\cdots \over 4 * 3 * 2 * 1(n-4)(..

Algorithm/백준 2022.03.09

[AWS cli] aws profile 삭제

2021.08.26 - [AWS cli] 사용할 계정(profile) 등록/지정 위 글에서는 리눅스 환경에서 aws profile을 등록하는 방법을 정리했었다. 그렇다면 삭제는 어떻게 할까? aws profile 정보를 삭제 하는 방법은 매우 간단하다. aws configure 명령으로 인해 저장된 설정 파일(~/.aws/credentials, ~/.aws/config) 자체를 삭제하거나, 삭제할 profile 정보만 파일에서 삭제한 후 저장하면 된다. 테스트를 해보도록 하겠다. 테스트 1. EC2FullAccess 권한이 부여된 사용자의 액세스 키로 profile이 등록되어 있다. 2. aws cli 명령을 통해 정상적으로 동작하는지 확인해본다. aws ec2 describe-instances --qu..

AWS 2022.03.08