mysql 에서 실행한 쿼리 내역을 로그로 남기기 위해선 추가 적인 설정이 필요합니다. /etc/my.cnf 에 다음 설정을 추가합니다. ... [mysqld] ... general_log_file = /var/log/mysql/general.log # log 파일 경로는 변경가능합니다. general_log = 1 ... 위와 같이 설정하면 실행된 쿼리 내역들이 /var/log/general.log 에 계속 쌓입니다. 로그파일 관리 이 로그 파일은 크기가 계속 늘어나기 때문에 관리가 필요합니다. 저는 crontab 에 매일 새벽 3시에 돌아가는 예약 작업을 등록해서 관리하였습니다. 다음 명령어를 shell 에서 실행합니다. $ crontab -e # 로그파일명 뒤에 날짜를 붙혀서 백업하고, 기존의 로그..
계정(지갑) 만들기 이더리움 블록체인 네트워크에서 일어나는 모든 행위들은 계정으로부터 이뤄지는 트랜잭션에 의해 실행됩니다. 이 트랜잭션을 발생시키려면 계정이 필요하고 그 계정은 MetaMask, Mist browser, MEW(MyEtherWallet) 등으로 EOA(Externally Owned Accounts: 외부 소유 계정)을 간단히 생성가능합니다. 생성된 계정은 Main Network, Test Network 둘다 사용 가능합니다. 저는 MetaMask 를 사용합니다. 참고 - 각 계정은 PrivateKey가 있고, 이것을 비밀번호로 암호화하여 Keystore File 에 저장해서 사용합니다. 이키 하나로 모든 행위를 할 수 있으므로 Keystore File 을 사용하시는 것을 권장합니다. Te..
로그 파일 실시간 모니터링 window 에서 linux 의 tail 명령어 처럼 log 를 monitor 하는 방법이 있습니다. powershell 에서 아래와 같은 명령어로 tail 의 기능을 사용할 수 있습니다. Get-Content [로그파일] -Wait -Tail 1000 폴더 링크 linux 의 symbolic link 의 기능을 window 의 바로가기로 따라할 수는 있지만 개발할 때 경로 지정등에는 사용할 수 없습니다. 아래와 같은 명령어로 link를 만들 수 있습니다. mklink /d "C:\WINDOWS\system32\config\systemprofile\.m2" "C:\Users\HiNTB\.m2"파일 삭제 다음 명령어를 실행하면 현재 위치의 폴더 내부를 모두 검색하여 파일 명에 2..
Wordpress로 개발한 HTML 화면에서 비동기적으로 DB 서버와 통신하려면 restful api가 필요합니다. 이를 위해 저희가 필요로하는 데이터를 반환하는 endpoint를 php로 개발해야합니다. 워드프레스에서 php를 개발하는 여러가지 방법이 있습니다만 워드프레스에서는 플러그인이나 테마 파일을 직접 파일 수정하는 것을 권장하지 않습니다. 이유는 차후에 플러그인 업데이트를 대비와 잘못된 소스코드 수정을 막기 위해서 입니다. functions.php 에 사용자 정의 함수를 추가하여 사용하는 것을 권장합니다. 여기서 restful endpoint를 추가할 수 있습니다. 한가지 단점은 wp_get_current_user() 을 사용하여 로그인한 사용자 정보를 가져오지 못합니다. 사용자 인증을 사용하려..
OTP(One-Time Password) 란 보안 강화를 목적으로 사용자 비밀번호 에 추가적인 인증 수단으로 많이 사용됩니다. Google OTP 는 Time based OTP 를 사용하여, 30초마다 바뀌는 6자리의 숫자로된 비밀번호가 생성됩니다. 이OTP 코드는 비밀키(base32 encoded)를 통해 생성됩니다. 이 비밀키는 사용자 스마트폰과 데이터베이스에 저장되어 있어야합니다. 그리고 인증하는 순간에 사용자 스마트폰과 웹사이트에서 이 비밀키로 각각 6자리 숫자를 생성하고 같은지를 확인하여 인증 성공여부를 결정합니다. MFZWIZDBONSGC5TDMN5HQY32PBRXU6DD # base32 로 인코딩된 비밀키 예시입니다. 사용자별로 위와 같은 복잡한 키를 생성하고, 스마트폰에 저장하여야합니다. ..
linux에서 container 간 격리 하여 가상화 비슷한 환경을 구성한 도구를 Docker 라고 합니다. https://hub.docker.com/ 에서 repository 들을 찾아볼 수 있습니다. Docker Hub 도커에는 컨테이너 실행에 필요한 이미지를 공유할 저장소가 있는데 registry 라 부릅니다. docker hub 는 모두에게 공개된 공식 registry입니다. Docker 사용법 이미지 내려받기 hub에서 찾으신 image (ubuntu, nginx, tomcat 등) 를 내려받고, 이를 여러 옵션을 사용하여 docker container에 올릴 수 있습니다. Docker hub의 image 상세 화면에서 container로 구동하는 방법 및 옵션에 대해 설명을 해줍니다. 아래는 ..
이진 트리에서는 하나의 Node 가 1개의 key(data) 와 2개의 자식 node 를 가리키는 link(left,right) 를 가지고있습니다. BST(이진 탐색 트리)는 검색, 삽입, 삭제은 평균 O(log n) 의 시간 복잡도를 가집니다. 하지만 최악의 경우 편향이진트리(구글 이미지 검색) 생성되면 최악의 효율O(n)이 발생합니다. 이를 보완하고 좌우 균형을 맞추어 탐색 효율을 목적으로 B tree라는 것을 사용합니다. 아래의 java 소스코드는 해외 블로그를 참고하였습니다. 탐색,삽입 하는 코드는 비교적 간결하고, 트리의 node 를 삭제하는 logic 은 3가지로 분류 됩니다. 삭제 node 의 자식이 없는 경우 - node 를 바로 삭제 합니다. 삭제 node 의 자식이 1개 인 경우 - 자..
유클리드 호제법 2개의 수의 최소 공약수를 계산할 때 큰 수(a)를 작은 수(b)로 나누고, 나머지(r)가 0이 아니면 나누었던 수(b)를 나머지(r)로 다시 나누고 나머지가 0이 될때까지 반복합니다. 반복 하다가 나머지가 0이 될때 나눈 수가 최소 공약수가 됩니다. 예를 들어 78696과 19332의 최대공약수를 구하면, 78696 = 19332×4 + 1368 19332 = 1368×14 + 180 1368 = 180×7 + 108 180 = 108×1 + 72 108 = 72×1 + 36 72 = 36×2 36이 최소 공배수입니다. 최대 공약수(gcd, greatest common divisor) 최대 공약수를 계산하는 여러가지 방법이 있겠지만 유클리드 호제법 을 사용하여 계산하는 것이 코드도 간결..
선형 자료구조(list)는 배열로 구현하는 방법과 여러 객체(Node) 생성하고, 포인터로 연결하여 구현하는 방법이 있습니다. 신속한 삽입과 삭제를 허용하는 순서 리스트를 유지해야 할 경우에는 후자의 방법으로 리스트를 구현하고, 이것을 연결리스트라 합니다. Node class(list의 각 항목) class Node { public int data; public Node next; Node (int data){ // 생성자 this.data = data; } Node (int data,Node next){ // 2번째 생성자 this.data = data; this.next = next; } } Node 클래스는 자기 참조(self) 형태입니다. 하나의 node 는 data 와 Node 객체를 참조하는 ..
Tree(트리) 트리는 어떤 속성을 만족하는 node(노드)와 방향 간선의 집합입니다. 또한, 하나의 노드가 root 노드를 가리키는 사이클 없는 그래프로 정의할 수 있습니다. 위키피디아 Tree Terminology(전문 용어) Root : 부모가 없는 노드(트리의 가장 상위 노드) Leaf : 차수가 0인 노드 Root-to-leaf path(루트 경로) : 루트로부터 해당 노드까지의 유일한 경로 Size of tree (트리의 크기) : 연결된 모든 node의 개수 Subtree(서브 트리) : 자식 node 가 있을 때 이 노드를 root로 하는 tree (level 이 1 줄어듭니다.) Height of tree : 최장 루트 경로의 길이 단독트리 : 노드가 1개이고 높이는 0인 트리 (NIL)..