여기는 내가 자주쓰는 명령어들을 정리한 곳이다. 1. mysql server 실행 mysql.server start 위는 일반적인 mysql 서버의 실행이다. 만약 비밀번호 없이 mysql 에 접근하려면 아래 명령어를 치면 된다.(비밀번호 까먹어서 한참 헤메다가 이 방법을 채택했다.) mysql.server start --skip-grant-tables 2. mysql server 종료 mysql.server stop 3. mysql server 재시작 mysql.server restart 4. mysql server 'root' 권한으로 실행 mysql -u root -p 관리자 권한으로 실행을 하는데 만약 password 를 까먹을 경우 아래처럼 하면 된다. 4.1. server 중지 4.2. mys..
독해는 어휘와 오답 분석이 중요하다. 1. 지문의 모르는 단어를 정리한다. 2. 주어동사 찾기, 접속사 끊기를 하며, 동사중심의 해석하기. 3. 틀린 지문은 keyword를 따라 읽어 본다. (주제문 / topic + keyword) 4. 정답의 근거 문장을 찾아 본다. 5. 오답이었던 보기의 오답포인트를 표시한다. 텝스는 어휘가 어려운 시험이다. 텝스 논리독해는 언급 기준의 출제를 의미한다.
0. 이 글의 작성 이유 기존에 linux 기반 서버에서 백엔드 테스트를 진행할 때 npx nodemon src 같은 명령어로 실행을 자주 했다. 위의 명령어는 nodemon 이라는 모듈로 실행하는 건데 nodemon 에서 지정한 확장자에 수정이 발생하면 자동으로 refresh 해 주는 기능이다. 내가 주로 서버 작업을 할 때 ssh 로 터미널 연결과 vscode 연결을 한 뒤 작업을 진행하는데 이 때 내가 npx nodemon 을 끄는 것을 깜빡하고 컴퓨터를 닫았을 때 nodemon 이 백그라운드로 넘어가는 경우가 많이 발생했다. 백그라운드로 넘어간 nodemon 을 없애기 위해 이 글을 작성한다. 1. 포트확인 모든 포트 확인 netstat -nap 2. 현재 listen 중인 포트 확인(활성화되어 ..
1. np.arange numpy.arange(, , ) start : 시작점(생략시 0으로 설정됨) end : 끝점 stepSize : 다음 점의 간격 2. np.arange 와 np.range 의 차이 np.range 는 정수 step 만 지원. np.arange 는 실수 step 도 지원.
1. mysql workbench 설치 https://velog.io/@zdevowl/MySQL-Workbench-%EC%84%A4%EC%B9%98 위의 사이트에서 자신의 운영체제에 맞춰서 설치한다. 2. 외부접근을 위한 mysql db에 할당된 포트 개방(필자 OS : ubuntu 18.04) * 데이터베이스 역시 서버처럼 1개의 포트를 점유한다. (보통 mysql 의 경우 3306 으로 설정되는데 개발과정에서는 크게 상관없지만 만약 서비스를 개방하는 경우에는 포트번호를 바꾸는 것을 추천한다.) * linux 포트를 개방하는 이유는 workbench 에서 원격으로 작업을 하려면 db 에서 열린 포트로 직접접근하게 되는데 이를 위해서 linux 에서 mysql에게 할당한 포트를 개방해야 한다. * 또한 ..
위의 문제는 브루트포스로 풀려고 하면 무조건 시간초과가 뜬다. 마지막 해는 M 과 N 의 LCM 이다. M 과 N 이 소수라면 그 크기는 대략적으로 40000 * 40000 정도가 되니 이는 1초이상의 결과가 나온다. 따라서 다른 방법을 생각해 봐야 한다. 핵심 : 1. 위 문제에서 우리가 구하고자 하는 년도를 k 로 둔다. 2. (k - x) % M == 0, (k - y) % N == 0 이다. (위의 2번의 유도는 아래의 사진을 첨부한다.) 3. k 를 M 만큼 증가시키면 그 나머지는 계속 x 를 유지한다.(k % M == x 일 때 (k + M) % M == x 이다) 위의 3번 방식으로 지속적으로 k 를 M 만큼 증가시키면 LCM(M, N) / M 정도의 big O 를 가지므로 시간제한에 안걸릴..
현재 Warping Residual Based Image Stitching for Large Parallax 논문 구현을 하고 있는데 이를 위해 공부해야 할 사항이나 의문점들을 남기는 포스트이다. 1. centroid of Superpixel : https://stackoverflow.com/questions/49979931/how-to-find-each-slic-superpixels-centroid-in-python How to find each SLIC superpixel's centroid in python? newbie here! I'm working with python plus opencv and skimage packages. I've segmented an image in superpixe..
이 글에서는 image stitching 논문을 읽으면서 많이 나오는 단어들을 정리한다. 1. image alignment 특정 이미지들을 정렬하는 것이다. 사진을 찍는 각도나 방향이 다를 경우 사진이 틀어지는 경우가 있는데 이를 보정하는 것을 image alignment 라고 한다. 이 기술은 image stitching 을 할 때 2개의 이미지의 각도를 조절하는 역할을 한다. 2. homography 특정한 이미지를 원근투영 관계를 표현해 주는 과정을 말한다. 즉 2대의 카메라가 하나의 피사체를 다른 방향으로 찍었을 때 그 2개의 이미지의 위치관계를 표현할 수 있게 해 준다. homography 와 projective 는 같은 개념이다. 다른 여러가지 변환에 관한 내용은 아래 링크에서 확인하면 된다..
소스구동 환경 os : ubuntu 16.04 python 3.6 tensorflow 1.13.1 1. 논문 링크 : https://arxiv.org/pdf/2203.03831.pdf 2. 소스 github link : https://github.com/nie-lang/DeepRectangling GitHub - nie-lang/DeepRectangling: CVPR2022 (Oral) - Deep Rectangling for Image Stitching: A Learning Baseline CVPR2022 (Oral) - Deep Rectangling for Image Stitching: A Learning Baseline - GitHub - nie-lang/DeepRectangling: CVPR202..
소스구동 환경 os : ubuntu 16.04 python 3.6 tensorflow 1.13.1 docker 로 위의 소스를 돌려 보려고 할 때 기존에 docker 에서 제공하는 공식 이미지 패키지는 Tensorflow 1.13.1 과 python 3.5 가 한 세트로 묶여 있어서 주의해야 함. 1. 논문 링크 : https://arxiv.org/pdf/2106.12859v1.pdf 2. 소스 github link : https://github.com/nie-lang/UnsupervisedDeepImageStitching GitHub - nie-lang/UnsupervisedDeepImageStitching: TIP2021 - Unsupervised deep image stitching network ..
docker 에서 환경설정을 하는 것이 편하지만 아직 docker 에 대한 공부가 부족해서 conda 를 먼저 설정해 보기로 했다. conda 의 기본적인 사용법은 아래의 링크에 설명되어 있다. https://jeahun10717.tistory.com/23 conda 가상환경 설정 OS : ubuntu 1. 아나콘다 설치 pip install conda 2. 가상환경 생성 conda create -n 가상환경이름 python=python버전 3. 가상환경 확인 conda info --envs 4. 가상환경 사용 conda activate 가상환경이름 5. 가상.. jeahun10717.tistory.com 1. tensorflow 설치 conda install tensorflow-gpu=1.3.1 2. ..
1. config 파일 생성 jupyter notebook --generate-config # jupyter notebook jupyter lab --generate-config # jupyter lab위의 파일을 생성하면 notebook 일경우 /home/{username}/.jupyter/jupyter\_notebook\_config.py 이 lab 일 경우 /home/{username}/.jupyter/jupyter\_lab\_config.py 이 생성된다. 2. config 파일 설정 외부 접속 허용하기 c.NotebookApp.allow_origin = '*' # jupyter notebook c.ServerApp.allow_origin = '*' # jupyter ..
OS : ubuntu20.04 --> Docker Ubuntu20.04, nvidia/cuda image 1. 아나콘다 설치 pip install conda 2. 가상환경 생성 conda create -n 가상환경이름 python=python버전 3. 가상환경 확인 conda info --envs 4. 가상환경 사용 conda activate 가상환경이름 5. 가상환경 해제(기존 base 환경으로) conda deactivate 6. conda library 설치 # 현재의 터미널 상태가 내가 원하는 conda 환경일 때 conda install 라이브러리이름 # conda 가상환경으로 들어가지 않은 base 환경일 때 conda install -n 가상환경이름 라이브러리이름 7. 라이브러리 설치 확인 ..
문제링크 : https://www.acmicpc.net/problem/11286 1. 입력 관련 힙과 관련된 문제였다. 힙을 직접 구현하지 않고 힙의 구조를 가지고 있는 priority queue 를 사용했다. 절대값이 가장 작다는 것은 0과 가장 가깝다는 것이다. 즉 -1 과 3 을 비교 했을 때 -1 이 더 가깝다는 것이다. 즉 가장 0과 가까운 수를 결정할 때 부호는 영향을 주지 않는다. 하지만 출력을 할 때는 부호를 신경써야 하기 떄문에 아래와 같은 pair 를 둔다. pair 소스는 아래와 같다. #include #include using namespace std; int N, inp; priority_queue pq; pair pqTop; int main(void){ ios_base::sync..
현재 deep learning 을 테스트 하는 컴퓨터가 리눅스인데 리눅스에서 jupyter lab 을 열어서 사용하는데 jupyter lab 이 불편하기도 하고 익숙하지가 않아서 atom 으로 원격 설정을 했다. atom 에서 remote ftp 를 이용해서 원격을 설정했는데 터미널을 사용해야 해서 원격 터미널 연결에 대해 정리하겠다. atom remote ftp 연결이 궁금하면 이 링크를 타고 가면 된다 https://jeahun10717.tistory.com/20 remote ftp 설정 리눅스에서 딥러닝을 공부하게 되면서 git 에서 일일히 동기화하기 귀찮아서 직접 linux 컴퓨터에 접근하여 바로바로 저장하기 위한 설정이다. 1. atom : atom 은 IDE 인데 진짜 이건 remote ftp..
리눅스에서 딥러닝을 공부하게 되면서 git 에서 일일히 동기화하기 귀찮아서 직접 linux 컴퓨터에 접근하여 바로바로 저장하기 위한 설정이다. 1. atom : atom 은 IDE 인데 진짜 이건 remote ftp 때문에 사용하게 됐다(필자는 vscode 를 더 선호함) 2. remote ftp package : atom 의 확장 package 이다. 3. 일반적인 ftp 로 설정을 하려 했으나 보안관련 문제로 sftp 로 설정하기로 했다. sftp 를 사용하려면 open-ssh 의 비밀키, 공개키가 요구된다. * remote ftp 설정 1. host : 내가 접속할 컴퓨터의 ip 2. port : 내가 접속할 컴퓨터의 ssh 포트 번호 (디폴트는 22 이며 $ vi /etc/ssh/sshd_conf..
문제 링크 : https://www.acmicpc.net/problem/1931 문제 핵심 : 정렬 후 그리디 1. 문제를 처음에 풀 때 들어올 수 있는 최대 크기가 100,000 이었으므로 n^2 으로는 못풀어서 브루트포스는 배제했다. 2. 따라서 n log n 이나 n 으로 풀 수 있는지 확인했다. 3. input case 를 적절하게 정렬을 하면 시간을 충분히 줄일 수 있을 것 같았다. (사실 이것도 긴가민가 했음) 정렬의 기준 : input case 에서 들어오는 start, end 값들을 pair vector 로 표현했다. 문제에서 start 와 end 중에서 end 가 중요하다는 것을 깨달았다. end 를 기준으로 오름차순 정렬을 하게 되면 앞에서부터 차례대로 순회하면서 조건을 만족하면 회의 ..
기본적인 BFS 문제였다. 처음에 BFS 로 구현해서 바로 제출을 했는데 틀렸다. 처음에 depth 라는 변수를 두고 그 while 문 들어가는 곳에 depth ++ 로 BFS 의 깊이를 측정하려 했다. 그렇게 되면 depth 가 증가하기만 하고 q 에서 pop 되는 지점으로 depth 를 돌려야 하는데 그렇게 하지 못했다. 아래 소스는 내가 틀렸던 소스이다. #include #include #include #include #include using namespace std; int M, N, A, B; int friendArr[102][102]; int check[102]; int kbArr[102]; int BFS(int start, int friendNum){ queue q; check[start]..
기본적인 DP 문제였다. 처음에는 1차원 dp 로 생각하려 했다. 그런데 i 번째로 올 수 있는 경우의 수가 많아서 1차원 dp 는 안된다는 걸 알았다. 그래서 0, 1, 2 로 dp 를 나눠서 생각하기로 했다. x == 0 : 0 은 x 번째 계단을 선택하지 않는 것 x == 1 : 1 은 x 번째 계단을 선택하고 x-1 은 선택하지 않는 것 x == 2 : 2 는 x 번째, x-1 번째 계단을 선택하고 x-2 번째 계단은 선택하지 않는 것 https://www.acmicpc.net/problem/2579 #include #include #include #include #include #include #include using namespace std; int dp[3][301]; int stair[3..