전체 글 114

Web Server 와 WAS 의 차이

통상 웹서버라고 하면 그냥 WAS구나 라고 생각하는 경우가 많다. 하지만 Web Server와 WAS를 둘다 사용한다 => 이럴때 구분해서 이야기한다. Web server 는 쉽게 말해서 Client에서 요청이 들어오면 정적인 것들만 전달을 해주는 역할 조금 더 자세히 말해서, 브라우저 클라이언트로부터 HTTP 요청을 받고, 정적인 컨텐츠들(html, css 등)을 제공하는 서비스 프로그램이다. Apache Server 또한 이 웹서버에 포함된다. 그렇다면 WAS(Web Application Server)는 어떤 역할을 하는 것일까? Nodejs에서 로그인/회원가입을 구현할 때도 그렇고 DB를 건드릴 때 등, 어떠한 로직을 처리가 요구되면 동적 컨텐츠를 제공하기 위해 만들어지는 것이 바로, 이 WAS 이..

Web Development 2022.06.12

가장 큰 수 (스택)

먼저 처음 포인트는 이 숫자들을 리스트에 받아줘야하는데, 띄워쓰기로 구분되어있지 않기 때문에 항상 받아왔던 방식인 map(int, input().split()) 방식으로 받을 수가 없다. 그래서 str로 받아서 이것들을 list에 넣는뒤, 다시 int형으로 변환시켜준다.  b_num, delete = map(int, input().split())nums = []for i in range(len(str(b_num))):    nums.append(str(b_num)[i])nums = list(map(int, nums)) 그 후, 새로운 리스트를 만들어 nums에 있는 수들을 끄집어 내며 하나씩 비교해보고, 새로운 리스트에 들어있는 수보다 nums[0]에 들어있는 수가 크다면 이를 빼주고, 삭제할 수 있는 ..

역수열 (그리디 알고리즘)

원래 수열을 [0] * N 으로 초기화 시킨 뒤, 정렬이 되어있다 생각하고 1부터 경우를 생각하며, 원래 수열의 0을 역수열의 원소만큼 카운팅 하면 간단한 문제이다. 이중반복문을 돌리면서 i -> 역수열의 인덱스번호  j-> 원수열의 0을 카운팅하기 위한 인덱스 번호라 생각하고 cnt로 0을 카운팅하면서 어차피 오름차순으로 정렬되어 있기에, 앞에 더 작은 숫자가 나와있는건 신경쓰않고 오로지 0만 카운팅 해서, cnt 와 역수열의 원소값이 같아지면 그때의 i+1 값을 원수열에 넣어주고 다음 반복문을 통해 다음값을 카운팅 해주면 된다. import sys#sys.stdin=open("input.txt", 'rt')N = int(input())rev = list(map(int, input().split()))..

로그인 / 회원가입 구현해보기 (6) AWS DB만들기(한글설정), RDS와 변동 및 워크벤치 이용하기

저번시간 까지 DB 없이 로그인 / 회원가입을 파일 형식으로 구현하였고, 이제는 AWS의 훌륭한 무료DB 서비스( 잘못하면 과금 ㅠ ) 를 이용하여, DB를 연동한 로그인 / 회원가입 기능구현을 준비하려고 한다. 먼저 적당한 RDS 인스턴스를 만들어주고, 파마리터 그룹 설정도 char 부분을 utf-8로 맞추어 준뒤 이 인스턴스의 디폴트 값으로 만들어준다. 그리고 커맨드 창을 열어 mysql -h 엔드포인트 -u 사용자이름 -p를 한 뒤, 비밀번호를 치고 들어가면 연결된 mysql이 시작되는데, 이게 뭔일인가,,, 2003 오류가 뜬다. 이때는 AWS에 보안그룹에 들어가 인바운드 규칙 편집을 통해 수정한 뒤 다시 들어가면 된다.. https://code4human.tistory.com/74 나는 여길 참..

Back-end/Node.js 2022.06.05

로그인 / 회원가입 구현해보기 (5) 회원가입화면 만들기, 요청, 라우팅 구현하기 (DB 없이 구현)

회원가입 (register) 구현은 그리 어렵지 않았다. 먼저 login.ejs와 비슷한 형태인 register.ejs를 만들어주고, input으로 이름과 비밀번호 확인까지 받아주는 형태의 html 파일을 생성해주었다. 그 후 register.js 파일을 login.js 파일 형태로 만들어주되, 이름(name)을 추가해주고, 회원가입 도중 아이디가 입력되지 않은 경우와 비밀번호 두개가 틀린 경우 바로 alert으로 return해주는 if문을 추가해준다. function register() { if (!id.value) return alert("아이디를 입력해주십시오."); if (psword !== confirmPsword) return alert("비밀번호가 일치하지 않습니다."); const req ..

Back-end/Node.js 2022.06.03

로그인 / 회원가입 구현해보기 (4) User data 모델링, 서버 응답 데이터처리, 로그인 화면 꾸미기

두번째 학습인데도, 사실 너무 어렵다... 이번엔 User data (회원정보 id, psword, name, 등)를 만들어주고, 이를 모델링하여 User.js 와 UserStorage.js 에 담아준다. 문자 그대로 UserStorage는 "use strict"; class UserStorage { static #users = { id: ["baaams", "bodymind", "starjieun"], psword: ["1234", "123456", "12345678"], name: ["박희범", "박우상", "이지은"], }; static getUsers(...fields) { const users = this.#users; const newUsers = fields.reduce((newUsers, ..

Back-end/Node.js 2022.06.01

결정 알고리즘 (랜선 자르기)

결정 알고리즘을 이용할 때는 이분탐색을 이용하고, 문제에서 보통 답의 범위를 알 수 있다.  알고리즘은 다음과 같다. 주어진 수들 중에서 max를 찾는다. 그럼 범위는 1 ~ MAX의 수가 될 것이고, 이분탐색으로 중간값을 찾아 답이 되는지 찾아본다. 답이 되는지 찾아보기 위해, Count 함수를 만든다. 이 함수는 주어진 숫자들을 파라미터로 받은 값들로 모두 나누었을 때 그 합을 반환한다. 반환한 값과 K 값을 비교하여, 반환 값이 더 작으면 답이 될 수 없으므로 중간값 기준 더 작은 값, 즉 왼쪽을 탐색해야한다. 반환값이 K값보다 크거나 같을 때는 오른쪽을 탐색한다. 그렇게 while문을 반복하며 lt  이분탐색 기반의 가장 기본적인 알고리즘이며, 기본인 만큼 많이 쓰이고 중요한 알고리즘이니, 확실하..

로그인 / 회원가입 구현해보기 (3) 객체 제어, 로그인 API 만들어서 서버로 데이터 보내기

아이디와 비밀번호를 값들을 버튼을 누르면 서버로 전송해주어야 한다. 서버는 이 값들을 받아 로직을 처리하게 된다. 먼저 HTML 값들을 자바스크립트에서 제어하기 위해 DOM 객체를 사용해야한다. id, psword => id와 psword의 값들을 가져오고 DOM객체로 받아들여주고 버튼은 이벤트리스너로 클릭 시 함수(로그인 함수)를 실행시켜주도록 한다. const id = document.querySelector("#id"), psword = document.querySelector("#psword"), loginBtn = document.querySelector("button"); loginBtn.addEventListener("click", login); 이제 login 함수를 만들어 주어야 한다. ..

Back-end/Node.js 2022.06.01

로그인 / 회원가입 구현해보기 (2)

준비중인 프로젝트에 적용하기 위해 로그인 / 회원가입 강의를 다시 한번 복습하면서, 순서의 흐름을 적어보고자 한다. 우선 저번 시간에 했던 express 프레임워크를 쓰는 이유와 하드코딩에 이어, 뷰를 최적화해주고 라우팅을 폴더로 분리해주었다. 또 controller 부분 또한 분리해주고, app.listen() 또한 모듈화 해주었으며, npm install을 통해 패키지들을 다운 받았고, 깃허브와 연동하였으며 폴더 구조 또한 이런식으로 개발에 최적화 할 수 있도록 구조화 해주었다. 또 서버가 열려있을 때 코드 수정이 이루어지면 서버를 닫는 번거로움을 피하기 위해 nodemon을 install 해주어 nodemon으로 서버를 열면 코드 수정하고 저장하면 즉석으로 반영되기에 이제 로그인 기능적 구현하기 앞..

Back-end/Node.js 2022.05.31

탐색 & 시뮬레이션 [수토쿠 검사] (죽음의 4중 포문...)

코테 연습을 위해 알고리즘 복습을 하며 탐색의 기본격이라 할 수 있는 수토쿠 검사  알고리즘을 풀어보았다. 구간 검사를 위해 4중 포문을 돌려야하는 번거로움이 있지만, 알고리즘 자체는 그리 어렵지 않다.      3가지에 대한 검사를 해야한다.  1) 가로행에 1 ~ 9 가 다 있는지,2) 세로행에 1 ~ 9 가 다 있는지,3) 3*3 총 9개의 구간에 1 ~ 9 가 다 있는지, 먼저 9*9 총 81개의 숫자를 리스트(sudo) 에 담아준다.  sudo = [list(map(int, input().split())) for _ in range(9)] 그 뒤 check 라는 검사 함수를 만들어준다.  check 함수 안에는 1) 2) 3)을 차례로 검사해주는데 만약 거짓이 있는 순간 바로 False를 ret..