지난달까지는 이 프로젝트를 배포할 때 nodemon을 이용해서 배포를 하였다. nodemon으로 배포하고 있을 때는 소스코드를 수정한 결과물을 자동으로 반영해주어서 결과물을 확인하기 좋았기 때문이다. 하지만 단점도 있었다. 매번 프로젝트를 할 때마다 노드몬을 키고 끄는 작업을 반복해야했기 때문이다. 물론 노드몬 자체를 백그라운드로 실행시킬 수도 있겠지만 나중에 노드몬을 끌 때 프로세스 아이디를 읽고 꺼야하는 귀찮음이 있어서 하고 싶지 않았다. 이 작업이 너무 번거롭다고 생각해서 백그라운드에서 배포하는 방법을 알아보았다. 검색을 해보니 nodemon말고도 forever와 pm2 등 선택지가 더 있었다. 그 중에서 나는 forever를 선택했다. 그 이유는 다음과 같았다. forever start 명령어로 ..
사실 에러처리는 전에도 이미 해놨었다. 하지만 그때는 간단한 메세지를 alert 함수로 표현하는 식이어서 마음에 들지 않았다. 가능하면 alert는 사용하지 않는 것이 사용자 경험에 좋다고 들었기 때문이다. 그래서 로그인 화면에 에러메세지를 위한 공간을 만들고 평소에는 안보이게 해두다가 에러가 뜨면 보이도록 만들었다. ShowErrorMessage 함수를 만들어서 에러메세지를 표시하도록 했다. const ShowErrorMessage = function(errorMessage) { const error_msg_div = document.getElementById("error-msg"); error_msg_div.style.visibility = "visible"; error_msg_div.textCont..
사진은 생략하고 정리합니다. 1. 개인키를 변환해둔다. PuttyGen -> 키 로드 -> Conversion -> Export Open SSH .. -> .ppk 로 저장 2. 변환해서 저장한 키의 권한을 수정한다. 윈도우에서 권한 수정하기 : 변환한 키 파일 우클릭 - 속성 - 보안탭 - 고급 - 상속 사용 안함 - 추가 - 보안 주체 선택 - 사용할 계정 명 입력 - 이름 확인 - 쭉 적용하면서 창 닫기 3. ssh 명령어 입력 ssh (접속할 호스트) -i (키파일 경로) -l ubuntu 키 파일이 없거나 로그인 계정을 설정하지 않아서 루트로 접근하게 되면 퍼미션 오류가 뜸. 이 방법으로 푸티 없이 vscode 쉘에서 원격 접속을 할 수 있다
지난 포스팅에 이어 로그인을 구현해보았다. 이 로그인 구현에 정말 시간을 많이 투자했다. 우선은 로그인 페이지 구현을 위해 프로젝트 구조를 수정했다. 현재는 이렇게 외부에서 요청이 들어오면 NGINX가 정적 html파일과 css. js 파일을 반환하면서 프론트를 서비스한다. 그리고 프론트에 뿌려줄 데이터는 다른 오리진으로 분리된 백엔드 서버에서 받아온다. 원래의 내 목표는 로그인에 성공하면 세션을 주어 로그인을 유지하는 기능을 구현하는 것이었다. 하지만 이렇게 구현하였더니 프론트가 유저 정보를 백엔드로 보내 로그인에 성공해도 세션이 백엔드 서버에 대해 생기는 문제가 발생했다. everdu.ga 라는 프론트 도메인이 있고 api.everdu.ga 라는 백엔드 도메인이 있을 때 로그인 처리를 백엔드에서 하면..
자바스크립트의 함수는 다른 언어의 함수와 마찬가지로 코드의 묶음으로도 역할을 하지만, 모듈화 / 클로저 / 객체 생성 등의 역할을 하기도 한다. 자바스크립트에서 함수를 생성하는 방법은 3가지가 있다. 1. 함수 선언문 함수 리터럴 형태로 함수를 선언한다. function func(a, b) { return a + b; } // use function var result = func(1,2); // result = 3 function 키워드, 함수 이름, 매개변수와 함수 몸체로 구성된다. 함수 이름은 원래 생략하여 익명함수로도 리터럴 함수를 생성할 수 있지만, 함수 선언문 방식으로 함수를 선언할 때는 함수 이름을 반드시 입력해야한다. ( 보통 익명함수는 콜백함수를 인자로 넘길 때 많이 사용한다. ) // ..
8일 동안 블로그에 글을 못썼다. 글을 못쓴 이유는 8일 동안 뭔가 진전되었다고 할 만한 결과물이 안나왔기 때문이다. 8일 동안 삽질만 계속했다... 지금 공부하고 있는건 Node JS 를 이용한 로그인 구현인데, 인터넷 자료들을 이용해서 공부하려고 보니 다들 node js 로 프론트와 백을 모두 커버하고 있다. 그래서 그 자료들을 곧이 곧대로 내가 공부하면서 만들고 있는 클론 코딩 프로젝트에 대입을 할 수 가 없다. (그 자료들 만으로도 충분히 할 수 있는데 내가 못 하는 걸지도 모르겠지만 ㅋㅋㅋ) 프론트 로그인 페이지에서 입력된 아이디 비밀번호를 백엔드 서버로 전송하고 백엔드 서버에서 받은 요청을 DB 정보와 비교해서 일치하면 응답으로 세션 생성과 함께 메인페이지로 리다이렉트를 시키고자 했다. 사실 ..
기본타입 = 숫자, 문자열, 불린값 각 기본타입은 객체가 아님에도 각 타입에 맞는 메서드를 갖고 있다. 이때는 메서드 호출시 순간적으로 기본타입을 참조타입으로 바꾸었다가 메서드 호출이 끝나면 다시 기본타입으로 바뀌게 된다. + 연산자 자바스크립트의 + 연산자는 (숫자) + (숫자) 만 숫자 연산으로 계산하고, (숫자) + (문자열) 이나 (문자열) + (문자열) 은 문자열 연결로 계산한다. typeof 연산자 피연산자의 타입을 문자열 형태로 리턴한다. 이때 null 타입은 'object' 로 출력하고, 함수 타입은 'function' 으로 출력하는 부분에 주의한다. 배열은 'object'로 출력한다. == 연산자와 === 연산자 == 연산자는 두 피연산자의 타입이 다를 경우, 타입변환을 거친 다음 비교하..
이번엔 지난번 포스팅에 적었던대로 데이터베이스를 연동하여 데이터를 가져오도록 해보았다. 우선 MariaDB 를 깔고, NodeJS 에 연동하기 위해 MySQL 모듈을 설치했다. 이걸 설치할 당시 가장 최근 버전이었던 10.8.3 버전을 깔았는데 오늘 다시 들어가보니 10.9 버전이 나왔다. 그런데 1년밖에 지원안하니까 10.6을 까는걸 권장한다고 나와있다.. 그리고 어제 설치할 때는 Harukasan 에서 다운로드를 할 수가 없었다. 그냥 아예 명령어를 복사 붙여넣기 했는데 404에러가 떴다. 그래서 YongBok.net 으로 받았다. 아직은 Express하고 mysql 밖에 없다 그리고 다음과 같이 코드를 작성했다. DB에 접속하기 위한 코드 부분을 따로 분리했다. DB서버와 nodejs 서버가 같은 ..
30분정도 삽질을 한 끝에 성공한 안드로이드에서 MySQL 원격 접속하는 방법을 정리하고자 합니다. 저의 경우 Oracle Cloud 에 올린 인스턴스에 직접 MariaDB를 깔고 그 서버에 원격접속했습니다. 하지만 AWS나 GCP 같은 경우도 비슷하게 해결할 수 있을 겁니다. 과정은 다음과 같습니다. DB설치 (설명 생략, 구글과 함께라면 할 수 있습니다) MySQL 포트인 3306 포트 열기 (오라클 클라우드 네트워크 세팅) IPTABLE 포트 열기 마리아DB에서 모든 호스트로 접속가능하면서, 접속할 데이터베이스에 대해 모든 권한을 갖고 있는 유저 생성 (기본적으로 root 는 로컬호스트로만 접속이 가능하도록 되어 있기 때문) 최종삽질의 원인인 마리아DB설정 파일 수정하고 디비 껐다 키기 접속할 안드..
원래는 http 내장 모듈을 이용해서 해볼까 했는데, 검색을 해보니까 이 모듈을 이용해서 서버 프로그래밍을 하는 건 안될 것 같다고 생각했다. createServer() 메소드로 서버를 만드는데, 이 함수의 인자로 콜백함수가 있다. 그런데 이 콜백함수로 요청 객체가 넘어오는데, 라우팅을 처리할 때 이 요청 객체의 경로를 일일히 분기로 나눠서 처리해야 했기 때문이다. 물론 해결책이 있을 것 같긴했는데, 굳이 그렇게까지 http모듈을 사용하고 싶지는 않아서 express 모듈을 사용하기로 했다. 사용하다보니까 뭔가 플라스크랑 닮았다. 대부분의 웹 프레임워크가 다 거기서 거기인건가 싶기도 하고... 'URL' -> 해당 url 에 대한 콜백 함수 이 구조인건 똑같았다. 우선 메인페이지로 사용자가 접속했을 때,..