당근마켓 서버를 클론해보자! 당근마켓 서버 클론 nodeJS를 이용해 당근마켓 서버를 클론 했다. 리펙토링하며 블로그에 글로 정리해볼까 한다. 살면서 처음 만들어본 API서버이기 때문에 세상에 자랑하고 싶지만 부족한점이 많다. 나중에 이 글을 읽으며 코드를 보고 부끄러울 수 있지만 몇 줄 정도는 자랑 스러워 할 코드가 있지 않을까 하며 조심스럽게 기록을 남겨본다. 코드 외에도 당근마켓 클론의 전체적 과정을 담아보겠다. 블로그에는 api별로 코드를 뜯어와 붙여 포스트 하고 깃헙으로 전체를 공유 하겠다. 다시 한번 말하지만 첫 api서버이기 때문에 부족한점이 많다. 혹시 읽으시다가 불편하신 점, 마음에 안드시는 점, 개선이 필요하거나 부족한 부분이 있다면 메일, 쪽지, 댓글 등으로 알려 주신다면 정말 감사하..
분류 전체보기
렌즈의 공식과 파이썬을 이용해 객체의 위치에 따른 상의 위치를 계산해보자. Lens equation 렌즈의 공식은 렌즈의 초점거리, 렌즈의 중심으로부터 피사체의 거리, 렌즈의 중심으로부터 상 사이의 거리사이의 관계를 나타낸다. 이를 이용해 렌즈의 특성으로 알 때 렌즈와 와 객체 사이의 거리를 계산해 상이 맺히는 곳을 계산 할 수 있다. Plotting graphs showing lens equation import numpy as np import matplotlib.pyplot as plt ## function # s' = Lens_Equation(s,f) # input # f: focal length # s: object location # output # s': image location def L..
스테판-볼츠만 법칙을 이용해 태양상수를 추정해보자. Stefan-Boltzman law 스테판-볼츠만 법칙은 단위면적당 방출되는 에너지의 총량과 흑체의 절대온도 사이의 관계식이다. 방출되는 복사 에너지는 절대온도의 네제곱에 비례한다. 이를 이용해 태양상수를 추정할 수 있다. Computing the solar constant at the Earth Computing the total energy emitting from the Sun and the Earth during 1 second. Assuming that the radius of the Sun and the Earth are about 675,000km and 6,400 km, respectively. Assuming that the distan..
빈의 변위 법칙을 이용해 지배적 파장을 계산해보자. Wien's displacement law 빈의 변위 법칙은 특정 절대온도의 흑체에서 방출되는 복사에너지가 가장 큰 파장을 계산하는 법칙이다. 이때 이 파장을 지배적인 파장이라고 부른다. 흑체에서 방출되는 파장 스펙트럼의 복사 에너지중 지배적 파장의 복사 에너지가 가장 크다. 지배적 파장은 흑체의 절대온도에 반비례한다. Wavelength of maximum energy Computing the wavelength of the maximum energy emission rate based on Wien’s displacement law and indicating the locations on the curves on previout post. # plo..
플랑크 흑체복사 법칙을 파이썬으로 그래프를 그려보자. Planck's blackbody radiation 입사하는 전자기파를 모두 흡수하는 이상적 물체를 흑체(blackbody)라 부른다. 흑체가 열평형상태에서 방출하는 복사에너지의 양은 플랑크 흑체 복사 법칙을 따른다. 플랑크 흑체복사 법칙은 흑체의 절대온도에 따른 방출되는 복사 에너지의 양을 방출되는 전자기파의 파장에 대한 함수로 나타낸다. 이를 이용하면 특정 절대온도의 흑체에서 파장에 따라 방출되는 복사에너지의 양을 계산 할 수 있다. Blackbody Radiation of Sun and Earth Plotting the two curves of spectral exitance as functions of the wavelength based on..
R언어에는 다른 언어에는 없는자료형이 있다. 처음 접했다면 각 자료형끼리는 어떤 차이가 있는지 어떻게 사용해야하는지 헷갈린다. R에만 있는 자료형들을 중점으로 각 자료형의 사용법을 알아보고 예제를 통해 익혀보자. R은 통계를 위한 언어이다. R은 통계를 위해 태어났다. 아무리 파이썬이 데이터 시각화에 좋다고 하더라도 한 우물만 파는 R에는 안된다. 여러 분포함수와 통계함수를 지원하기 때문이다. data frame 만 봐도 그렇다. 딱 봐도 통계를 위해 존재한다. 따라서 R의 장점을 제대로 활용하기 위해서는 R에만 있는 것 들을 잘 다룰 수 있어야한다. R의 장점을 활용하지 못한다면 R을 쓰는 이유가 없다. 자주 헷갈리는, R에만 있는 자료형에 집중하며 데이터 형식을 알아보자. 이 글에서는 vector, ..
통계를 위한 R언어를 배워보자 Matlab 안녕~ Why R? R언어는 통계적 계산과 그래픽에 특화되어 있는 오픈소스 언어이다. R은 많은 통계 모델과 데이터를 제공하는데 이를 이용해 통계적 분석을 해보며 사용법을 익혀보자! 이 글에서는 R의 아주 기본적인 내용만 대충 다룰 예정이다. 필자는 에디터로 Rstudio를 사용했다. R언어 기본 R언어를 시작하기전에 R언어는 내장함수 검색이 아주 편리하다. 함수의 사용법, 매개변수 혹은 함수 사용법이 궁금하다면 다음과같이 검색할 수 있다. 아주 편리한 방법이니 자주 사용하길 바란다. (1) ?mean - help(mean)과 같다. 키워드에 대한 설명을 보여주고 특수문자, 기본연산자도 검색이 가능하다. 함수명이 아닌 키워드는는 ""로 감싸 검색해야한다. (2)..
var와 let의 차이를 공부하다 나온 호이스팅과 TDZ에 대해 알아보자. 호이스팅과 TDZ 호이스팅과 TDZ로 인해 기존에 다른 프로그래밍 언어를 배운 사람들은 Js코드가 이상하다고 느낀다. 나도 그랬다. 하지만 Js를 쓰다보면 호이스팅덕분에 더 편한것 같다. 호이스팅 (hoisting) Js는 함수의 코드를 실행하기 전에 함수 선언에 대한 메모리부터 할당한다. 덕분에 스크립트내에서 함수 선언의 위치는 중요하지 않다. 스크립트내에서 함수 호출을 함수 선언보다 먼저 해도 문제가 없다. 또 호이스팅은 스코프 단위로 일어난다. 예를 보며 이해해보자. callFunc();// 함수 호출 function callFanc() { console.log("나 함수!"); } // 함수 선언 가장 처음 배운 언어가 C..
Why Js? 프로그래밍 언어를 배우다보면 결국 언어는 별게 아니라는 생각을 하게 된다. 중요한 것은 구조이고 언어는 수단일 뿐이다. 하지만 우리는 그 언어의 특성을 알때 언어의 장점을 극대화 하여 어떤 프로그램의 성능을 높일 수 있다. 언어를 잘 알아야 프로젝트에서 언어를 선택할때 어떤 언어를 사용할지에 대한 정확한 근거가 생긴다. 프론트앤드와 백앤드 심지어 데이터베이스까지 모든 분야에서 사용가능하다는 점에서 나는 javascript에 큰 매력을 느꼈고, 자세히 공부해 보려한다. Js는 풀스택이 되는 가장 빠른 선택일 것이다. Js를 배우고 프론트앤드, 백앤드, 데이터베이스의 전체 로직과 구조를 훑고 세부분야를 선택해 공부하며 필요에 따라 다른 언어와 프레임 워크를 공부할 계획이다. 이 모든 게획은 J..
당근마켓의 어플의 페이지별로 sql쿼리를 짜보자! 한방쿼리 SQL쿼리 연습을 위해 당근마켓의 각 페이지에 필요한 모든 데이터를 가져오는 한방쿼리를 짜보려고한다. 저번에 만들었던 당근마켓 ERD를 바탕으로 데이터베이스를 만들고 각 페이지 별로 한방쿼리를 짜보자. 당근마켓 클론의 전체적인 진행 상황이 궁금하시다면 이 글에서 확인 하실 수 있습니다! 홈 메인 페이지 select a1Name as myLocation, P.productIdx as productIdx, title, photo, sellerNickName, price, -- format(price, N'#,0') A1.name as productLocation, case when P.createdAt P.updatedAt then '끌올' else..
당근마켓의 데이터베이스를 클론해보자! 당근마켓 DB 설계 공간데이터를 많이 다루는 과 특성상 빅데이터를 많이 다루기는 하지만 그런 데이터들은 실제 서비스에서처럼 많은 관계를 갖고있지는 않다. 따라서 관계형 데이터베이스를 이해하고 실습하기위해 당근마켓의 데이터베이스를 클론해보자. 대상을 당근마켓으로 정한 이유는 플렛폼 어플리케이션에서 사용하는 기능이 대부분 들어있기 때문이다. 채팅은 socket을 사용하겠지만 DB 공부가 목적이니 데이터베이스로 구현했다. 당근마켓 클론의 전체적인 진행 상황이 궁금하시다면 이 글에서 확인 하실 수 있습니다! ERD 학교에서는 ER win을 사용했었다. 이번에는 Quick DBD라는 툴을 사용했 것이다. + 수정 (2021.10.05) 수정사항 (1) 주소 원래는 User 에..
AWS로 서버구축을 해보자! AWS 서버 구축 가상머신에서 리눅스기반 서버구축을 연습했고 개발을 위해 local 서버도 구축 했으니 이제 진짜 배포용 서버를 구축할 차례다. AWS를 이용해 서버 구축을 해보자. Ubuntu 20.04.2 LTS Nginx MySQL 8.0.26 PHP 7.4.3 AWS 서버 구축 (Ubuntu + Nginx + PHP + MySQL) AWS는 아마존의 클라우드 컴퓨팅 서비스다. 회원가입 후 인스턴스를 생성해 가상머신에서 했던것과 마찬가지로 서버를 구축해보자. 이번에는 Apache대신 Nginx를 설치할 계획이다. Apache에서는 요청이 일정량을 넘어가면 프로세스와 스레드를 생성하지만 Nginx는 Master process가 worker process를 비동기 event..