기타/What I Learned 213

[WIL] Postgresql(Ubuntu) 외부접속 허용하기

새로운 프로젝트를 위해 MariaDB를 사용하다가 Postgresql을 적용해보려고 하는데 개발서버에 올려둔 DB 서버에 접속이 되질 않아 찾아보다가 발견하여 이를 정리해보았다 해당 포스팅에선 파일 권한과 관련된 문제가 발생할 수 있어 파일/경로 권한 설정이 되었는지 확인 후 진행해야 한다.(간단한 명령어는 chmod -R [8진수 권한 명령어] [폴더경로]) 우선 우분투 환경에서는 기본적으로 computer 디스크의 etc/postgresql/[버전]/main/postgresql.conf 파일을 열어보면하단과 같은 라인이 있는데 이때 60번 라인의 listen_addresses 에 접속 가능하게 할 IP를 설정해주거나 모든 IP에 공개를 할 생각이라면 "*" 를 사용한다.  해당 부분을 수정하고나서 주..

[TIL] ASP 쿼리/조건문

업무를 하다보니 옛날에 만들어둔 ASP로 만든 API를 수정해야 할 일이 생겼는데 해당 페이지를 개발한 개발자가 없어 내가 기능을 수정해야 했다... 필자는 파이썬 위주로 작업을 해왔고 기껏해야 한번씩 기능 수정으로 인한 자바를 사용해 봤지만 ASP는 당황스럽게도 한번도 해본적이 없어 어려움이 많았다 혹시나 필자와 같이 어려움을 겪고 있는 사람을 위해 빈약하지만 자료를 남겨보고자 한다. 우선 ASP의 조건문은 일반적인 프로그래밍 문법과 다른것이 익숙치 않아 생각보다 실수가 잦았다 if 조건 = 비교 then 조건 충족시 실행 elseif 조건 = 비교 then 두번째 조건 충족시 실행 else 조건 미충족시 실행 end if 위 코드와 같이 조건문의 비교연산자는 "==" 가 아닌 "=" 으로 사용하여야 ..

[Flask] API 호출 방식과 오류 핸들링

RESTful API를 개발할때 요청 URL에 리소스 ID를 넣어서 보낼 수 있다. (ex. test.com/ticket/12345678) Flask 는 이를 위한 동적 라우팅 기능을 제공하기 때문에 쉽게 적용할 수 있는데 예시는 다음과 같다 @app.route("/ticket/") def get_info(booking): res = request.get("http://티켓정보사이트/~~~/{escape(booking)}.JSON") if res.status_code == 200: return {"message": res.JSON()} elif res.status_code == 404: return {"message": "Wrong"} ''' 하단의 예시는 파라미터의 타입을 지정하는 방법으로 URL 끝에..

[Flask API] 기초 지식

파이썬에서 Flask API는 웹 애플리케이션을 제작할 수 있는 마이크로 프레임워크이다 커뮤니티를 통한 기능 확장이 용이한 편이며 디버거 모드로 실행 가능한 웹 서버도 제공하여 디버깅 기능 또한 내장되어 있어 코드 동작 여부를 신속하게 확인 할 수 있다 RESTful 서비스에 유용한 동적 URL을 지원, Flask-SQLAlchemy 패키지로 ORM을 지원하여 데이터베이스에 접근할 수 있도록 기능 지원도 한다 from flask import Flask app = Flask(__name__) @app.route("/") def basic(): return "Hello World" 위와 같은 코드가 기본적으로 Flask를 사용하는 예시이며 터미널(VS code 기준)에 하단의 명령어를 입력하면 터미널 내에 ..

[Database] 데이터베이스 네이밍 규칙

필자의 블로그는 필자마냥 이것저것 하긴 해야하는데 이걸 어떻게 사용해야 할지 이게 왜 이렇게 되는건지 모르고 막막한 사람들을 위한 블로그로 잡설+서론이 긴것은 양해바랍니다. 기존에 있던 서비스를 분석하고 어느정도 파악이 되어 기능을 추가하려고 손을 댔더니 데이터베이스 구조가 엉망이다... 관련 문서가 사실상 없는 상태와 마찬가지로 눈가리고 아웅식으로 운영이 되고 있던터라 이번 기회에 아예 새로운 프로젝트로 진행하여 Postgresql 과 Django를 이용해 새로 만들고자 했고 이를 위해 데이터베이스부터 다시 만들어보고자 했다 그런데 사수도 없고 인수인계도 제대로 받지 못했고 실력도 뛰어난것도 아닌 이 신입 개발자가 할 줄 아는게 뭐가 있겠는가? 모든 회사가 빠르게 서비스되야 하는 것을 요구하지만 다행히..

[TIL] 자료구조 - 좌측 회전

※ 좌측 회전 - 레드 블랙 트리에서는 좌측 회전을 하는 코드가 다음 예시와 같지만 parent 노드를 가리키는 포인터와 isLeftChild 변수를 추가로 사용해야 하기 때문에 이러한 부분들을 고려해야 한다 public void leftRotate (Node node){ Node temp = node.right; node.right = temp.left; if(node.right != null) { node.right.parent = null; node.right.isLeftChild = false; } if(node.parent == null) { root = temp; temp.parent = null; } else { temp.parent = node.parent; if(node.isLeftChi..

[TIL] 자료구조 - Rotate 메소드

※ Rotate 메소드 - 현재 노드와 부모 노드가 각각 우측 자식인지 좌측 자식인지에 따라 필요한 회전이 달라지는데 각각의 경우는 다음 코드 예시와 같다 public void rotate(Node node){ // 현재 노드가 좌측 자식 if(node.isLeftChild){ // 부모 노드가 좌측 자식 if(node.parent.isLeftChild) // 조부모 노드를 우측회전 rightRotate(node.parent.parent); node.black = false; node.parent.black = true; if(node.parent.right != null) node.parent.right.black = false; return; } // 부모 노드 우측 자식 // 조부모 노드 우측-좌측..

[TIL] 자료구조 - 색상 확인 메소드

※ 색상 확인 메소드 - 노드를 트리의 규칙에 맞게 추가한 뒤, 레드 블랙 트리의 6가지 규칙을 만족하는지를 확인해야 한다 public void checkColor(Node node){ // 루트는 항상 검은색이므로 색을 확인할 필요가 없다 if (node == root) return; // 빨간 노드 2개가 연속으로 나오는 경우 if (!node.black && !node.parent.black){ correctTree(node); // 부모 노드를 계속 확인한다 checkColor(node.parent); } public void correctTree(Node node){ // node의 부모 노드가 왼쪽 자식이면 이모 노드는 조부모 노드의 오른쪽 자식이다 if (node.parent.isLeftCh..

[TIL] 자료구조 - add 메소드

※ add 메소드 - add 메소드의 동작 방식은 AVL 트리와 유사하지만 isLeftChild가 추가가 되기 때문에 이 부분을 고려해 주어야 한다. add 메소드 코드의 예시는 다음과 같으며 트리가 비어있으면 노드를 추가하고 비어있지 않다면 재귀 add 메소드를 호출한다. public void add(K key, V value){ Node node = new Node(key, value); // 트리가 비어있을 경우 if (root == null) { root = node; root.black = true; size++; return; } // 트리에 노드가 있을 경우 재귀 메소드 사용 add(root, node); size++; } // add 재귀함수, 내부클래스 private void add (N..