write POST

Manage

Tistory와 GitPage

gitpage 를 쓰면서 markdown 편집기와 터미널 창이 따로 존재한다는 불편함 때문에 티스토리를 고려하게 되었다. 티스토리 블로그를 개설하고 테마도 다 만들어 놨는데 예상치 못한 어려움이 발생했다. 티스토리도 글쓰기가 그렇게 편하지 않다는 것이다. markdown 편집기가 손에 너무 익은 탓인지 typora (markdown 편집 툴) 이 사용하기 제일 나은 것 같다. tab을 누르는데 왜 태그입력으로 이동하는지 모르겠다. 테마 만들다가 실수한건가..? 또 notion 글을 복붙하면 페이지에 똑같이 나타날 줄 알았는데 그것도 아니었다.. notion 에 글을 쓰고 블로그로 글을 복사하려 했는데, markdown에 글을 쓰고 notion과 블로그에 글을 복사해야겠다. 뭘 써야할지 아직도 모르겠다..

[Node.js] 1. About Node.js

1. Node.js Node.js: open-source, cross-platform 자바스크립트 런타임 환경 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 구글 크롬 V8 엔진은 타 자바스크립트 엔진보다 빠르고 오픈소스로 공개되었다. runtime (런타임)이란 특정 언어로 만든 프로그램들을 실행할 수 있는 환경 브라우저 또한 자바스크립트 런타임의 하나 자바스크립트 프로그램을 브라우저 밖에서 실행되게 함 이전에도 브라우저 외의 환경에서 자바스크립트를 실행하려는 시도가 있었느나, 속도가 느리다는 문제 때문에 좋은 반응을 보이지 못했다. Node.js 는 Single thread 애플리케이션이며, event-driven, non-bloking 모델을 통해 concurrency (동시성) 을 지..

[Dev env] Jupyter notebook 환경 설치

1. Install (설치) Anaconda 아나콘다는 과학계산을 위한 Python / R 프로그래밍 언어 패키지 배포판이다. 아래 링크를 통해 다운로드가 가능하다. Anaconda Installer https://www.anaconda.com/distribution/ Windows https://docs.anaconda.com/anaconda/install/windows/ macOS https://docs.anaconda.com/anaconda/install/mac-os/ Advanced Installation Options 2. Setting (config) 아래 명령어를 실행하여 jupyter notebook 설정을 위한 파일을 생성할 수 있다. jupyter notebook --generate-c..

[Web] button 에 링크 걸기

버튼 링크 걸기 버튼에 링크를 걸 때는 대신 onclick = "location.href='ULR'" 속성을 사용한다. 기본 형식 구글로 이동

[C/C++] vector

1. vector vector는 C++ STL (Standard Template Library)에 정의되어 있는 크기가 변경될 수 있는 배열을 나타내는 시퀀스 컨테이너이다. heap 메모리 공간에 생성되어 크기가 동적할당 되며 데이터 타입을 자유롭게 지정할 수 있다. 벡터의 크기는 동적할당 되는데, 벡터는 내부적으로 새로운 요소가 삽입 될 때 크기를 늘리기 위해 크기가 재할당 될 수 있다. 재할당을 하면 새로운 배열에 이전의 배열을 이동시켜야 하는 작업을 추가적으로 해야하므로 시간이 많이 들게 된다. 때문에 벡터는 재할당 되는 것을 최대한 줄이기 위해 약간의 추가 메모리 공간을 더 차지한다. 2. Member functions 2.1. Generator (생성) vector _vector(100); //..

[C/C++] 비트 연산자

1. 비트 연산자 이름 연산자 사용 방법 설명 AND & A & B A, B가 모두 1인 경우 1 OR | A | B A 또는 B 둘 중 하나가 1인 경우 1 XOR ^ A ^ B A, B 가 서로 다른 경우 1 좌측 시프트 B A의 비트를 B만큼 오른쪽으로 시프트 ex) 0010 >> 1 = 0001 NOT ~ ~A A의 비트를 반전 ex) ~(0101) = 1010 2. 유용한 정보 2.1. 시프트 연산자는 음수에 사용하면 안된다 시프트 연산자는 음수에 사용하면 비트 오버플로우가 발생하여 원하는 것과 다른 결과가 발생한다. 피연산자가 음수이면 정의되지 않은 동작이 발생한다. 같은 이유로 숫자가 정수 크기보다 많이 이동하면 정의되지 않은 동작이 발생한다. 2.2. XOR bit operator 비트 X..

[C/C++] 문자열을 숫자로 변환

1. sstringstream() code #include #include // for stringstream function using namespace std; int main(){ string s = "12345"; stringstream str(s); // object from the class stringstream int n = 0; str >> n; cout

[C/C++] C와 C++의 차이점

1. C와 C++의 주요 차이점 Cpp은 일종의 C 상위 집합으로 몇가지 예외를 제외한 대부분의 C 프로그램은 Cpp에서도 동작한다. C는 절차적 프로그래밍 언어이지만, C++은 절차적 프로그래밍과 객체 지향 프로그래밍을 모두 지원한다. C++은 언어 수준에서 예외 처리를 지원한다. C 예외처리는 전통적 방식인 if-else 스타일로 수행된다. C++ 는 참조를 지원하나 C는 지원하지 않는다. 1.1. 참조와 포인터의 차이점 참조는 포인터보다 할 수 있는 것이 더 적다. 하지만 프로그래밍에서 이렇게 제한이 되어있다는 것은 더 안전하고 사용이 쉽다는 것을 의미한다. 1.2. 참조는 포인터보다 기능이 적다 참조는 재 참조를 할 수 없다. 즉 한번 다른 객체를 참조하게 되면 나중에 다른 객체를 참조하도록 만들..

[C/C++] Iterators (반복자)

1. loop 활용 1.1. look over all elements (int i=0; i< n; i++) 방식과 같이 모든 요소를 살펴볼 때 사용한다. #include #include vector vec{0, 1, 2, 3, 4}; for(auto it = begin(vec); it != end(vec); it++){ // Access element using dereference operator std::cout

[C/C++] fmod: 부동 소수점 값에 대한 나머지 연산

1. 부동 소수점 값에 대한 나머지 연산 c, c++ 에서는 부동 소수점 값에 대해서 % 연산자를 사용하면 invalid operands to binary expression 이라는 오류가 발생한다. 2. 해결 방안 2.1. 자릿수 높이기 부동 소수점 값에 100, 1000 등의 값을 곱하여 반올림 한 후 (필요한 만큼), % 연산자를 사용한다. 2.2. fmod 함수 사용 fmod 함수는 math.h 라이브러리에 정의되어있다. double fmod(double x, double y) "x/y 의 부동 소수점 나머지"를 리턴한다. y == 0 이거나 x/y로 인해 오버플로우가 발생한다면 0을 리턴한다.

[Node.js] node 버전 관리: n 모듈

n 모듈 n: Node.js 버전을 관리해주는 플러그인 다양한 버전 (최신, 안정, LTS, 특정 버전)을 선택하여 설치가 가능하다. install n # n모듈 설치 $ npm install -g n # node 안정버전 설치 $ n stable # 노드버전 확인 $ node -v v11.10.0 # lts버전 설치 $ n lts # 특정버전 설치 ex> $ n $ n 10.0.0 # 버전삭제 $ n rm 10.0.0 npm upgrade //npm 버전 확인 $ npm -v 3.1.0 $ sudo npm install -g npm /usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npx -> /usr/..

Binarized Neural Networks: Training Neural Networks with Weights and Activations Constrained to +1 or -1 (1)

Abstract BNNs (Binarized Neural Networks) neural networks with binary wrights and activations at run-time at trining-time the binary weights and activations are userd for computing the gradients 방법 forward pass 동안, 메모리 사이즈와 접근을 줄이고, 대부분의 산술 연산을 비트 연산으로 대체함으로써 전력 효율성을 개선할 수 있다. 검증 two sets of experiments on Torch7 and Theano frameworks 검증 결과 MNIST, CIFAR-10, SVHN datasets 에서 매우 좋은 결과를 얻었다. binary..

[Git] Git 기초

1. git 최초 설정 사용자 정보 설정 git을 설치하고 가장 먼저 해야 하는 것은 사용자 이름/이메일 주소를 설정하는 것이며, 아래 명령어를 통해 설정 가능하다. $ git config --global user.name "USERNAME" $ git config --global user.email USER_EMAIL@example.com 편집기 설정 git 에서 사용할 텍스트 편집기 설정할 수 있다. git은 기본적으로 시스템의 기본 편집기를 사용하나 명령어를 통해 변경 가능하다. $ git config --global core.editor emacs 설정 확인 git config --list 모든 설정 값을 확인 git config 특정 key 에 대한 설정 값 확인 2. Git 저장소 만들기 gi..

[Git] Git branch 이름 변경하기

원격 브랜치 (Remote Branch) 이름 변경 git에서 원격 브랜치 이름 변경 방식 새로운 브랜치를 생성한 뒤에 이전 것을 삭제 순서 새로운 branch 이름으로 push 진행 이전 원격 branch를 삭제 remote branch 이름 변경 명령어 SRC 바꾸고자 하는 branch 이름 (이전 branch 이름) DEST 새로운 branch 이름 push 하려는 branch로 checkout (전환) $ git checkout DEST push 진행 $ git push origin -u DEST 해당 명령어를 실행한 뒤에 repository를 확인해보면 기존 branch가 그대로 존재하고, 새로운 branch가 생성된 것을 확인할 수 있음 이전 branch 삭제 $ git push origin ..

[AI, ML] epoch, batch size, iteration

데이터 세분화를 통한 학습 효율 학습 과정 중 최적화 (optimization) 는 여러 번의 학습 과정을 거치며, 한 번의 학습 과정은 학습 데이터를 어떻게 나누냐에 따라 세분화 된다. epoch 전체 데이터 셋에 대하여 한 번 학습을 완료 인공신경망 기본 알고리즘: 역전파 알고리즘 (forward pass + backward pass) epoch 는 전체 데이터 셋에 대하여 forward pass 와 backward pass 가 완료된 상태 epoch = 30 으로 설정하여 학습 → 전체 데이터를 30 번 사용하여 학습 epoch 가 너무 큼 → overfitting epoch 가 너무 작음 → underfitting iteration / batch size iteration 한 번의 학습 과정 (e..

[AI, ML] K-fold Cross Validation

K-fold Cross Validation 데이터의 수가 적은 경우에는 데이터의 일부인 검증 데이터의 수도 적어짐 검증 데이터의 수가 적으면 검증 성능의 신뢰도가 하락함 검증 데이터의 수를 증가시키면 학습용 데이터의 수가 적어짐 → K-폴드 교차 검증을 통해 해결 Validation Set validation set 모델의 성능을 평가하기 위해서 사용 training set 에 대한 성능만 평가하며 모델을 학습시키면, 모델이 training set 에 overfitting 될 수 있음 시험을 준비하기 위해 한 문제집만 열심히 풀면 시험을 망침 다양한 문제를 많이 풀어보아야 함 K-fold Cross Validation Validation Set 이 있으면 완벽한가? 크기가 작은 데이터 셋에서 성능 평가의..

[AI, ML] Data Rescaling (표준화와 정규화)

표준화 (Standardization) 데이터가 평균으로부터 얼마나 떨어져 있는지 나타내는 값 $$z = \frac{x - \bar{x}}{\sigma}$$ 특정 범위를 벗어난 데이터는 outlier 로 간주하고 제거함 이상치(outlier)를 잘 처리하지만, 정확히 동일한 척도로 정규화 된 데이터를 생성하지는 않는다. 정규화 (Normalization) 데이터의 상태적 크기에 대한 영향을 줄이기 위해 데이터 범위를 0~1로 변환 $$X_{new} = \frac{x-x_{min}}{x_{max}-x_{min}}$$ min-max 스케일링 모든 feature들의 스케일이 동일하지만, 이상치(outlier)를 잘 처리하지 못한다 데이터 분석 적용 (요구사항: outlier 제거) 데이터 표준화를 통해 out..

[Node.js error] npm install error

npm install error 패키지 설치 중에 아래와 같은 오류가 발생 > npm init > npm install nconf npm WARN node@1.0.0 No description npm WARN node@1.0.0 No repository field. npm ERR! code ENOENT npm ERR! syscall rename npm ERR! path C:\Users\workspace\node_modules\camelcase npm ERR! dest C:\Users\workspace\node_modules\.camelcase.DELETE npm ERR! errno -4058 npm ERR! enoent ENOENT: no such file or directory, rename &#39;..

[WSL error] Hot Reloading is not workign on WSL

문제 상황 WSL2 환경에서 hot-reloading 이 안되는 오류가 발생하였다. 코드를 수정하면 그에 따라 웹이 바로 변경되어야 하는데 새로고침을 해도 안되고, 서버를 껏다가 다시 실행 시켜야 변경사항이 반영이 되어있다. 해결 방법 요약\ windows 파일 경로가 아니라, Linux 파일 경로에서 프로젝트 생성 설명\ C:\\Users\\USERNAME\\WORKSPACE\\.. 와 같은 윈도우 파일 경로가 아니라, /home/USERNAME/..와 같은 Linux 파일 경로 내에서 작업을 해야 한다. Windows Terminal 에서 설치한 리눅스 커널을 키거나, vs code 에서 WSL SSH 접속 확장 프로그램을 설치하면 Linux 파일 경로에서 작업을 할 수 있다. 실행할 때의 속도도 훨..

[Git Error] Remote origin already exists

문제 상황 git remote add origin 명령어 실행시 아래와 같은 오류 발생 $ git remote add origin https://github.com/.. fatal: remote origin already exists. 해결 방법 git remote add 대신 git remote set 명령어를 실행 $ git remote set-url origin https://github.com/.. 원인 저장소를 복제 clone 한 후에 자신의 원격 서버를 추가하려고 할 때 해당 오류가 발생 저장소를 복제했을 때 Remote origin 이 같이 복사됨 origin이 일반적인 규칙이므로 이미 origin이라는 이름으로 구성된 원격이 있을 가능성이 높음 summary repository를 clone..

[Git error] ![rejected] Note about fast-forwards

문제 상황 git push 명령어 실행시 아래와 같은 오류 발생 $ git push To https://github.com/... ! [rejected] develop -> develop (non-fast-forward) error: failed to push some refs to 'https://github.com/...' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the 'Note about fa..

[Node.js error] npm ERR! code ENOSELF

문제상황 패키지 설치를 위해 npm install명령어를 사용하였을 때 아래와 같은 오류가 발생하였다. npm ERR! code ENOSELF npm ERR! Refusing to install package with name "PACKAGE_NAME" under a package npm ERR! also called "PACKAGE_NAME". Did you name your project the same npm ERR! as the dependency you&#39;re installing? npm ERR! 원인 npm install 을 통해 설치하려는 패키지와 내 프로젝트 디렉토리의 이름이 같아서 발생하는 오류이다. 해결 방법 프로젝트 디렉토리의 이름을 변경한다. package.json 의 프로젝트..

[Git error] fatal: 'origin' dose not appear to be a git repository

문제 상황 git push를 하던중에 오류가 발생하며 push 를 실패하였다. fatal: 'origin' does not appear to be a git repository fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 해결 1. origin 이 설정되었는지 확인 ```shell $git remote -v ``` 해당 명령어를 실행하면 프로젝트의 모든 push/fetch remote 가 표시된다. 만약 출력이 없이 반환된다면, 아래 명령어로 누락된 remote 를 추가하고 push 를 진행하면 된다. (목차 4와 일치) ```..

[devenv python] ubuntu python 기본 실행버전 변경

우분투에서 python 을 실행하면 기본 실행 버전이 python2.x로 설정되어 있는 것을 확인할 수 있다. 파이썬을 실행하는 방법은 아래와 같다. # 시스템 설정 버전으로 실행 $ python filename.py # python 2.x 로 실행 $ python2 filename.py # python 3.x 로 실행 $ python3 filename.py python 버전 변경 python 기본 버전을 변경하기 위해서는 아래 명령어를 입력하면 된다. $ sudo update-alternatives --config python 만약 update-alternatives: error: no alternatives for python 와 같은 오류가 발생한다면 아래 명령어를 입력하면 된다. 참고로 pytho..

WSL 2 (Windows Subsystem for Linux 2) Install

들어가기 전에 Windows 10을 업데이트하고 진행하는 것을 추천드립니다. WSL 2는 Windows 10, 버전 1903, 빌드 18362 이상에서만 사용할 수 있습니다. cmd 창에 ver 을 입력하여 Windows 버전을 확인하세요. 윈도우 터미널을 설치하는 것을 추천드립니다. 개발할 때는 vs code 의 터미널을 더 사용하기는 하지만 기존에 설치된 powershell 이나 cmd 보다 훨씬 편합니다. 1. What is WSL? WSL 은 Windows 10 에서 경량 가상화 기술을 사용하여 리눅스 커널을 구동할 수 있도록 해주는 기능이다. WSL 기능을 사용하면 Windows 10 OS 에서 Bash 및 Ubuntu Linux 파일을 실행 가능하다. WSL은 WSL1 에서 WSL2 로 업데이..

[Algorithm, BOJ] 1003: 피보나치 (fibonacci) 함수

problem link: https://www.acmicpc.net/problem/1003 1003: 피보나치 (fibonacci) 함수 피보나치 함수 문제는 DP (Dynamic Programming, 동적 계획법) 로 풀지 않으면 시간 초과 오류가 발생한다. 이전 문제의 해를 기록하여 현재 문제의 해를 구할 때 사용하여 시간을 줄일 수 있다. 피보나치 함수에 대한 수도코드(?) 는 아래와 같은데 base case (n=0, n=1)을 제외하고는 fibo(n‐1) + fibo(n‐2) 로 해를 구하는 것을 확인할 수 있다. fibo(n) { if (n == 0) return 0; else if (n == 1) return 1; else return fibo(n‐1) + fibo(n‐2); } 즉 fib..

[summary] Git command

내가 보려고 만드는 깃 커맨드 계속해서 업데이트 예정 저장소 (Repository) 설정 초기 설정 $ git clone REPOSITORY_URL $ git init $ git remote add origin REPOSITORY_URL $ cd REPOSITORY_NAME REPOSITORY_NAME/ $ git add . REPOSITORY_NAME/ $ git commit -m "commit something" REPOSITORY_NAME/ $ git push -u origin master 브랜치 (Branch) 브랜치 변경 (change branch) git checkout BRANCH_NAME 브랜치 이름 변경 (change branch name) 변경하고자 하는 branch name (이전 브..

[summary] LaTeX 수식 정리

Tistory LaTeX 수식 작성 티스토리 스킨 편집에서 html 의 head 부분에 아래 코드를 입력한다. 참고 사진 LaTeX 수식 경우 나누기 $$ x^b = Sign(x) = \begin{cases} +1 &if \quad{x \ge 0},\\ -1 &otherwise \end{cases} $$ 괄호 쓰기 기능 문법 모양 (\frac{1}{2}) $(\frac{1}{2})$ \left (\frac{1}{2}\right) $\left (\frac{1}{2}\right)$ 빈칸 조정 TeX는 빈칸의 크기를 자동으로 조정하나, 특별히 조정이 필요한 경우는 다음을 사용하면 된다. 기능 문법 모양 double quad space a \qquad b $a \qquad b$ quad space a \quad..

[summary] vs code 단축키

단축키 설명 Ctrl+x 행 삭제 Alt++↑ 현재 행을 위에 복사 Alt++↓ 현재 행을 아래로 복사 Alt+↑ 현재 행을 위로 이동 Alt+↓ 현재 행을 아래로 이동 Ctrl+Enter 아래에 행을 삽입하고 이동하기 Ctrl++` 터미널 열기

[summary] C/C++ tips

1. 출력 속도 getchar_unlocked() 알고리즘 문제 사이트에서 문제를 풀었는데 시간초과로 실패가 나온 적이 있었다. 해당 문제는 cout 을 printf로 교체하니까 해결되었다. getchar_unlocked()는 printf보다 빠르다. cout