본문 바로가기

[IT/Programming]/Algorithm/Database

prisma with PostgreSQL - cursor based pagination # prisma with PostgreSQL - cursor based pagination페이지값을 넘겨주어 글들을 가져오는 offset based pagination 과는 달리 넘겨준 마지막 아이템을 이용해서 pagination을 하는 방식. Offset based 에 비해 장점을 많이 가지고 있어서 사용법을 정리할 겸 포스팅.## PH2024-09-25 : First posting.## Cursor based pagination 의 장단점장점1. 데이터 양이 커져도 영향을 적게 받는다. (@@index 필수적)2. 데이터가 중간에 만들어지거나 사라져도 영향을 적게 받는다. (Cursor 에 해당하는 entity 가 사라지면 안됨.)단점1. 키가 정렬이되 있는 숫자여야 한다. (@@index 필수적)2.. 더보기
DATABASE setup of Panda Market by kipid # DATABASE setup of Panda Market by kipid판다마켓을 위한 DATABASE 를 구축해 봅시다.## PH2024-09-24 : First posting.## TOC## 기본: npx prisma init```[.scrollable]npx prisma init --datasource-provider postgresql```/명령을 실행해서 다음과 같은 파일을 얻자.```[.scrollable]generator client { provider = "prisma-client-js"}datasource db { provider = "postgresql" url = env("DATABASE_URL")}```/.env 파일 설정을 다음과 같이 하자.```[.scrollab.. 더보기
prisma with PostgreSQL 를 배워봅시다. # prisma with PostgreSQL 를 배워봅시다.## PH2024-09-15## TOC## Prisma 초기화```[.scrollable]npx prisma init --datasource-provider postgresql```/.env 파일 설정하기. 아이디는 자동으로 postgres 로 정해지고 아래에 [password] 는 자신이 설정한 비밀번호를 넣어주고 (비번에 특수문자가 들어간 경우 encodeURIComponent kipid's blog :: Encode/Unescape and Decode/Escape URI Component 함수로 한번 처리해 준 뒤 넣어줘야 함. #, ? 같은게 URL 에선 특수하게 쓰이니...), [database_name] 에는 사용할 DB name 을 .. 더보기
Java Serializable Object to Byte Array (byte[] or SQL BLOB) # Java Serializable Object to Byte Array (byte[] or SQL BLOB)MySQL 에 Java Serializable Object 를 byte[] data 로 저장해 뒀다가 필요할때마다 꺼내쓰고 싶어서 알아보는 중 .그냥 string 형태로 변환한 뒤에 저장했다가 string 으로 읽어들이고 분석해서 처리하도록 짤수도 있긴한데... 속도면이나 프로그램 가독성 면에서 안좋을듯?그리고 그림 파일이나 비디오 파일도 어떻게 BLOB 형태로 저장할 수 있는지 좀 공부해봐야겠음.## TOC## Using StreamsException 처리나 close() 처리해야해서 좀 짜증나긴 하는듯.### To byte[]```[.scrollable.lang-java]ByteArrayOut.. 더보기
week8 위클리 페이퍼 (데이터베이스 정규화에 대해 설명, 관계형 데이터베이스를 사용하는 이유를 설명) # week8 위클리 페이퍼 (데이터베이스 정규화에 대해 설명, 관계형 데이터베이스를 사용하는 이유를 설명)## PH2024-09-03 : First posting.## TOC## 데이터베이스 정규화에 대해 설명데이터베이스 정규화 (Normalization) 는 관계형 데이터베이스에서 데이터의 중복을 최소화하고 데이터의 일관성 (Consistency) 과 무결성 (Integrity) 을 유지하기 위해 데이터를 구조화하는 과정입니다. 정규화는 여러 단계로 나뉘며, 각 단계는 특정한 규칙을 따릅니다.### 제1정규형 (1 Normal Form)모든 속성이 원자값을 가져야 합니다. 즉, 각 열은 하나의 값을 가져야 합니다.테이블의 컬럼이 원자값 (Atomic Value, 하나의 값) 을 갖도록 테이블을 분해하.. 더보기
Regular Expression (정규 표현식), and match/replace method in JavaScript, JAVA, and Python # Regular Expression (정규 표현식), and match/replace method in JavaScript, JAVA, and Python정규 표현식 테스트. replace, match, split 등에 쓰임. 꽤나 유용. 새로운 프로그래밍 언어(?)를 만들때에도 필수적으로 쓰일듯한. JavaScript 말고도 대부분의 언어 (Java, C, C++, LabVIEW, PHP, Perl 등등등) 에서 이런게 다들 비슷하게 구현되어 있음.그런데 비슷하긴한데, 다들 조금씩은 달라서 헷갈리는게 많긴 한듯. 특히 JAVA, Python 이... JavaScript 가 제일 깔끔한듯한 느낌적인 느낌.## PH2024-02-24 : Python 추가.2024-01-07 : Small edit. (?.. 더보기
RSA 암호가 Big brother (국가기관 및 최상위 계급층들) 들에게 쉽게 깨지는 이유. (보안이 안되는 이유.) - And 그 보완책으로서의 개인적인 solution 제안 (Hash with salt multiple times and reduce the number of hashing). # RSA 암호가 Big brother (국가기관 및 최상위 계급층들) 들에게 쉽게 깨지는 이유. (보안이 안되는 이유.) - And 그 보완책으로서의 개인적인 solution 제안 (Hash with salt multiple times and reduce the number of hashing).큰 수의 소인수 분해가 어렵다는 것을 이용한 것이 RSA 암호인데, 애초에 소수를 찾는 것 부터 시작해서 두 소수의 곱을 알아내고 소수에 대한 정보는 지운다는게 핵심인데... 잘 생각해보면 소수에 대한 정보를 절대 안지울거라는걸 알 수 있음.그냥 Hash Rainbow Table 로 두 소수의 곱셈 = A, B 의 곱 이라고 만들어 놓으면 어떠한 두 큰 소수의 곱도 어떻게 소인수 분해 해야 하는지 order(1.. 더보기
이진 탐색 트리 (Binary Search Tree, BST) 의 중위 순회 (Inorder), 전위 순회 (Preorder), 후위 순회 (Postorder) 에 대해 알아보자. # 이진 탐색 트리 (Binary Search Tree, BST) 의 중위 순회 (Inorder), 전위 순회 (Preorder), 후위 순회 (Postorder) 에 대해 알아보자. 먼저, 이진 탐색 트리(Binary Search Tree, BST)는 다음과 같은 특성을 가지는 이진 트리입니다: 각 노드는 최대 두 개의 자식 노드를 가질 수 있습니다. 왼쪽 서브트리의 모든 노드는 해당 노드보다 작거나 같은 값을 가지며, 오른쪽 서브트리의 모든 노드는 해당 노드보다 큰 값을 가집니다. ```[.linenums.lang-py] class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left sel.. 더보기
Data ENCRYPT (정보 암호화) # Data ENCRYPT (정보 암호화) 여러군데에 쓰이는 데이터 암호화. 암호를 암호화해서 저장할때도 쓰이고. 개인정보 보호할때도 쓰이고. 통신을 암호화하고 싶을때에도 쓰이고. 단방향 암호화 (원래의 정보를 확인할 필요가 없는 경우) 는 그냥 hash function 쓰면 되는듯도. 보통 단방향 암호화는 input 이 예전 input 과 일치하는지를 확인하는 용도로 자주 쓰이는듯. (즉 password 확인 같은거.) ## PH 2014-12-21: 예전에 썼던 글이긴 한데, 조금 더 정리해서 posting. ## TOC ## In MySQL MySQL 에서의 암호화 . 대충만 정리. ```[.scrollable.lang-sql] DROP TABLE IF EXISTS `TestUsers`; CREAT.. 더보기
Number to Hex string (16), and vice versa (Hex string (16) to Number) # Number to Hex string (16), and vice versa (Hex string (16) to Number) 숫자를 문자로 처리해야 할때랑, 문자로 쓰여진 숫자를 숫자데이터 형태로 바꿔야 할때가 많은데... 이런게 많을경우, 추가로 사람이 굳이 읽을 필요가 없는 경우, Hex (16진수) 로 다루면 처리속도가 조금이나마 향상될거라 생각되므로 정리해봄. ## TOC ## In JAVA ```[.linenums.lang-java] long yourNumber=0x2aff; // 11007 (10진수) String hexString=Long.toHexString(yourNumber); // for unsigned String hexString=Long.toString(yourNumber, .. 더보기
Learning SQL (Structured Query Language) | MySQL (SQL | MySQL 을 배워보자.) :: MySQL, JDBC (Java DataBase Connector) # Learning SQL (Structured Query Language) | MySQL (SQL | MySQL 을 배워보자.) :: MySQL, JDBC (Java DataBase Connector) Database library라고 보면 될듯. 공부하면서 정리해놨던 것 포스팅. 정말 최적화하려면 상용 SQL보다 직접 database를 구축해서 쓰는게 (search에 hash를 쓸 것인지, tree를 쓸 것인지 등도 결정하면서) 프로그램이 돌아갈 때 더 적은 resource와 더 적은 시간이 걸릴거 같지만, 오래 걸리고 노력을 많이 필요로하니 그냥 보급된 SQL을 잘 골라서 쓰는게 맘 편할듯도. Select, Join 같은거 구현하려면 짱나긴 할듯. 정리하기 귀찮다;;;; 대충만 해놓고 다음에 다시... 더보기
Machine Learninig :: Fastest learning by Quadratic approximation approach with finite equal step size through steepest descent. # Machine Learninig :: Fastest learning by Quadratic approximation approach with finite equal step size through steepest descent. 기계학습 코드를 짜는건 최적화 문제와 관련이 있는데 이 최적화라는게 the method of Lagrange multipliers (라그랑지 승수법) 과 밀접한 관련이 있다. 보통 질문 (input) 과 정답 (output) set 를 왕창 준비한 다음 Machine Learning code (Deep Learning with Artificial Neural Networks) 로 특정 변수들 집합일 때 (처음에는 Initial guess 로 거의 무작위한 값을 넣는 경우가 많.. 더보기