일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- JPA
- 스프링 부트
- 개발
- ORM
- bytecode
- 스프링부트
- mysql
- node.js
- 파이썬
- Spring Boot
- 자료구조
- 자바
- rabbitmq
- 웹
- 웹 개발
- 디자인 패턴
- django
- HTTP
- 안드로이드
- java
- Python
- db
- python3
- 스프링
- 보안
- BCI
- 장고
- 데이터베이스
- Spring
- 파이썬3
- Today
- Total
목록분류 전체보기 (104)
semtax의 개발 일지
개요 이번 포스팅에서는 RDB에 트리구조를 저장하는 법에 대해서 포스팅을 진행하도록 하겠다. 프로젝트를 진행하거나, 소프트웨어 개발을 하다보면 계층형 데이터를 저장 해야되는 경우를 많이 볼 수 있다. 하지만, RDB에서는 기본적으로 트리 구조에 대한 저장 기능을 따로 지원해주지 않는다. (물론 최근 버전에서는 Recursive with 이나, connect by 같은 쿼리문을 이용해서 계층형 쿼리를 작성이 가능하긴 하다. 해당 기능은 추후 포스팅에서 다루도록 하겠다.) 따라서, 트리 구조를 저장할 방식을 고민을 해야한다. 이러한 고민을 하다 나온 아이디어 중 하나가, 바로 Closure Table이다. Tree In RDB : Closure Table Closure Table의 기본 아이디어는 다음과 같..
개요 이번 포스팅에서는 로드밸런싱을 해주는 haproxy에 대해서 알아 보고, 설치를 해보도록 하겠다. haproxy는 오픈소스로 풀려있는 로드밸런서이다. 사실 로드밸런서들은 다른 대체품들도 많기는 하지만, 오픈소스이고 국내에는 잘 안알려진거 같아서 이번기회에 포스팅을 하고자 한다. 컴파일 및 빌드 방법 1. 컴파일 및 빌드 의존성 환경 구축 먼저 컴파일 및 빌드에 필요한 패키지 들을 아래와 같은 명령어를 이용해 다운 받는다. sudo yum install gcc sudo yum install openssl-devel sudo yum install readline-devel 그런 뒤 빌드를 수행할 작업 폴더를 아래와 같이 생성해주고 해당 폴더로 이동한다. mkdir haproxy_work cd hapro..
개요 nginx는 수많은 옵션들을 지원한다, 그리고 많은 사람들이 모듈들을 만들어서 배포하고 있으므로 해당 모듈들을 가져다 써도 된다. 하지만 이러한 모듈들을 사용하려면 사용자가 직접 nginx를 컴파일 해주어야 한다. 따라서, 이번 포스팅에서는 리눅스 환경(CentOS 7)에서 nginx를 직접 컴파일해서 설치하는 법에 대해서 알아보도록 하겠다. 컴파일 및 빌드 방법 1. 컴파일 및 빌드 의존성 환경 구축 먼저 컴파일 및 빌드에 필요한 패키지 들을 아래와 같은 명령어를 이용해 다운 받는다. sudo yum install gcc sudo yum install openssl-devel sudo yum install mercurial 그런 뒤 빌드를 수행할 작업 폴더를 아래와 같이 생성해주고 해당 폴더로 이..
개요 이번 시간에는, 메가박스 알리미 서비스 제작을 위한, django 설치 및 기본 설정을 다루려고 합니다. 설치 python pip 를 이용해서 아래와 같이 설치를 해줍니다. $ pip3 install django 아래와 같이 명령어를 실행했을시, 버전이 출력되면 정상적으로 설치된 것입니다. $ python -m django --version 프로젝트 생성 아래 명령어를 이용해서 django 프로젝트를 생성 해줍니다. $ django-admin startproject megabox_alarm 위 명령어를 실행하면 megabox_alarm 이라는 폴더가 생성되고, 해당 폴더에 들어가면 아래와 같은 파일과 폴더가 생성되어있습니다. manage.py megabox_alarm 각 파일 및 폴더 설명은 아래와..
개요 이번 포스팅에서는 python의 메시지 큐 라이브러리인 celery에 대해서 소개하고 간단한 예제를 돌려보도록 하겠습니다. Celery? Celery는, 분산 메시지 패싱을 이용해서 비동기적으로 작동하는 작업 큐 입니다. Celery를 통해서 동기 방식(Synchronous)의 작업을 비동기 방식(Asynchronus)의 코드로 바꿔 줄 수 있습니다. Celery의 장점 중 하나는, python에서 가장 많이 쓰이는 웹 프레임워크인 Django과 연동하는 기능을 공식적으로 지원한다는것입니다. Celery 공식 홈페이지에서 Django 연동 가이드도 소개해주고 있어서 상대적으로 다른 프레임워크에 비해서 연동이 쉽습니다. Celery는 기본적으로 rabbitMQ를 메시지 브로커로 사용하는것을 권장합니다..
개요 이번 시리즈에서는 사용자가 등록한 메가박스 영화의 잔여좌석을 조회해서 알려주는 프로젝트를 진행할 예정입니다. 이번 포스팅에서는, 메가박스 영화 잔여좌석 목록을 크롤링하는 크롤링 함수를 제작할 예정입니다. 메가박스 데이터 수집 일단, 메가박스에서, 영화목록 및 영화 잔여좌석 목록을 어떻게 가져오는지 분석을 해봅시다. 먼저, 아래와 같이 크롬 브라우저로 메가박스에 접속을 해줍시다. 그런 뒤, F12로 개발자 도구를 켜서 네트워크 탭을 클릭한 상태로 예매버튼을 눌러줍시다. 그리고, XHR 탭을 클릭해 줍시다. 그러면은 위 그림과 같이 메가박스 예매버튼을 클릭했을때, 크롬 개발자 도구를 통해 HTTP를 이용해서 서버와 브라우저간에 어떤 데이터가 왔다갔다 하는지 확인할 수 있습니다. 계속해서 개발자 도구를 ..
개요 이번 포스팅에서는 파이썬 테스팅 도구인 pytest에 대해서 알아보도록 하겠습니다. 테스트 코드의 중요성 맨 처음 프로그램을 짜는 사람의 입장이나, 크기가 그렇게 크지 않은 서비스를 제작할때에는, 테스트의 중요성이 크게 중요하지 않다고 느껴진다. 사실, 코드의 크기가 별로 크지 않은 경우에는 그냥 직접 돌려보면서 테스트하는게 더 빠를 수도 있다. 하지만, 프로젝트의 크기가 점점 커지고 요구사항들이 추가되어 기능이 고도화가 되는 경우, 코드의 크기도 그에 맞춰서 증가하게 되고 각 모듈간 참조하는 경우의 수가 늘어나게 되어, 특정부분에서 에러가 났을때 버그를 해결하기가 정말로 힘들어지게 된다. 특히, 한 부분을 고쳤는데 그 고친 부분때문에 다른 부분에서 에러가 나는 일도 프로그램의 크기가 큰 경우 매우..
개요 이번 포스팅에서는, node.js를 이용해서 rabbitMQ를 사용할때 메시지를 라우팅 하는 방법에 대해서 다루어 보도록 하겠다. 라우팅? 라우팅이란 단어를 처음 들어본 사람들도 있을것이고, 네트워크 시간에 간략하게나마 들어본 사람도 있을것이다. 라우팅이란 단어를 사전에서 찾아보면 아래와 같은 뜻이 나온다. 라우팅(영어: routing)은 어떤 네트워크 안에서 통신 데이터를 보낼 최적의 경로를 선택하는 과정이다. 최적의 경로는 최단 거리가 될수도 있으며, 가장 빠른 시간에 전달하는 것으로 계산될수도 있다. 라우팅은 전화 통신망, 전자 정보 통신망(인터넷 같은) 그리고 교통망 등 여러 종류의 네트워크에서 사용된다 즉 핵심은, 어떠한 "데이터 덩어리"가 목적지 까지 최단(최적) 경로로 길을 찾아가는 것..