본문 바로가기

웹개발

(29)
Next.js 개발 시작 - 프로젝트 생성, 기본적인 페이지 지금까지 Node.js, flask, 루비온레일즈로 웹 개발을 했었다.루비온레일즈는 블로그 시작하기 전에 했던거라 없지만 Node.js와 flask는 블로그에 정리되어 있다. Node.js, Next.js, flask가 각각 어떻게 다른지 간단하게 설명하자면, 우선 Node.js는 서버 사이드 애플리케이션 개발에 유리하다.그리고 Next.js는 react 기반이고 웹 애플리케이션 개발에 적합하다. Next.js는 서버 사이드 애플리케이션 개발에는 적합하지 않을 수 있다.flask는 Node.js와 Next.js와는 다르게 javascript가 아니라 파이썬 기반이고, 다양한 라이브러리로 인해 확장성이 높다.그리고 코드 자체가 간단하다는 것이 가장 큰 장점인 것 같다.프로젝트 자체가 가벼운 편이고 자유도가..
도커 개념 & 도커라이징 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 여기서 컨테이너는 격리된 공간에서 프로세스가 동작하는 기술이다.컨테이너 기술도 가상화 기술의 일종이지만 기존의 것과는 동작 방식이 다르다.기존의 가상화 기술은 os를 가상화했다. VMware나 Virtual Box 같은 os 전체를 가상화하여 사용하였는데 무겁고 느려서 사용하기 힘들다는 단점이 있다.이를 해결하기 위해 프로세스를 분리하는 기술이 나왔고 이것이 리눅스 컨테이너이다.CPU나 메모리는 딱 프로세스가 필요한 만큼만 추가로 사용하고 성능의 차이도 거의 없었다.하나의 서버에 여러개의 컨테이너를 실행하면 서로 영향을 미치지 않고 독립적으로 실행되어 편리하게 관리를 할 수 있고 컨테이너 하나를 만드는데 걸리는 시간은 1,2초로 가상머신보다 훨씬 빠르다..
게시판(flask)-관리자 글 삭제 권한 관리자 권한은 아주 간단하게 구현했는데, read링크에isadmin = session['username'] == 'admin'이렇게 isadmin 변수를 추가하고 read.html파일로 보내준다.{% if iswriter or isadmin %}삭제{% endif %}{if iswriter %}수정{% endif %}그리고 이런식으로 구조를 바꾸면 관리자일 때는 삭제 버튼이 활성화된다.회원가입할 때 이메일뿐만 아니라 username도 중복체크를 하기 때문에 username이 admin일 때 관리자로 판단한다.그리고 delete링크 처리 부분에서도 isadmin = session['username'] == 'admin'if username in data or isadmin:이런 코드를 넣으면 정상적으로 처..
게시판(flask)-제목, 내용 기준 검색 제목 내용 검색검색을 위해서 board.html 에 검색 form을 추가하였다.@app.route('/search')def search(): search_type = request.args.get('search_type') query = request.args.get('query') conn = connectsql() cursor = conn.cursor(pymysql.cursors.DictCursor) if search_type == 'title': cursor.execute("SELECT * FROM posts WHERE title LIKE %s", ('%' + query + '%',)) elif search_..
게시판(flask)-파일 업로드, 다운로드 파일 업로드, 다운로드 기능을 만들기 위해 먼저 필요한 라이브러리들을 import 한다.from werkzeug.utils import secure_filenameimport osfrom flask import send_from_directory그리고 mysql에서 posts 테이블에 filename이라는 속성을 만든다.mysql> ALTER TABLE posts ADD COLUMN filename VARCHAR(255) NULL; UPLOAD_FOLDER = 'uploads'ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif', 'pptx', 'hwp', 'hwpx', 'docx'}app.config['UPLOAD_FOLDER'] = UPLO..
게시판(flask)-댓글, 추천 댓글을 저장하기 위한 테이블부터 만들어야 한다.mysql> CREATE TABLE comments ( -> id INT AUTO_INCREMENT PRIMARY KEY, -> post_id INT, -> username VARCHAR(255), -> content TEXT -> );mysql에서 CREATE TABLE로 comments 테이블을 만들었다.@app.route('/comment/', methods=['POST'])def comment(id): if 'username' not in session: return redirect(url_for('login')) username = session['username'] con..
게시판(flask)-CRUD 우선 글을 저장하기 위한 테이블을 mysql에서 만들어줘야 한다.mysql> CREATE TABLE posts ( -> id INT AUTO_INCREMENT PRIMARY KEY, -> title VARCHAR(255), -> content TEXT -> );이렇게 만들었었는데 글을 쓴 username도 있어야 한다는 사실을 뒤늦게 깨달아서  ALTER TABLE posts ADD COLUMN username VARCHAR(255);이걸로 username 속성까지 추가해 주었다. CRUD 기능을 만들기 전에 먼저@app.route('/board')def board(): conn = connectsql() cursor = conn.cursor(pymysql.cu..
게시판(flask)-회원가입, 로그인, 비밀번호 유효성 검사 이전에 nodejs로 만들었던 게시판의 기능을 flask로 다시 구현하였다.비밀글, 이메일 인증, 게시판 카테고리 나누기는 제외하고 나머지 기능들을 같은 구조로 만들었다. 이전에는 CRUD부터 만들고 회원가입, 로그인 기능을 만들었지만 수정과 삭제는 본인의 글만 하게 하기 위해서회원가입, 로그인 기능을 먼저 만들었다. from flask import Flask, render_template, session, url_for, request, redirect, flashimport pymysqlapp = Flask(__name__)app.secret_key = 'sample_secret'def connectsql(): conn = pymysql.connect(host='localhost', user =..