빌보드 hot100차트의 랭킹, 곡제목, 가수이름을 크롤링해보자.우선 웹사이트로 http request중 get매서드를 보낼 requests 라이브러리를 import해준다.그리고 불러온 http 객체를 해석(parsing)할 bs4라이브러리 중 BeautifulSoup
git - 버전 control system. 소스코드의 버전을 관리해주는 시스템. source 버전 - 수정사항들을 관리해줌. vcs안쓰면 최종, 최종최종, 이게진짜최종 등 파일 다만들어줄것이다. vcs쓰면 체계적으로 버전컨트롤해줌. git 말고도 vcs많음 git이
indeed사이트에 python과 관련된 구인공고의 정보(url, title, location)을 가져와보자.우선 requests와 BeautifulSoup을 import하고 python을 검색한 결과 페이지를 url로 담아주고 requests.get().text로 해
html파일에서 원하는 부분을 끌어오는 대표적인 방법들에 대해서 알아보자.우선 해당 페이지의 url을 읽어와 BeautifulSoup parser의 객체를 soup 인스턴스에 넣어준다.soup.find_all()위의 부분은 indeed홈페이지에서 python을 검색하면
암호화란? 웹상에서 유저의 데이터를 외부에서 함부로 접근할 수 없도록 원본데이터를 가공하는 것을 말한다. 암호화 종류 단방향 : 한번 암호화되면 다시 원래상태로 되돌릴수 없다. input되어온 데이터를 다시 암호화해서 비교는 가능하지만 원본상태로 되돌리기 어렵다.
HTTP(Http Hypertext Transfer Protocol)란 hyper text를 전송하기 위한 규칙이다.즉, 하이퍼텍스트를 서버와 서버끼리 데이터를 정해진 규격으로 전송하고 전송받기 위한 규칙이다. 기본적으로는 데이터를 서버와 서버간에 비트(텍스트, 문자열
특정 상태를 유지하기 위해서 쓰인다. http의 통신의 특징에서 각 통신은 독립성을 지니기 때문에 이전의 통신을 기억하지 못한다.ex .로그인을 하고나서 장바구니로 들어갔을 때 이전의 로그인한 통신을 장바구니로 들어갔는 통신이 기억을 못하기 때문에 다시 로그인을 해야한
get 요청이 오면 크롤링한 데이터를 뿌려주는 app을 만들어보자.웹페이지에서 '뉴스'를 클릭하면 주식과 관련된 실시간 TOP10 기사를 보여주는 페이지가 나온다고 가정해보자. 이 경우 TOP10 기사는 실시간으로 바뀔 것이기 때문에 데이터베이스에 저장하기 보다는 ge
로그인을 해서 받은 토큰을 확인하는 loger을 만들어보자.우선 로그인이 필요한 서비스를 정의한다.이번에는 댓글페이지에 접근해서 로그인이된 유저(로그인해서 토큰을 발행받은유저)만 댓글을 달 수 있는 기능을 만들어보겠다.우선 유저는 endpoint로 name(유저아이디)
위메프 best section을 크롤링해서 csv파일로 저장해보자.크롤링하는 방법은 여기서 자세히 다루므로 이번에는 csv파일 저장위주로 다뤄보고자 한다.(전체 코드는 맨 아래에서 확인)selector로 끌어온 각각의 price, title, url들을 위와같이 리스트
select_related를 사용해서 ORM의 쿼리를 줄여보자.ORM과 데이터베이스간의 소통에서 쿼리가 발생해 값을 주고받는 과정은 웹서비스 차원에서 많은 트레픽을 가져온다.OneToOne, ForeignKey참조에서 정참조의 경우위의 코드는 객체를 쿼리셋으로 전부 들
스타벅스홈페이지의 상품/음료 페이지에서 뿌려지는 데이터들을 모델링해보자.웹페이지를 만들기 전 웹페이지를 를 들어가자마자 엔드포인트로 오는 GET매서드에 데이터를 효과적으로 뿌려주기 위해서는 성격이 다른 데이터를 다른테이블로 만들어주고, 테이블간의 관계를생각해서 연결지어
내가 하고있는 프로젝트에 인원이 추가되어 내프로젝트를 공유해야하는 상황을 가정해보자. 팀에 합류한 동료는 github를 통해서 내가진행하는 프로젝트를 clone할 것이다. 그렇다고해서 현재 내가 작업하고있는 환경(라이브러리, 파이썬 버전, 장고버전 ...) 까지 clo
django와 mysql 데이터베이스를 연결해보자. 첫번째로, 프로젝트의 가상환경에 mysqlclient를 깔아준다.그리고 지금진행중인 프로젝트와 연동되어질 데이터베이스를 mysql에 생성한다.database_name부분에 사용할 데이터베이스의 이름을 입력해준다 my
HTTP통신은 각각의 통신의 독립성(stateless)때문에 지금의 통신이 과거의 통신의 정보를 가지고 있지 않다.그래서 로그인을 했어도 다음 통신에서 유저가 로그인을 했다는 사실을 기억하지 못한다.따라서, 로그인을 했다는 사실을 각각의 통신마다 담아야한다.그렇다면 어
이번주 부터 첫번째 프로젝트를 시작한다. foodly-store라는 웹페이지를 클론하는 프로젝이트이며 실재서비스와 동일한 앤드포인트를 구현한다.우선 각 데이터의 성격별 테이블을 생성하며 테이블 생성을 하면서 중요하다고 생각했던 관계 모델링위주로 다루어보자.쇼핑사이트에
개발프로젝의 68퍼센트는 주어진 기간내에 기능미달 혹은 불량, 비용초과, 개발중도 포기 등으로 실패 한다고 한다. 그리고 실재로 개발의뢰자도 개발 중간에 프로젝트 수정을 요구하는 등 실재 개발 프로젝트에서는 다양한 변수가 존재한다. 이러한 소프트웨어 개발 프로젝트의 비
데이터베이스 - 데이터를 저장하는곳데이터를 메모리에 저장하면 제일빠르다. 단점은 휘발성이라 영구보존 안됨. 저장자체는 데이터베이스에 하고 사용할때는 읽어들여서 램에서 읽어들여서 사용한다.영구보존 - db실재사용 - 메모리상에 저장해서, 변수에 저장하는게 메모리상에 저장
쇼핑몰을 보다보면 하나의 상품페이지에 여러개의 유사상품을 보여주는 경우를 만난적이 있을 것이다. 이 경우 django에서 어떻게 모델링을 해주어야 할까?이 경우 상품 테이블에서 자기테이블과 many to many관계를 가지면 된다. 하나의 상품은 여러개의 유사상품을 가
현재 진행중인 프로젝트인 foodly-store의 상품페이지를 크롤링해보자.(BeatifulSoup 라이브러리 사용법을 자세하게 설명하진 않는다.)상품에 해당하는 정보는 전체상품페이지, 상품하나를 클릭하고 들어가서 나오는 페이지에서 확인할 수 있다.여기서는 전체상품페이
크롤링데이터를 저장한 csv파일을 mysql 데이터베이스에 넣어보자.우선 csv에있는 데이터를 mysql로 넣기 위해서는 csv의 데이터성격과 mysql의 데이터 필드 타입을 확인해야한다.데이터베이스 테이블의 필드타입 확인을 위해서 models.py를 확인해보자csv필
path parameter와 query parameter을 이용해서 현재 진행중인 프로젝트 푸들리에서 상품 카테고리 페이지를 구현하고 정렬기능을 추가해보자.상품 카테고리 페이지 기능을 구현하기 위해서 우선 상품테이블과 카테고리 테이블을 ManyToMany관계로 설정한다
sort by를 로직으로 처리할경우 if문 계속 반복해야함.Sort라는 테이블을 만들어주고 기준을 기준(name, -name, price, -price)을 value값으로 넣어두고 가져오면 됨.GET으로 들어온 값을 바로 order_by안에 넣어서 쿼리를 날려줌.
현재 진행중인 프로젝트에서 query parameter을 받아서 페이지 기능을 구현해보자.우선 1에서와 같이 쿼리파라미터로 GET객체로 들어올 값의 key인 offset을 가져오고 값이 없으면 0을 default로 한다.한페이지에 12개의 상품을 보여줘야하기 때문에 들
django get기능에서 orm을 통해서 데이터를 가져오는 몇가지 형태에 대해서 알아보자. object.values()를 통해 가져오기 가장 간편하고 직관적인 방법이라고 할 수 있다. 찾고자하는 필드명을 values()안에 넣어준다. 정참조 관계일 때는 looku
데이터베이스를 aws에서 제공하는 서버 mysql데이터베이스 플렛폼인 rds에 내 로컬 mysql 데이터베이스를 넣어보자. 우선 여기에서 rds서버 구축하는 방법을 따라 rds서버를 구축해준다.그리고 내 데이터베이스에 있는 정보를 파일로 뽑아낸다.왼쪽이 내 mysql데
주제 - foodly-store홈페이지 클론코딩구성원 - 프론트앤드 3명, 백앤드 3명기간 - 2주(20200227 ~ 20200306)협업 - Trello를 스크럼방식 협업. 주단위 백로그작성, 일단위 스탠드업미팅. git을 통한 백앤드 협업.처음음하는 프로젝트였기
일반적인 로그인 ? 유저가 브라우저에 접속하면 아이디 비밀번호 쓴다. 우리서버한테 아이디 비번을 주면백앤드 서버에서 데이터베이스에 아이디비번확인해서 아이디가 존재하고 비밀번호가 맞으면 우리 서버가 만든 토큰을 준다.(statesless라서 다음 에이피아이 호출, 다음페
깃 마스터 기준으로 위에 커밋이 쌓이도록하기(내가 이전에 커밋했어도)git rebase master : 마스터 최신으로 업데이트하고 마스터 기준으로 리베이스하겠다(그위로 커밋이 쌓이도록 하겠다.) 과거에 이거보다 과거에 커밋했던거 푸시할라면 포스
자료구조란? 데이터를 알맞은 구조에 넣어서 효율적으로 관리하는 데이터관리에 있어서 하나의 구조이다. 노트북을 쇼핑백에 넣는 것 보단 노트북가방에 넣어 들고다닐 때 생기는 편의성이 더 큰 것 처럼, 데이터의 성격에 따라 알맞은 자료구조를 사용하는 것은 시스템의 작동 기능을 좌우한다. 자료구조의 분류 Primitive Data Structure : inte...
작성한 코드의 작동여부를 검사하기 위해 테스트를 시행한다. 여러가지의 테스트방법 작성단계에서는 시간이 걸리지만 한번 작성해놓으면 거의 모든 기능을 자동으로 테스트 할 수 있어 유지보수에 유리한 유닛테스트를 알아보자.우선 테스트에는 어떤종류가 있을까?실재로 배포된 사이트
해당기능에 해당하는 feature brnach따고 리베이스 스쿼시. git flow란?깃을 이렇게 안쓸수도 있음. 마스터에 작업해서 마스터에서 푸시하는경우가있음.개인브랜치를 까고 거기서만 작업하는 경우도 많음.어떤프로세스를 도입해서 하느냐는 케바케다. git flow란
컨테이너라는 개념가지고 경량화된 가상화된 기술. 이 기술이 흥하기 전에는 vm ware같은 흔한 가상화 기술. 이 영역에서 확고한 위치를 가지고 있음. 최근에는 클라우드 세상에 오면서 가벼운거 찾는 추세. -> 이거랑 대비되게 컨테이너개념이 생김. 가상의 os설치환경을
핵심기능 <팔로우>유저간 서로 팔로우유저 로그인 시 팔로우상태(notification) 업데이트(페이스북에서 지구본 역할)팔로우 상태창 들어가서 나를 팔로우 한 상대 맞팔가능창을 refresh 할 때 마다 나의 팔로우 상태 업데이트<메세지>유저간 메세지 주고
파이썬의 딕셔너리 자료형은 key와 value로 이루어져 있고 key를 해시화 해서 메모리상 주소로 가지고 value를 key와 연결하여 저장시킨다. 해시화된 key는 중복된 값을 가질 수 없기 때문에 같은 key가 메모리상 들어오면 이후에 들어온 딕셔너리 객체로 대체된다. 이 딕셔너리 자료형의 특징을 이용하여 진행중인 사운드클라우드 클론 프로젝트에서 나...
프로젝트 소개 주제 SoundCloud홈페이지 클론코딩 구성원 Frontend(2), Backend(2), Native(1) 기간 2주(20200309 ~ 20200320) 협업 Trello를 스크럼방식 협업. 주단위 백로그작성, 일단위 스탠드업미팅. git re
선분이력은 무결성이 중요이다음 인스턴스의 시작일(created_at)을 참고해서 이전의 인스턴스의 updated_at을 설정해주어야함. 중간에 빈 시간공간이 생겨서는 안되고 선분으로서 연결되어야 한다는것이 핵심
파이썬 프로젝트에서 이미지파일이 request로 들어오면 리사이즈(소, 중, 대)를 해서 s3에 업로드하는 함수를 만들어보자. 이미지 리사이즈 함수 [0] 파라미터로 파일객체(이미지 파일로 유효성검사가 끝난)를 받는다. [1] 가로의 길이 640을 고정 값을 잡는다. [2] 파라미터로 들어온 파일객체를 pillow 라이브러리를 사용해 open해서 pil...
플라스크는 장고와 다르게 프레임워크자체에서 갖춰진 것이 거의 없기때문에 MVC(Model View Controler)패턴에 맞게 프로젝트를 초기설계를 해야했다. 이번 포스팅에서는 플라스크 프레임워크의 작동과 MVC패턴에 맞는 레이어드 아키텍처 초기설계에 대해서 알아보자. 우선 백앤드 api의 아키텍처에는 여러가지가 있을것이지만 가장 널리 사용되는 레이어...
오늘은 (주)브랜디 와 기업협업 프로젝트에서 중요 데이터의 이력관리를 위해 선분이력을 채택 하면서 값을 한번에 처리하기 위해서 사용했던 서브쿼리 두가지를 다뤄보고자 한다.셀러 관리 어드민 페이지에서 마스터권한을 가진 관리자가 한명의 셀러의 상태를 변경하는 상황을 가정해
오늘은 모든걸 걸었고, 많은 성취를 이루었고 많이 힘들었던 인생 최고의 3개월을 보낸 위코드 개발자 부트캠프를 끝내고 지금에 오기까지, 생각정리와 앞으로의 다짐에 대해서 적어보겠다. 위코드에 오기까지 2019년 겨울, 학교를 졸업하면서 치열하게 내가 하고싶은 일을
[0] 대소문자 구분이 없이 같은 값으로 처리해야 하기 때문에 처음부터 문자열을 대문자로 바꾸고 시작한다. [1] 문자열의 길이가 홀수일 때 중간에 있는 문자를 기준으로 뒤에 문자와 앞의 문자를 비교한다. 뒤에 문자를 역순으로 하여 앞의문자와 완벽하게 일치하면 1을 리
foodly-store홈페이지 클론코딩프론트앤드 3명, 백앤드 3명2주(20200227 ~ 20200306)Trello를 스크럼방식 협업. 주단위 백로그작성, 일단위 스탠드업미팅. git을 통한 백앤드 협업.Python, Django web frameworkBeauti
SoundCloud홈페이지 클론코딩Frontend(2), Backend(2), Native(1)2주(20200309 ~ 20200320)Trello를 스크럼방식 협업. 주단위 백로그작성, 일단위 스탠드업미팅. git rebase.Python, Django web fra
(주)브랜디 관리자용 페이지 만들기(developing admin page of Brandi inc)Frontend(2), Backend(3)4주(20200322 ~ 20200416)스크럼방식 협업(Trello)주단위 백로그작성(Weekly Backlog)일단위 스탠드
1 들어오는 숫자 리스트를 일단 순서대로 정렬한다.2 들어온 숫자리스트의 갯수를 변수화한다.3 왼쪽 끝값의 인덱스를 정의한다4 오른쪽 끝값의 인덱스를 정의한다5 오른쪽 끝값이 왼쪽끝값과 크거나 같아질 때 까지 while문을 돌린다.6 왼쪽 끝값과 오른쪽 끝값의 몫을 구
스택(stack) 자료형의 성질을 사용한 알고리즘 풀이를 알아보자. 스택이란? 스택은 영어로 쌓아놓은 더미 의 뜻을 가진다. 제일 밑에 있는 책은 가장 처음 쌓아진 책이다. 가장 위에 있는 책은 가장 나중에 올라간 책이다. 책을 가져올 때도 제일 위에 있는 책이 가
문제 [6,9,5,7,4] 와 같이 타워 높이가 value로 들어가는 리스트가 주어지고, 각 타워에서 왼쪽으로(0번 인덱스 방향으로) 레이저를 쏜다. 레이저는 레이저를 쏜 타워보다 높은 타워가 맞는다. 레이저를 쏜 타워의 인덱스 위치에 레이저를 맞은 타워의 번째(인덱스
API documentAPI documentERD
기존에는 클라이언트의 세션스토리지에서 로그인 상태를 확인했었다. 백엔드 서버에서는 클라이언트의 세션스토리지에 접근할 수 없기 때문에 로그인 토큰은 발행 해 줄 수 있었지만 백엔드 쪽에서 로그아웃은 구현할 수 없었다.redis를 활용해서 백엔드 서버에서 로그아웃을 구현해
프로젝트 소개(Project Description) 주제(Topic) 유저 관리와 상품 주문 기능 구현 구성원(Member) 1인 프로젝트 기간(Developing Period) 5일(20200504 ~ 20200510) 적용 기술(Skill Applied) Python 3.8.0 : language Pycharm venv : virtual envir...
두번의 시도 + 풀이과정참조를 했지만 제대로 이해하고 풀지 못했던 쇠막대기 문제에 대한 풀이를 해보겠다. 위와 같이 여러개의 쇠막대기를 2차원공간에 수평으로 놔두고 레이저를 발사해서 쇠막대기를 자른다. 여기서 잘려진 쇠막대기의 갯수를 구한다.input : '()((((
면접준비를 하면서 배웠던 객체지향적 프로그래밍과 그 패러다임에 맞는 ORM에 대해서 적어보겠다.영어로 물질 혹은 물체 지향적은 프로그래밍의 번역형태를 객체라고 부르는 것 같다. 즉, 프로그래밍을 물체의 형태로 만들어서 하겠다는 것이다. 어떠한 것을 제하는 프로그램을 짜
Node.js 모듈 종류 Node.js 는 크게 3가지를 제공한다 fs(file system) : 파일을 읽고 쓰는것 http : 네트워크 os : 운영체제 코어 모듈 > - 바이너리로 컴파일 되어야 하는 모듈이다 > - lib/ 폴더에 위치한다 node_modules 폴더에 있는 모듈 node에서 제공되는 기본 모듈 npm install을 통해서 받은 ...
호이스팅에 대해서 알아보자우선 호이스팅에 대해서 알기위해서는 자바스크립트 파일의 코드가 어떤과정으로 실행되는지 알아야한다코드가 실행되면 우선 선언된 변수와 함수들을 모아 객체로 만든다메모리상에서는 선언된 변수와 함수가 할당되고 이름이 포인터가 된다해당 이름으로 함수가
This posting mainly about three asynchoronous style in javascript and the usage of them we will get through the inefficiency and inconvenience of chained callback and make the code better with other ...
in MSA node.js architecture, we divide the project into modules which has it's role in the project. there is three main modules playing an important
this posting is in line with the role of modules at Node.js project when in comes to update data to database, we would use sequelize update method or SQL raw query. either way would need update value...
Posting about web socket and real time networkingForwarding request in certain interval to server and get the data. We are not sure when the request a
node.js 프로젝트를 배포하면서 도커를 사용해서 node.js 서버를 빌드하기로 했다. 도커이미지 파일을 작성하던 중, 데이터베이스 연결이 되지 않은 상태서 서버를 listen하는 명령어를 실행하니 일정 간격으로 데이터베이스 매니저가 connection요청을 계속
정적 매서드와 클래스 매서드의 차이점에 대해서 알아보자. 우선 리눅스에서 어플리케이션이 빌드되고 프로세스가 어떻게 생겼는지 알아보자. 리눅스에서 하나의 프로세스는 4개의 영역을가진다 > DATA HEAP STACK TEXT DATA 빌드가 되고나면 가장 먼저 ST
node js 는 어떻게 메모리 관리를 하는지 알아보자V8엔진은 Javascript를 크롬브라우저에서 돌려주는 엔진이다. V8엔진은 Javascript를 assembly code로 컴파일해준다. node js는 V8엔진을 C++로 wrapping(?)해서 Operati