Processing math: 0%
Jost Do It.

그냥 IT해.

반응형

분류 전체보기 230

[Python] upsert문 간접 구현하기

문제 상황 관계형 데이터베이스에 테이블에는 중복 방지와 무결성을 위해 primary key를 설정한다. 이 때 primary key를 설정하면 primary key 값이 중복된 데이터들은 업로드할 수 없다. 보통 SQL문에서는 중복된 데이터인 경우 INSERT INTO ... ON CONFLICT ... 구문을 통해 데이터를 덮어쓸 수 있다. 하지만 pd.to_sql 함수의 경우 데이터 업로드 시 해당 기능이 구현돼 있지 않아 다음 코드를 작성했다. 해결 방법 함수의 동작방식을 다음과 같이 하여 upsert를 간접 구현하였다. 간단히 말하면 pk 중복 데이터를 제거하고 다시 insert하는 방식으로 완전한 upsert는 아닐 수 있다. 1. 시스템 테이블에서 해당 테이블의 primary_key 이름 찾기..

Programming/Python 2024.02.05

[Dbeaver] postgres 연결 시 전체 데이터베이스가 보이지 않을 때 해결방법

문제 상황 Postgres 데이터베이스를 연결하니 내가 연결한 postgres 데이터베이스만 출력되고 나머지 데이터베이스는 출력되지 않는 문제가 발생했다. 해결 방법 데이터베이스 설정을 클릭한다. 설정항목 위에 PostgreSQL을 클릭 아래 Settings 옵션 중에서 Show all databases를 클릭한다. 그 외에도 데이터베이스 관련 옵션들이 있으니 필요한건 여기서 설정하면 될듯하다. Reference https://gitseok.tistory.com/entry/DBeaver-PostgreSQL-%EB%AA%A8%EB%93%A0-Database-%EC%A1%B0%ED%9A%8C%ED%95%98%EA%B8%B0

[Ubuntu] ssh 접속 허용하고 OTP 접속 설정하기

[개요] 외부 ip에서 집 데스크톱으로 접근하다보니 보안설정이 필요했다. 여러 설정 방법들이 있겠지만 관리하는 코스트는 줄이면서 최대한 간단하게 설정하고 싶었다. 그 중 사이트에 접속할 때마다 사용하는 OTP를 우분투에서 사용하는 방법이 있어 OTP로 보안을 적용하였다. [ssh 설정하기] 먼저 ssh 관련 패키지를 설치해준다. sudo apt-get install openssh-server 설치 후 ssh 상태가 정상적인지 확인한다. sudo systemctl status ssh 정상적이라면 아래와 같은 결과가 나온다. ● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; v..

[Ubuntu] 방화벽 설정 및 외부 포트 허용 설정

[방화벽 설정/해제] 우분투에서 기본적으로 방화벽은 ufw 명령어를 통해 설정할 수 있다. 디폴트로 우분투 방화벽은 해제 상태이기 때문에 아래 명령어로 설정해줄 수 있다. sudo ufw enable 설정한 방화벽은 다음 병령어로 해제할 수 있다. sudo ufw disable [방화벽 상태 확인] 아래 명령어를 통해 방화벽 상태를 확인할 수 있다. sudo ufw status verbose 간략한 상태만 보려면 verbose를 입력하지 않아도 된다. 방화벽 상태는 다음과 같다. Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), deny (routed) New profiles: skip To Action From 방화..

[역사] 권력으로 읽는 세계사 유럽편, 효기심

효 선생님이 풀어주는 재미있게 역사 이야기 별점: ★★★★☆ 나의 오랜 헬스장 메이트 효기심 형님이 책을 냈다고 해서 바로 구매했다. 팬심에 구매한게 커서 오랫동안 책장에 있다가 드디어 읽게 됐다. 근데 이형님 말뿐만 아니라 글도 잘쓰시네... 어려운 내용 없이 역사에 무지한 내 눈높이에 맞춰서 재미있는 내용들을 쏙쏙 설명해주신다. 읽다보면 중고등학생 때 스쳐 지나간 역사의 기록들이 어떤 과정에서 발생했는지, 그 속에 어떤 권력 다툼이 있었는지 하나하나 알게되는데 그 재미가 있다. 특히 시간순으로 단순히 나열하는 역사책이 아니라 임팩트 있었던 사건들 중심으로 숨겨진 이야기들을 풀어내서 더 흥미롭게 읽었던거 같다. 책장에는 최근에 나온 동아시아편도 꽂혀있는데 얼른 또 읽어봐야겠다 ㅎㅎㅎ

취미/독서 2024.01.27

[Gitlab] CI/CD에서 Merge Request 시 CI_PIPELINE_SOURCE가 push로 실행되는 이유

문제 상황 gitlab에서 특정 브랜치에 Merge Request(MR)가 발생하면 특정 stage를 실행하려고 아래와 같이 코드를 작성하였다. stage1: stage: example rules: - if: CI_COMMIT_BRANCH == "prod" && CI_PIPELINE_SOURCE == "merge_request_event" script: - echo "hello world!" 그런데 MR 후에도 해당 stage의 코드가 실행되지 않았다... 다음과 같이 ci/cd 테스트 스테이지를 작성해서 변수 값이 뭘로 설정되는지 확인해보니 push로 나오는걸 확인했다. test_stage: stage: test script: - echo "$CI_PIPELINE_SOURCE" 문제 원인 처음에는 ..

[docker] 유저에게 도커 권한 주기

개요 루트 계정이 아니면 특정 도커 명령어를 사용할 때마다 sudo를 적어줘야된다. 아래 방법으로 유저에게 도커 권한을 주면 sudo 명령어를 적지 않아도 된다. 방법 도커를 설치하면 호스트 내 도커 그룹이 생성된다. 아래 명령어를 통해 도커 그룹에 사용자를 추가하면 된다. sudo usermod -aG docker {유저명} 여기서 {유저명} 부분에 추가할 사용자명을 입력하면 된다. 나는 heenj라는 유저명을 입력했다. 제대로 적용됐는지 확인하기 위해 다음 명령어를 실행한다. cat /etc/group 그럼 아래와 같이 group명 docker에 heenj 유저가 할당된 것을 확인할 수 있다. Reference https://seulcode.tistory.com/557

[docker] 우분투에 도커 설치하기

OS 요구 사항 64bit의 우분투 운영체제가 설치돼야 하며, 아래 버전 중 하나여야 한다. Ubuntu Mantic 23.10 Ubuntu Lunar 23.04 Ubuntu Jammy 22.04 (LTS) Ubuntu Focal 20.04 (LTS) 도커 관련 패키지 삭제 설치된 도커 관련 패키지들이 있으면 충돌을 일으킬 수 있으므로 아래 명령어로 삭제를 먼저 진행한다. for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done 참고> 위 명령어는 설치된 관련 패키지들만 제거하므로 기존 도커 엔진 자체를 제거하고 싶으면 이 링크를 ..

[컴퓨터] 데스크톱 조립 (1) - 컴퓨터 부품 및 조립 전 고려 사항

개요 예전부터 내손으로 데스크톱을 맞추고 싶었는데 여러 핑계를 대며 차일피일 미루고 있었다. 그러던 중 연말에 갑자기 급뿜뿌가 와서 갑자기 컴퓨터 부품들을 구매하기 시작.... 이번에 조립하면서 많은 우여곡절들도 있고 컴퓨터에 대해 알게된 지식들도 많아서 그 과정들을 정리한다. 컴퓨터 부품 컴퓨터 부품들은 크게 메인보드, CPU, 메모리, 저장장치, 파워, 그래픽카드, 케이스 등으로 나뉜다. 컴퓨터는 각 부품들이 모여야 온전한 기능을 할 수 있는데, 각 부품들은 아래와 같이 사람에 비유할 수 있다. 1. CPU: 두뇌 CPU는 사람의 두뇌로 생각할 수 있다. CPU는 컴퓨터의 연산들을 처리하는데 좋은 CPU일수록 처리속도가 빠르고 연산량이 많다. CPU는 코어와 클럭이 크게 중요하다. 코어는 머리 개수로..

반응형