Flask앱 AWS로 배포하기
도커를 사용해 간편하게 배포한다. 서버 세팅을 직접 하는 방법은 ‘[FLASK] FLASK와 NGINX 클라우드 서비스 구동하기’ 예전에 블로그에 정리해놓았다. 준비 사항프로젝트 코드가 AWS 인스턴스 서버 위에 모두 올라가있어야 한다. Git clone을 사용하거나 FTP를 사용하는 등의 방법이 있다. 깃 클론 방법은 아래와 같다. 1git clone repository주소 Docker 설치도커 공식 문서에서 Ubuntu 환경에서 설치 방법을 알려주고 있다. apt 패키지를 업데이트하고 https로 repository를 사용할 수 있도록 한다. 12345678$ sudo apt-get update$ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common 도커의 공식 GPG key를 추가한다.아래 두번째...
AWS 시작하기
AWS 계정 만들기AWS 계정을 만드는 것은 간단하다. AWS Console로 이동하여 회원가입하고, 클라우드 서비스는 비용이 나가는 서비스이기 때문에 billing info또한 작성해야 한다. 클라우드 서버를 통해 작업하는 것은 보안이 철저해야 한다. AWS 에도 다양한 상품이 존재하고, 상품에 따라서 눈깜빡할 사이에 몇백만원이 부과될 수 있기때문에 조심해야 한다. MFA 활성화보안을 강화하기 위해 2단계 인증을 설정한다.MFA - Multi-factor AuthenticationGoogle otp를 휴대폰에 설치하여 사용하면 된다.휴대폰 접속이 불가능할 경우 로그인을 할 수 없으며 이런 경우 고객센터에 문의해야 한다. AWS 클라우드 인프라더 빠른 클라우드 서비스를 이용하기 위해서는 가장 가까이에 있는 인프라를 사용해야 한다. AWS는 클라우드 서비스 업계 1위 답게 전세계에 인프라를 구축하고 있으며, 한국도 2016년에 서비스를 시작했다. 앞으로도 계속해서 확대시켜 나갈...
클라우드 컴퓨팅
클라우드 컴퓨팅이라는 단어는 사실 굉장히 넓은 범위를 포함하고 있다. 2000년대 초 부터 많이 사용되기 시작한 단어로, 구름 위에 있는 보이지 않는 컴퓨터 자원을 사용해 작업한다는 뜻이다.대부분의 작업을 온라인에 분산되어 존재하는 데이터 센터(=클라우드)에 맡겨 수행하고, 사용자의 컴퓨터는 클라우드에 접속하여 상호작용하는 단말기 역할만 하는 것이다. 쉽게 말하면 로컬 PC에서 작업하기 무거운 작업들의 경우를 클라우드 컴퓨팅을 통해 데이터 센터의 고성능 컴퓨터로 작업할 수 있는 것이다. AWS 공식 홈페이지에서는 다음과 같이 클라우드 컴퓨팅을 정의하고 있다. 클라우드 컴퓨팅은 IT 리소스를 인터넷을 통해 온디맨드로 제공하고 사용한 만큼만 비용을 지불하는 것을 말합니다. 물리적 데이터 센터와 서버를 구입, 소유 및 유지 관리하는 대신, Amazon Web Services(AWS)와 같은 클라우드 공급자로부터 필요에 따라 컴퓨팅 파워, 스토리지, 데이터베이스와 같은 기술...
인터넷 기초
IP인터넷에 연결되어있는 장치들을 식별할 수 있는 주소IP : Internet Porocol예) 192.168.0.1 도메인(domain)IP는 사람이 이해하고 기억하기 어렵기 때문에 이를 위해 각 IP에 이름(=도메인)을 부여하여 알아보기 쉽게 함 naver.com - 220.95.233.172 daum.net - 114.108.157.19 도메인의 구성요소daum.co.kr daum : 컴퓨터의 이름 co : 국가 형태의 최상위 도메인 kr : 대한민국의 NIC에서 관리하는 도메인 호스트네트워크에 연결되어 있는 컴퓨터들을 부르는 말 포워딩도메인으로 접근한 사용자를 다른 도메인으로 보내는 행위 네임서버도메인에 해당하는 IP를 알려주는 서비스 DNS : Domain Name System ### 브라우저가 IP를 찾아내는 순서 domain 입력 local cache를 검색 hosts 파일을 검색 domain name server 검색 따라서 local에서...
[BOJ] 3190. 뱀
3190. 뱀 문제 링크문제‘Dummy’ 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임은 NxN 정사각 보드위에서 진행되고, 몇몇 칸에는 사과가 놓여져 있다. 보드의 상하좌우 끝에 벽이 있다. 게임이 시작할때 뱀은 맨위 맨좌측에 위치하고 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따른다. 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다. 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다. 만약 이동한 칸에 사과가 없다면, 몸길이를 줄여서 꼬리가 위치한 칸을 비워준다. 즉, 몸길이는 변하지 않는다.사과의 위치와 뱀의 이동경로가 주어질 때 이 게임이 몇 초에 끝나는지 계산하라. 입력첫째 줄에 보드의 크기 N이 주어진다. (2 ≤ N ≤ 100)...
[css] position 속성
:rotating-light:CSS 속성을 정리한 자료입니다. CSS 배치HTML 엘리먼트의 위치를 설정하는 속성이다. position요소의 위치 지정 방법의 기준을 설정한다. static: 기본값. 배치 불가능 relative : 요소 자신을 기준으로 배치 absolute : 위치 상 부모 요소를 기준으로 배치 fixed : 브라우저를 기준으로 배치 sticy : 스크롤 영역 기준으로 배치
[css] flex
:rotating-light:CSS Flex(Flexible Box)완벽 가이드정리 내용입니다. flex는 html요소의 수평 배열을 아주아주 간단하게 구현해주는 속성이다. 이전에는 float를 사용하거나 inline-block으로 바꿔서 사용하는 등 조금 억지스러운 방식으로 구현했다면, flex는 매우 간편하고 자연스럽게 수평 구조를 만들어준다. flex는 container와 item들로 구성되어있다. 이 구조를 잘 이해하고 있어야 자유자재로 레이아웃을 짤 수 있다. 컨테이너와 아이템 요소에 사용하는 속성이 다르기 때문에 주의해야 한다. flex container 속성display요소를 flex container로 정의한다. flex: block 특성의 flex container 정의 inline-flex : inline 특성의 flex container 정의 (컨테이너 내부 요소는 flex의 특성을 가지지만 외부 컨테이너가 inline 특성을 가지게...
CSS 복합 선택자
CSS 복합 선택자Basic CombinatorE 와 F를 동시에 만족하는 요소를 선택한다. 123span.orange { ...;} 1234567891011<div> <ul> <li>사과</li> <li>딸기</li> <li class="orange">오렌지</li> </ul> <div>당근</div> <p>토마토</p> <span class="orange">오렌지</span> <!--선택--></div> span이면서 orange class인 요소를 선택한다. Child CombinatorE의 자식 요소 F를 선택한다. 1E > F 123ul > .orange { color:...
[Node.js] 에러페이지 핸들링
에러페이지 핸들링Node.js의 Express 에서 에러 처리를 하려면 어떡헤 해야 할까?아래의 방식이 내가 주로 사용하던 에러 핸들링 방식이다. 123456789app.get("/", function (req, res, next) { fs.readFile("/file-does-not-exist", function (err, data) { if (err) { next(err); // Pass errors to Express. } else { res.send(data); } });}); try, catch를 사용해 에러처리를 하고 있다. 하지만 만약 엔드포인트가 계속해서 많아진다면? 에러 처리를 위해 반복 작성되는 코드가 매우 많아질 것이다. Express는 이를 방지하기 위해 에러처리를 위한 미들웨어를...
[Node.js] Global Variable
전역 변수 설정하기서비스의 전체 페이지에서 접근해야 하는 변수들이 있다. 예를 들면, 사용자가 로그인한 상태를 나타내는 bool type의 isLgoin 같은 변수가 그렇다. 이런 값들을 전역 변수로 설정하지 않는다면, 다음 요청을 진행할 때 마다 계속해서 값을 전달해야하고 (내 예전 프로젝트 처럼..) 이는 정말정말 비효율적이고 귀찮은 작업이다. 때문에, 효율성 있는 코드를 작성하기위해 전역 변수를 잘 사용해야한다.Express의 전역변수 설정은 locals로 한다. 1234app.use((req, res, next) => { app.locals.isLogin = true; next();}); 이렇게 생긴 미들웨어를 로그인 확인 로직이 끝난 뒤 동작하도록 등록하면 어떻게 될까? 로그인 정보가 확인되었기 때문에 이 뒤에 나오는 페이지들은 해당 변수에 접근해 로그인 여부를 쉽게 확인할 수 있다. 전역변수는 템플릿에서도 접근이...