본문 바로가기
RedWood.js 이메일 기능 추가하기 초기 가설: 다음 라이브러리 (패키지)를 통해서 메일링 기능 구현 GitHub - sofn-xyz/mailing: Build, test, send emails with React 사용법: yarn: yarn add mailing-core mjml mjml-react nodemailer &&\\ yarn add --dev mailing @types/mjml @types/mjml-react @types/nodemailer 또는 npm: npm install --save mailing-core mjml mjml-react nodemailer &&\\ npm install --save-dev mailing @types/mjml @types/mjml-react @types/nodemailer npx mailing.. 2022. 8. 17.
[파이썬으로 웹개발] 장고 닌자의 인증 기능을 알아보자 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.
PNG와 JPG (또는 JPEG) 차이점은??? 뭘 쓰는 게 더 좋을까? PNG, JPG 또는 JPEG: 주요 차이점 PNG: 투명하고 깨끗해요 Portable Networks Graphics의 약자인 PNG는 이미지 편집에 주로 사용되는 인기 있는 래스터 기반 그래픽 형식입니다. PNG는 이미지의 전반적인 품질을 유지하기 위해 무손실 압축 기술을 따르는 비특허 파일 형식입니다. 한 번에 전체 이미지를 압축하는 대신 PNG는 원래 이미지 품질을 유지하는 픽셀 간 압축을 지원합니다. 하지만 PNG의 가장 큰 장점은 투명도를 지원한다는 것입니다. 이는 PNG 이미지의 배경을 투명하게 하여 다른 이미지에 쉽게 오버레이할 수 있음을 의미합니다. PNG 형식에는 APNG, PNG-8(1비트 투명도 및 256색 포함) 및 PNG-24(1600만 색상 지원)와 같은 몇 가지 변형도 있습니.. 2022. 3. 27.
데이터베이스 이론: 트랜잭션(Transaction)과 인덱스(Index) ACID 트랜잭션 트랜잭션이란 무엇인가? 데이터베이스와 데이터 스토리지 시스템이라는 맥락에서 트랜잭션이란 한 단위의 작업으로 취급되는 모든 작업을 말합니다. 트랜잭션은 완전히 완료되기도 하고 전혀 완료되지 않을 수도 있으며, 스토리지 시스템을 한결같은 상태로 둡니다. 트랜잭션의 전형적인 예는 은행 계좌에서 현금을 인출할 때 일어나는 일입니다. 현금이 계좌에서 인출되거나, 인출되지 않거나 둘 중의 하나일 뿐 그 중간 어딘가의 상태란 없습니다. A.C.I.D. 속성: 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 영속성(Durability) 원자성(Atomicity) - 트랜잭션에 속한 각각의 문(SELECT, INSERT, DELETE, UPDATE)을 하나의 단.. 2022. 3. 22.
[프로젝트후기] 모바일 어플마켓 크롤러 개발 후기 근데 슬랙봇을 곁들인 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.
[AWS] EC2 우분투에 파이썬 장고 프로젝트 배포하기 파이썬의 강력한 웹프레임워크인 장고를 우분투 20.04 버전으로 배포하겠습니다. 우선 개발 서버에서 사용 중인 라이브러리들을 requirements.txt에 저장할 것입니다. 대부분의 자동 배포 프로그램에서도 준수하는 이름이니 파일명은 그대로 사용해 주세요. pip freeze > requirements.txt 만들어진 requirements.txt 파일을 확인하고, 개발 서버에서만 사용하거나 이제 더 이상 사용하지 않을 파일들을 정리해줍니다. 참고로 이번 배포에서는 GUnicorn이라는 모듈을 사용해 배포할 것이므로 이 모듈도 추가해줍니다. 제 예시를 보여드리자면, 이런 모듈들을 사용했습니다. asgiref==3.5.0 beautifulsoup4==4.11.1 cachetools==5.0.0 certi.. 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.