분류 전체보기
-
The Complete JavaScript Course 2021(1)TodayILearned/javascript 2021. 6. 22. 23:05
유데미의 the complete javascript course를 듣고 정리한 내용입니다. 자바스크립트란? 자바스크립트는 고수준 언어이고, 객체 기반의 언어Object-oriented programming (OOP)이며, 멀티 패러다임 언어이다. 자바스크립트의 역할? 웹 상에서 HTML은 콘텐츠를 표시하고, CSS는 어떻게 보여줄 지 구현하고, 자바스크립트는 웹 앱을 운영하는 프로그래밍 언어 역할을 한다. 자바스크립트의 원시타입? 1. NUMBER 2. STRING 3. BOOLEAN 4. Undefined 5. Null 6. Symbol (ES2015) 7. Bigint (ES2020) 이 중 1~3이 가장 중요한 원시타입이다. Javascript has dynamic typing 자바스크립트는 직접 ..
-
프로그래머스 최댓값과 최솟값TodayILearned/알고리즘 2021. 6. 14. 11:40
최댓값과 최솟값 난이도 : 하 문자열 코드 def solution(s): answer = '' a = s.split() lst = list(map(int,a)) m = max(lst) n = min(lst) answer = str(n) + ' ' + str(m) return answer 풀이 map, min과 max 내장함수를 이용했다. str을 형변환해서 int로 바꾸어 비교한 다음 다시 str로 변경하여 answer에 담았다.
-
프로그래머스 짝지어제거하기TodayILearned/알고리즘 2021. 6. 14. 01:23
짝지어 제거하기 종류 : 스택/큐 난이도 : 하 코드 def solution(s): answer = [] lst = list(s) for i in range(0,len(lst)): answer.append(lst[i]) while(len(answer) >= 2): if(answer[-1] == answer[-2]): answer.pop() answer.pop(-1) break if answer: return 0 else: return 1 return answer 풀이 주어진 문자열(s)를 list함수를 이용해 배열로 만든다. 배열의 길이만큼 answer에 문자를 하나씩 push(append)한다. 만약 answer의 길이가 2 이상이고, 문자열 두개를 비교했을 때 같다면, 순서대로 pop한다. 단 무한반..
-
리프레시 토큰이 필요한가?TodayILearned/TILWIL 2021. 6. 3. 10:20
로그인이 필요한가? 오쿠 프로젝트를 시작할 때, 로그인을 도입하느냐 마느냐에 대한 이야기가 나왔다. 로그인 기능이 없다면, 클라이언트에서 보내는 요청에 대해 유저를 식별할 수 없다. (HTTP는 한번 요청과 응답을 받고나면 그 연결이 지속되지않고 끊기기 때문에) 만약 유저를 식별할 수 없다면, 오쿠 내에서 누가 입찰하였는지 정보를 식별할 수 없고, 그로인해 구매자와 판매자를 이어주려는 서비스 자체가 불가능 할 것이라고 생각했다. JWT, 쿠키-세션 로그인 JWT 로그인 방식을 채택했다. 다 장단점이 있지만 쿠키세션로그인은 쿠키 허용안하면 못쓰는거아닌가.. 리프레시 토큰이 필요한가? 리프레시토큰 리프레시 토큰은, JWT로그인 방식에 사용되는 JWT의 보안상의 단점을 보완하기 위해 구현한다. 사용자가 로그인..
-
채팅 생성하기Project 2021. 5. 27. 18:36
거래가 성사되면, 사이트 내에서 유저들간에 소통을 할 수 있도록 채팅방을 제공했다. 개개인마다 채팅방 목록이 다 다를것이기때문에 어떻게 응답을 해줘야할 지가 참 고민이었고, 또, 어디서 어떻게 데이터를 가져와서 내려줘야할 지도 고민이었는데, 이 때 디비 수정이 용이한 몽고디비를 쓰고있어서 다행히 해결할 수 있었다. 처음에는 거래 성사 이후 낙찰정보에 대한 DB를 따로 생성해야되는것인가? 라고 생각했는데, 그렇게하면 제품명, 판매자 등 이미 오쿠 제품 DB에 있는 정보를 중복으로 저장한다는점을 알게됐다. 그래서 제품DB에 낙찰자 정보를 추가하고, 제품 기준으로 제품명, 판매자, 낙찰자 등의 정보를 이용해서 채팅방을 생성하도록하였다. 정확하게는 채팅 목록을 json 형식으로 응답해주었다.
-
오쿠 기술 소개Project 2021. 5. 26. 12:33
악의적 사용자가 즉시낙찰 기능을 사용할 경우, 제품의 판매상태가 바뀜 -> 즉시낙찰의 경우, 최고가 낙찰의 기능으로 바꿨다. -> 즉시낙찰가에 입찰 한 유저가 있을 경우, 거래대기중 상태로 변경되고 -> 판매자가 거래하기 버튼을 눌러야만 판매상태로 변경되도록 수정했다. 사이트 내 알림 시스템이 있으나, 이용자가 자주 확인하지 않음 -> 문의댓글이나, 거래가 성사될 경우 이용자에게 메일을 보내서 사이트에 자주 들어올 수 있도록하자 입/낙찰 -> 언제 실행시켜야 할 지, 어디서 실행시켜야 할 지 고민 -> MVP단계에선, 글쓰기를 할 때 node-schedule을 이용해서 마감시간이 되면 낙찰 로직을 실행 -> 글쓰기 자체의 로딩시간이 길어지고, 서버가 꺼졌다 켜지면 예약되었던 기능이 사라지는 등 (모듈 자..
-
pm2-slack 이용해서 pm2 log 공유하기Project 2021. 5. 19. 11:12
온라인으로 진행하는 프로젝트이다보니, 로그를 꼭 온라인으로 공유해줘야한다는 생각이 들었다. 세상에 누군가 이미 pm2로그를 슬랙으로 공유할 수 있게 모듈을 만들어놨다니 세상은 넓고 천재는 많고 나는 그저 주워 쓰기만하면 됐다. pm2-slack 사용법도 엄청 간단하다.. 슬랙앱에서 웹훅 주소만 만들어서 공식문서에 나와있는대로 치면 끝.. pm2 install pm2-slack pm2 set pm2-slack:slack_url https://slack_url 완전 쉽죠..? 이걸 하고 얻은것은.. 서버 꺼졌어요? 라는 질문을 안받게됐다.
-
node-schedule, node-cron 이용하기Project 2021. 5. 19. 11:01
오쿠는 경매사이트다. 마감시간 이후 낙찰자를 지정해줘야하는데, 이 때 node-schedule 모듈을 이용했다. Note that Node Schedule is designed for in-process scheduling, i.e. scheduled jobs will only fire as long as your script is running, and the schedule will disappear when execution completes. If you need to schedule jobs that will persist even when your script isn't running, consider using actual cron. 공식문서에서도 볼 수 있듯이, node-schedule은 ..