분류 전체보기 1191

[MySQL] JOIN/UNION을 사용한 FULL OUTER JOIN

개요 2022.06.12 - [MySQL] JOIN에서 정리했지만 MySQL에서는 FULL OUTER JOIN을 지원하지 않는다. 하지만 OUTER JOIN과 UNION을 이용하면 FULL OUTER JOIN을 할 수 있다. SQL SQL은 다음과 같은 구조이다. 2개 테이블 JOIN SELECT * FROM t1 LEFT OUTER JOIN t2 ON t1.id = t2.id UNION SELECT * FROM t1 RIGHT OUTER JOIN t2 ON t1.id = t2.id 3개 테이블 JOIN SELECT * FROM t1 LEFT OUTER JOIN t2 ON t1.id = t2.id LEFT OUTER JOIN t3 ON t2.id = t3.id UNION SELECT * FROM t1 R..

Database 2022.12.08

[MySQL] SubQuery - 스칼라 서브 쿼리

SubQuery 서브 쿼리란 다른 쿼리 내에 포함되어 있는 SELECT 쿼리문을 의미한다. 서브쿼리를 포함하고 있는 쿼리를 외부 쿼리, 부모 쿼리, 메인 쿼리라고 부르고 서브 쿼리를 내부 쿼리, 자식 쿼리라고 부른다. 서브 쿼리는 괄호로 감싸서 표현된다. 예시 ) SELECT name, height FROM userTbl WHERE height > (SELECT height FROM userTbl WHERE name in ('김경호') ); 서브쿼리에서는 메인 쿼리의 컬럼을 사용할 수 있지만, 메인 쿼리에서는 서브 쿼리의 컬럼을 사용할 수 없다. 서브 쿼리 장점 쿼리를 구조화하여, 쿼리의 부분을 명확히 구분할 수 있다. 복잡한 JOIN, UNION과 같은 동작을 수행할 수 있는 방법을 제공한다. 복잡한 ..

Database 2022.12.07

[Python] Pandas - Series 2

개요 2022.12.05 - [Python] Pandas - Series 1에 이어서 Series 클래스를 마저 정리한다. 시리즈와 딕셔너리 자료형 Series 객체는 인덱스 라벨을 통해 인덱싱할 수 있으므로 인덱스 라벨을 키로 하는 딕셔너리와 같다고 할 수 있다. 때문에 딕셔너리가 제공하는 in 연산도 가능하고 items 메서드를 이용해 키, 값을 접근할 수도 있다. in 연산 s = pd.Series([9904312, 3448737, 2890451, 2466052], index=["서울", "부산", "인천", "대구"]) '부산' in s, '경기' in s # 실행 결과 (True, False) items() s = pd.Series([9904312, 3448737, 2890451, 2466052..

[Python] Pandas - Series 1

Pandas Python에서 데이터를 다룰 때 빠질 수 없는 패키지로, pandas를 이용하면 다양한 방법으로 데이터를 조작할 수 있다. 대부분의 데이터는 시계열(Series)이나 표(Table) 형태로 나타낼 수 있는데, pandas는 이러한 데이터를 다룰 수 있도록 Series, Dataframe 클래스를 제공한다. 패키지 import pandas 패키지를 import 할 때는 관례적으로 pd라는 이름을 사용한다. import pandas as pd Series NumPy에서 제공하는 1차원 배열과 유사하지만 데이터의 의미를 나타내는 index를 붙일 수 있다. 데이터는 value에 해당한다. 생성 리스트나 1차원 배열 형식의 데이터를 Series 클래스 생성자로 전달하면 Series 클래스 객체를 ..

[Linux] apt/dpkg - 패키지 설치 이력 확인

개요 apt install 명령어를 이용해 기존에 설치되어 있던 패키지를 업그레이드 버전으로 설치했다. 그리고 그대로 패키지가 동작하지 않았다……. 업그레이드했던 패키지를 기존에 설치되어 있던 버전으로 돌리고 싶은데, 생각해보니 기존 버전을 확인하지 않았다……. 이런 경우에는 어떻게 해야할까? apt history.log apt, apt-get을 이용한 모든 작업은 /var/log/apt/ 아래의 로그 파일에 기록된다. 그 중 설치 이력에 대한 로그는 history.log에 저장된다. 로그 파일을 열어보면, 명령어를 실행한 시점과 실행한 명령어, 그리고 명령어로 인해 삭제되거나 업그레이드/다운그레이드된 패키지와 그 버전을 확인할 수 있다. dpkg.log apt history.log는 gdebi와 같은 ..

Linux 2022.12.04

[Python] NumPy - 난수 발생과 카운팅 2

개요 2022.12.02 - [Python] NumPy - 난수 발생과 카운팅 1에 이어 마저 내용을 정리한다. 난수 생성 np.random 패키지는 rand 함수 이외에도 난수를 생성하는 함수를 제공하는데, 그중 많이 사용하는 것은 rand 함수를 포함하여 3가지이다. rand 0부터 1사이의 균일한 확률 분포로 실수 난수를 생성한다. 매개변수로 생성할 난수의 크기를 지정하는데, 여러 개의 인수를 넣으면 해당 크기를 가진 행렬을 생성한다. np.random.rand(10) np.random.rand(3, 5) # 실행 결과 array([0.95894927, 0.65279032, 0.63505887, 0.99529957, 0.58185033, 0.41436859, 0.4746975 , 0.6235101 ..

[Python] NumPy - 난수 발생과 카운팅 1

난수 발생 Pythom을 이용해 데이터를 무작위로 섞거나 난수를 발생시키는 방법을 정리한다. 시드 설정 컴퓨터 프로그램에서 일반적으로 말하는 난수란, 특정한 시작 숫자로부터 정해진 알고리즘에 의해 난수처럼 보이는 수열을 생성한 것이다. 이때 시작 숫자를 시드(seed)라고 한다. 시드는 보통 현재 시각 등을 이용해 자동으로 정하지만 수동으로 설정할 수도 있다. NumPy에서 시드를 설정하는 함수는 random.seed()로, 매개변수로 0과 같거나 큰 정수를 넣는다. np.random.seed(0) 시드를 설정한 후, random.rand 함수로 난수를 발생시킬 수 있다. 매개변수로 생성할 난수의 개수를 전달한다. np.random.rand(10) # 실행 결과 array([0.5488135 , 0.71..

[Linux] rsyslog을 이용한 history 내역 남기기

개요 bash shell은 명령어 히스토리 기능을 이용해 사용했던 명령어 이력을 보여준다. 이 기능은 사용자 홈 디렉터리의 .bash_history 파일에 기록되기 때문에, 여러 사람이 사용하는 서버인 경우에는 중앙에서 관리하기가 쉽지 않다. 따라서 syslog에 명령어를 남김으로써 명령어 이력을 중앙에 저장해두는 것이 서버를 관리하기에 좋을 수 있다. logger를 이용해 history를 syslog에 남겨보도록 하자. rsyslog IP 네트워크에서 로그 메시지를 전달하기 위해 UNIX 및 Unix 계열 컴퓨터에서 사용하는 오픈 소스 기본적인 syslog 프로토콜을 구현하고, 필터링 기능, 오프라인 출력 대기 작업, TCP를 사용한 전송 등의 기능이 추가되었다. rsyslog 관련 설정 파일은 다음과..

Linux 2022.12.01

[MySQL] DDL 조회

개요 데이터베이스에서 이미 생성되어 있는 테이블, View의 DDL을 추출하려고 한다. 방법을 정리해둔다. Table DDL 테이블은 CREATE TABLE 문으로 생성할 수 있다. CREATE TABLE 문 앞에 SHOW를 붙이면 해당 테이블의 DDL을 추출할 수 있다. SHOW CREATE TABLE -- 예시 SHOW CREATE TABLE docs; View DDL VIEW의 DDL도 같은 명령으로 확인할 수 있다. SHOW CREATE TABLE -- 예시 SHOW CREATE TABLE view_docs; 참고 문서 https://rangstv.tistory.com/6

Database 2022.11.30

[Git] fatal: Unable to create '.git/index.lock' : File exists.

현상 Git commit을 하기 위해 add를 시도할 때 아래와 같은 오류가 발생하면서 정상적으로 동작하지 않는 경우가 있다. fatal: Unable to create 'E:/git_project/branch_test/.git/index.lock': File exists. 해결 방법을 정리해둔다. 원인 .git/index.lock은 해당 레포지터리에서 git 프로세스가 동작중일 때 다른 git 프로세스가 동작하는 것을 방지하기 위해 프로세스 실행 여부 확인 목적으로 생성되는 파일이다. 즉, git 프로세스를 실행하면서 index.lock 파일을 생성하고 실행을 종료하면서 삭제하는 식으로 동작하는 것 같다. 따라서 어떤 이유에서건 index.lock 파일이 정상적으로 정리되지 않았을 때 발생할 수 있는 ..

Git | GitLab 2022.11.29