Reco Everything you wanna value. 자세히보기

[IT|Programming]/Algorithm|Database 15

한글 초성검색 in Javascript

# 한글 초성검색 in Javascript한글의 위대함을 한껏 활용하기 위해 초성검색을 구현해 봅시다.문서 오른쪽 위의 Fuzzy search 버튼을 누르시면, 초성검색 (엄밀히는 fuzzy search 이지만) 구현이 어떻게 되어 있는지 아실 수 있습니다.## TOC## 한글 Encoding in Javascript자바스크립트의 문자열은 내부적으로 16비트 유니코드로 처리 .유니코드에서 한글은 코드값 OxAC00부터 시작하며, 초성 19 / 중성 21 / 종성 28 개의 조합 순으로 코드가 배열. 유니코드에 대한 공식 설명은 에서...초성, 중성, 종성의 자모 순서는 에서... (Hangul Syllables 부분에 한글 음절에 대한 유니코드표)Hangul Array초성 "ㄱ", "ㄲ", "ㄴ",..

MySQL SQLException in Ubuntu, Linux

# MySQL SQLException in Ubuntu, Linux우분투, 리눅스에서 MySQL 을 써서 서버를 돌릴일이 생겼는데, 문제가 생긴걸 공유하려고 글 작성.윈도우즈나 맥에서는 MySQL 의 Table name (테이블 이름) 이 대소문자를 구분 안했는데, 우분투/리눅스에서는 대소문자를 기본적으로 구분한다고 함.그래서 초기에 설치할때부터 대소문자를 무시하도록 설정되도록 설치해야 함.이거 때문에 MySQL DB Server 에 접속은 됐는데, 특정 Table 을 찾을 수 없다는 등의 SQLException 이 계속 났음.## PH2025-04-04 : First posting.## TOC## MySQL의 Global Variables 중에는 lower_case_table_names 라는 속성이 있..

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 로 거의 무작위한 값을 넣는 경우가 많..

기계 학습 (Machine Learning - Deep Learning)

# 기계 학습 (Machine Learning - Deep Learning) 공부 및 정리 중. 우선 ref 들만 정리식으로. "Machine learning is the science of getting computers to act without being explicitly programmed." 라고 하는데... not explicitly programmed 가 어떤 의미인지 천천히 살펴봅시다. 어차피 프로그래밍 된 대로만 돌아갈텐데 explicitly 가 뭔 차이인지는... 아마도 데이터를 쌓으면서 학습 (learning) 을 하고 그 학습 데이터를 바탕으로 돌아가는 알고리즘을 말하는듯? 즉, 학습하는 알고리즘 (Machine이니 학습한다기 보단 데이터를 분석해서 저장한다는 개념, 데이터가 더 ..