전체 글 11

Jetbrains 유료 서비스를 무료로 이용해보자

https://www.jetbrains.com/ko-kr/ JetBrains: 소프트웨어 개발자 및 팀을 위한 필수 도구 www.jetbrains.com 파이썬의 대표적인 IDE Pycharm, 자바의 대표적인 IDE중 하나인 IntelliJ IDEA 모두 Jetbrains에서 배포중인 프로그램이다. 그런데 다운로드를 받으려 들어가보면 위와 같이 유료 버전, 무료 버전으로 나뉜다. 물론 무료 버전으로도 충분히 많은 기능을 사용할 수 있지만, 몇몇 기능에 제약이 생긴다. 예를 들어, IntelliJ를 사용하려 하는 많은 사람들은 대표적인 백앤드 프레임워크인 Spring을 사용하려 할텐데, 안타깝게도 Community 버전에서는 스프링이나 HTTP클라이언트, 데이터베이스도구 등을 지원하지 않는다. 웹 개발은..

카테고리 없음 2022.01.20

파이썬은 왜 느릴까? ( + 시간초과를 해결할 수 있는 몇몇 기술들)

https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 1. 동기 N-Queen 문제를 파이썬으로 풀어보며 이 문제에 대해 생각해보게 됐다. 분명 같은 알고리즘을 이용해 C++로 구현한 코드는 통과가 되는데, 파이썬은 통과가 되지 않는다. 흔히들 파이썬의 단점을 꼽으면 시간이 오래 걸린다는 점을 꼽는다. 그렇다면 왜 시간이 오래 걸리는 것일까? 2. 핵심 이유 https://jhkang-tech.tistory.com/136 인터프리터 언어와 컴파일 언어의 차이 안녕하..

[Algorithm] 2022.01.08

DRF Serializer의 필요성과 사용법

필요성 Django는 models.py를 이용해 db를 만들어 사용한다. 하지만 이를 프론트앤드에 그대로 넘겨줄 수는 없다. 통용될수 있는 데이터 형식인 JSON 혹은 xml로 변환시켜 넘겨줘야 하고, 이를 Serializer가 해줄 수 있는 것이다. 만들면서 하나씩 알아보자. models.py 만들기 우선, 간단한 models.py를 만들어보자. from django.db import models class Article(models.Model): title = models.CharField(max_length=100) content = models.TextField() class Meta: db_table = 'article' 간단한 Article이라는 모델을 만들었다. columns는 제목과 내용으..

[DRF] 2021.12.14

도메인 등록) 무료 도메인 등록 방법

웹 배포를 한 후, 도메인을 등록해보자는 마음을 가지고 무료 도메인을 알아봤다. https://xn--220b31d95hq8o.xn--3e0b707e/ 내도메인.한국 - 한글 무료 도메인 등록센터 한글 무료 도메인 내도메인.한국, 웹포워딩, DNS 등 무료 도메인 기능 제공 xn--220b31d95hq8o.xn--3e0b707e 이곳에서 간단한 회원가입을 마친 후 무료 도메인을 등록할 수 있었다. 그 과정을 간단히 정리해보겠다. 1. 도메인 검색 후 등록 원하는 도메인을 검색하면 등록할 수 있는 도메인이 뜰텐데 그 중 마음에 드는 도메인 등록하기를 누르자. 2. 도메인 관리(수정) ip 주소를 연결해야 등록이 완료된다. 단일 페이지를 체크하고 내용에 위 코드를 붙여넣기하자. ip주소는 본인의 ip주소로 ..

EC2) 리눅스 ubuntu 크론탭으로 파이썬 파일 자동실행하기

웹 배포를 하다보면 크론탭이 필요할 때가 있다. 필자의 경우에는 크롤링을 하는 파일을 1시간마다 돌려야 하는 경우였는데, 처음에는 Django 크론탭을 사용하려 했으나 실행이 잘 되지 않아 찾아보던 중 우분투 크론탭에 관해 알게 되었다. 사용법은 아주 간단하다. 콘솔에서 crontab -e를 실행하면 코드를 작성할 수 있는 화면이 나온다. 해당 화면에서 시간 , 사용할 언어, 돌릴 프로그램 순으로 작성하면 된다. ex) 0 * * * * /home/ubuntu//venv/bin/python3 /home/ubuntu/web-coin-crawler/back/server/cron.py 이 코드는 1시간마다 python3을 이용하여 cron.py를 돌린다는 것을 의미한다. 시간 설정은 아래 포스트를 참고하자. ..

배포) Django + React + Gunicorn + Nginx + EC2 배포하기

Django로 백앤드, React로 프론트를 구성하여 웹을 만든 후, 배포 방법을 찾아보는데 생각보다 자료가 많이 없음을 느꼈다. 아마 대부분 Django + Django HTML 혹은 Node.js + React로 구성하기 때문이라고 추측된다. 때문에 많은 블로그들과 stackoverflow를 탐험하며 배포시도를 했고, 그 결과를 여기 정리하려 한다. 1. 리액트 앱 빌드하여 Django에 넣기 첫번째로 할 일은 리액트 프로젝트에서 npm run build를 실행하여 빌드 폴더를 만드는 것이다. 그 후 Django 프로젝트 디렉토리 안에 client 폴더를 만들어 build 폴더 안에 있는 파일들을 모두 넣어준다. 2. html 파일 수정 build를 통해 만들어진 index.html 파일을 들어가면 ..

5) Django+EC2+Gunicorn+Nginx 배포

https://velog.io/@y1andyu/Nginx-gunicorn-Django-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0 EC2 + Nginx + gunicorn + Django 배포하기 gunicorn 설치 잘 작동되는지 확인 service 파일 등록 Nginx 설치 server (enables, available) 등록 시작 django debug = False로 변경 STATIC_ROOT 설정 collectstatic 실행 velog.io 이제 웹사이트를 완성하고 배포를 해볼 시간이다! 전체적인 과정은 위 포스트를 따라했으나, 중간중간 막히는 부분이 있어 구글링과, 현직 개발자인 친구의 도움을 받아 배포를 완료했다. https://velog.io/@misun9283/A..

4) Django 모델 자바스크립트에서 JSON 파일로 가져오기

지난 포스트에서 디자인적인 부분은 많이 개선되었고, 이제 남은건 크롤링한 데이터를 넣고 크론탭으로 자동화를 시킨 후 배포하는 것이다. 크롤링하는 과정은 협업하는 친구가 맡아 Django 모델에 JSONField로 딕셔너리 형태로 넣어주었다. class BlogData(models.Model): title = models.CharField(max_length=200) content = models.JSONField(default=dict) BlogData.objects.all().delete() BlogData(title="COIN_DATA", content=json.dumps(preprocessingDict(result.copy()))).save() 첫번째 코드는 Django 모델, 두번째는 cron.p..

3) 캘린더 구현 - 클릭시 div 노출, 스크롤바 디자인

이 사진은 기획안에 있던 사진으로, 코인 이름을 클릭하면 div가 노출되고, div 바깥을 클릭하면 다시 안보이게 되는 기능이다. 이를 구현하기 위해 먼저 body에 div 하나를 만들었다. detail display:none을 사용해 평소에는 보이지 않게 만들었고, JS에서 코인 이름 클릭 이벤트리스너를 이용해 보이게 만들었다. newdiv.addEventListener('click', function () { detail.innerHTML = ""; let divEls = document.querySelectorAll('.detail > div'); for (let i = 0; i < divEls.length; i++) { divEls[i].remove(); } for (let i = 0; i < p..

2) 캘린더 구현 - 가로캘린더, 스크롤 드래그로 이동, 속도 설정

캘린더의 기본 베이스는 아래 사이트에서 가져와서 사용했다. hyojin96.tistory.com/entry/Calendar-%EA%B5%AC%ED%98%84-%EB%AA%A9%ED%91%9C Calendar 구현 목표 ※ 목차 Calendar 구현 목표 Calendar 코드리뷰 - HTML마크업 Calendar 코드리뷰 - CSS 적용하기 Calendar 코드리뷰 - JavaScript 적용하기 Calendar - 프로젝트를 마치며 구현된 최종 캘린더 이미지 구현한 계기.. hyojin96.tistory.com 그 후 테스트 용도로 데이터를 넣어보았다. 이전 게시물에서 말했듯 스크롤이 길어지는 모습을 보였고, 때문에 시간을 조금 투자해 가로 스크롤로 바꿀 수 있었다. 이때 프로젝트에 필요없는 부분이라 생..