본문 바로가기

Python 20

[파이썬으로 웹개발] 장고 닌자의 인증 기능을 알아보자 Django Ninja Django Ninja는 Flask만큼 간단하게 Django API Controller를 구성할 수 있는 보조 라이브러리입니다. 보안에 관련된 모든 사양을 학습하지 않아도 NinjaAPI를 정의할 때 혹은 api를 정의할 때 간단하게 Auth를 정의할 수 있는 방법이 있어 소개합니다. from ninja import NinjaAPI from ninja.security import django_auth # Django의 Auth 기능 그대로 사용 api = NinjaAPI(csrf=True) @api.get("/whoami", auth=django_auth) # auth=django_auth 만으로 해결 def whoami(request): return f"Authenticated .. 2022. 4. 13.
[프로젝트후기] 모바일 어플마켓 크롤러 개발 후기 근데 슬랙봇을 곁들인 Python 3.10, Django 4.0, MySQL 8(AWS RDS) , Django-ninja, BeautifulSoup4 4.10 사용. django 4.0 버전을 사용했다. 파이썬을 최최신 버전을 사용했는데, 3.8버전 이후에 생긴 추가 기능이 배포 서버(리눅스 우분투)에서 뻗어버려 당황했던 적이 있었다. 문자열 관련 메소드 중 removesuffix, removeprefix 메소드를 무심코 사용했었다가 그만... 앞자리 숫자가 같은 버전들 사이에서는 처음 겪는 이슈라 좀 당황스러웠는데 겪고 보니 딱히 필수적인 메소드도 아닌데 IDE가 추천해주는 대로 막 쓰면 이런 꼴이 나는구나 하는 교훈을 얻었다. Django ORM을 활용해 객체지향적 프로그래밍. Q, F, Count 등의 서브쿼리 메소드.. 2022. 3. 9.
[파이썬웹개발] 장고에 딱 붙고 착 붙는 데이터베이스는 무엇일까? Do Not Reinvent The Wheel! 바퀴를 재발명하지 말라! 라는 격언은 프로그래머에게 익숙한 말 중 하나입니다. 이미 발명되어 있는 바퀴를 두고 먼 길을 돌아가지 말라는 것입니다. Django는 이러한 철학에 따라 만들어진 파이썬의 중요한 웹프레임워크 중 하나입니다. Fast API나 Flask 같은 대체제 역시 인기지만 파이썬의 거의 유일한 웹프레임워크 같은 느낌을 주는데요. 오늘은 이 Django에 대한 개략적인 지식과, 백엔드 프레임워크로써 어떤 데이터베이스와 잘 맞는지 확인해보는 시간을 가지겠습니다. 최고의 속도: Django는 개발자가 웹사이트를 만들 때 기본적으로 구현하는 대부분의 기능들을 "이미" 구현해놓은 정답지입니다. 비밀번호 유효성 체크와 같은, 개발하려면 시간이 들지만 .. 2022. 3. 1.
[장고웹개발] 웹스크래핑, 장고와 함께 하기 * 웹스크래핑에 대해서는 깊게 다루지 않습니다. 블로그에서 웹스크래핑에 대한 정보를 많이 다뤘기 때문에, 그 내용에 이어서 장고로 기반을 갖추면 좋은 이유, 그리고 어떻게 하면 장고의 데이터베이스에 우리가 원하는 데이터를 예쁘게 담을 수 있는 지에 대해 초점을 맞추겠다. 우선 ORM이라는 것이 있다. Object Relational Mapping, 즉 객체-관계 매핑이라는 것은 객체 지향 패러다임을 이용해 데이터베이스에서 데이터를 쿼리하고 조작할 수 있는 기술이다. 데이터를 효율적, 생산적으로 저장할 수 있는 데이터베이스, 그리고 그들의 언어인 SQL은 우리가 평소에 작성하는 프로그래밍 언어들과 접근 방법 등에서 차이가 있고, 비즈니스 로직에 의해 이것들을 다룰 때 그 복잡성이 깊어질 수록 프로그래밍 언.. 2022. 2. 17.
[장고웹개발] 장고와 친해져 봅시다. (부제: 요즘도 장고 쓰냐) 스프링을 한참 공부하다가 장고를 공부하게 되었다. 새로운 직장은 기술 부채가 다소 있는 편인데, PHP로 대부분의 서버를 구성해온 상황에서 장고 서비스를 구축해 조금씩 이전해 나가려는 계획을 가지고 있다. 나는 장고에 대한 경험이 거의 전무했다. 과거에 파이썬 기초 교육을 끝내고 겁도 없이 장고에 도전했다가 나가떨어진 적이 있었기에 장고는 "괜히" 어렵고 "쓸데없이" 복잡한 구조라고 생각했던 적도 있다. 여우와 신 포도 같은 것이었다. 당시에 왜 장고에게서 어떤 벽을 느낀 것일까? 일단 웹 서버와 클라이언트가 상호 교류하는 것에 대한 이해가 부족했다. 거기에다 MVT... MVC... 단어만 들어도 어려울 것 같은 패턴 구조 ORM에 대한 갈증을 느끼기 전에 맛을 보니 쓴 맛만 보게 됐다. 프레임워크와 .. 2022. 2. 15.
내 티스토리는 무슨 키워드로 많이 유입될까??? 워드클라우드 다시 맛보기 오랜만입니다! 지난번에 스파르타코딩클럽 프로모션 강의로 워드클라우드 만드는 거 글 올렸었는데요. 카카오톡 대화내역으로 "우리들이 버릇처럼 쓰는 말을 알아보자"라는 느낌이었는데, 좀 더 실용적인 사용방법도 있지 않을까? 해서 준비해 보았습니다. 우선 준비물은 여러분의 티스토리 블로그와 파이썬 3.x 버전입니다. (사실 별 상관은 없습니다.) 사용하게 되는 라이브러리들은 다음과 같습니다. import requests import pandas as pd from wordcloud import WordCloud import matplotlib.pyplot as plt from collections import Counter requests==2.27.1 pandas~=1.3.5 matplotlib~=3.5.1 .. 2022. 2. 11.
[파이썬으로 웹스크래핑]RSS?? 그게 이거랑 무슨 상관인데 파이썬으로 웹스크래핑을 하는 글을 몇개 썼는데, 오랜만에 이어서 하나 더 써본다. 구글에 파이썬으로 웹스크래핑(혹은 크롤링) 검색을 하면 내가 설명했던 방법들(requests, bs4, selenium)이 주로 소개되어진다. 거기에 좀 드물지만 Scrapy 정도?? 일단 나는 나보다 웹스크래핑에 익숙하지 않은 사람들을 주 독자로 생각하고 글을 쓰고 있으니 scrapy는 일단 나중으로 미루고, 간단한 스크래핑 방법에 대하여 써보고자 한다. 아주 쉬운 방법이고 법적으로도 훨씬 클린한데, 어디에나 쓸 수 있는 기술은 아니라서 잘 알려지지 않은 듯하다. 사실 이걸 스크래핑이라 불러도 되는지 모르겠다. 우선 라이브러리/모듈을 받아보자 pip install feedparser 이름에서 어느정도 감이 오려나? 피드를.. 2022. 1. 12.
파이썬 / 루비 비교하기! (요즘 누가 루비를 배우냐면 그게 나다) 루비... 어쩌다보니 배우게 되었다. (큼큼) 아직 본격적인 것은 아니라 파이썬 카테고리로 비교글을 작성해 보려고 한다. 생활코딩의 파이썬 입문 과정에서도 파이썬과 루비를 동시에 설치하고 동시에 배우는 병렬 강의가 있던 만큼, 두 언어는 패러다임이 비슷하고, 문법도 닮았다. 같은 시간에 동시에 두 언어를 배운다면 확실히 비슷한 시간을 투자해서 파이썬 하나만 배우는 것보다 넓은 시각을 가질 수 있을 것 같다. 두언어의 닮은 점부터 나열해 보자. 대화형 프롬프트가 있다! (파이썬의 경우 iPython이 있고, 루비의 경우에도 irb가 있다.) 내장형 문서화 툴이 있어 커맨드 라인에서도 읽을 수 있다. (pydoc / rdoc) 라인 종결이 없습니다. 세미콜론 같은 실수는 없겠네요(!) 문자열 리터럴을 사용할.. 2022. 1. 9.
[파이썬으로 웹개발] 내일배움캠프 개발일지 모음 사이트 후기 SCC 내일배움캠프 개발일지모음!! itwassummer.shop 이것저것 할 일이 많아서 뭘 해야 할 지 모르는 기간을 보내고 있다. 주말에 짬이 생겨서 내일배움캠프 수강생들의 개발일지를 수집하고 검색할 수 있는 간단한 사이트를 만들었다. 기능 구현에 집중하기 위해서 뷰 디자인은 다음카카오의 브런치를 많이 참조했다. 한시간에 한번씩 등록된 멤버들의 블로그를 스크랩해 몽고디비에 담아오는 파이썬 파일과, 메인 REST API 로직이 담긴 플라스크 파일을 어떻게 배포하는 것이 좋을까 고민한 끝에, EC2 인스턴스 하나에 몽고디비와 크롤링 파일을 가동하고, 플라스크 앱 파일은 ElasticBeanstalk를 통해 자동재배포하도록 했다. 이게 뭐 별거라고 재미있었다. 이번에는 최근에 알게 된 플라스크의 블루프린.. 2021. 11. 7.
플라스크는 간단하다. 하지만 간단하기만 한 것은 아니다. 이번에 마이크로 프레임워크인 플라스크를 가지고 스파르타코딩클럽 사이트의 클론코딩을 해보았다. 이 과정에서 느낀 몇가지 배운 점들을 기록으로 남겨두고자 한다. 대형 프로젝트에는 부적합하다? 이 부분을 꽤나 고민했다. 그러나 프로그래밍에 대한 대부분의 고민이 그렇듯 이미 누군가는 이 고민을 진작에 답까지 내린 상태였고, 나는 그걸 주워다 쓰기만 하면 됐다. 출처도 문제없다. 공식문서에서 나온 것이니까. 플라스크 애플리케이션 객체를 만들때, from flask import Flask app = Flask(__name__) 이렇게 만들어왔을 것이다. 무슨 뜻인지는 알고 사용했었나? 저 __name__이 무슨 뜻인지는 알고 썼던가? __name__ == "__main__" 이라는 메인 함수를 사용할 때처럼, 저 .. 2021. 10. 27.
[알고리즘] 백준 1021번 문제 회전하는 큐 파이썬 풀이 https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net 2021. 10. 26.
[파이썬으로 웹개발] wsgi, 내가 플라스크 개발하는데 그런 거까지 알아야 되니? 오늘날 거의 모든 파이썬 웹 프레임워크는 웹 서버와 통신하기 위한 (유일한 수단은 아니지만) 주요 수단으로 WSGI를 사용합니다. 이것이 Django, Flask 및 기타 많은 인기 있는 프레임워크가 수행하는 방식입니다. 웹은 월드 와이드 웹의 줄임말로, www, w3, web 등으로 쓰입니다. 1989년 3월 컴퓨터 과학자인 팀 버너스 리가 만들었습니다. 그리고 저작권의 모든 부분을 공개하면서 웹이라는 것이 폭발적으로 세계에 퍼지고 쓰이게 되었습니다. 1993년에 웹은 약 1,400만 명의 사용자와 100개의 웹사이트 가 있는 초기 단계였습니다. 페이지는 정적일 수 밖에 없는 상태였지만 최신 뉴스 및 데이터 같은 동적 컨텐츠를 계속해서 생성할 필요가 있었습니다. 이에 대한 응답으로 Rob McCool과.. 2021. 10. 19.