1. user/models.py의 UserModel class 안에 follow 선언 # 우리의 모델을 우리가 ManyToMany Field로 참조하겠다. follow = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='followee') 2. $ python manage.py makemigrations $ python manage.py migrate - DB에 my_user_follow 테이블이 생성됨 3. user/views.py에서 user_view, user_follow 메서드 작성 @login_required def user_view(request): if request.method == 'GET': # 사용자 불러오기, exclu..
All
이전글 : [파이썬] Django - 기초 실습 3) Tweet (게시글) 게시글/댓글 조회 1. tweet/views.py에서 detail_tweet 함수 작성 @login_required def detail_tweet(request, id): if request.method == 'GET': user = request.user.is_authenticated # is_authenticated : 로그인 되어 있는지 검사 if user: target_tweet = TweetModel.objects.get(id=id) comment = TweetComment.objects.filter(tweet_id=id) return render(request, 'tweet/tweet_detail.html', {'twe..
이전글 : [파이썬] Django - 기초 실습 2) Tweet (홈 화면) 게시글 쓰기 1. templates/tweet/home.html에서 게시글 form 설정 ... 나의 이야기를 적어주세요 {% csrf_token %} 작성하기 ... 2. tweet/views.py의 tweet 함수에 POST 방식 작성 def tweet(request): if request.method == 'GET': user = request.user.is_authenticated # is_authenticated : 로그인 되어 있는지 검사 if user: return render(request, 'tweet/home.html') # 로그인 한 사용자라면 home.html 이동 else: return redirect('..
이전글 : [파이썬] Django - 기초 실습 1) User 로그인 이후 Tweet 화면 이동 1. tweet/urls.py에서 url에 따라 실행하는 함수 설정 # tweet/urls.py from django.urls import path from . import views urlpatterns = [ path('', views.home, name='home'), # 127.0.0.1:8000 과 views.py 폴더의 home 함수 연결 path('tweet/', views.tweet, name='tweet') # 127.0.0.1:8000/tweet 과 views.py 폴더의 tweet 함수 연결 ] 2. tweet/views.py에서 로그인 상태 검사 후 페이지 이동하는 home 메서드 작성 ..
처음 접하는 Django에 대해 실습을 진행하며, 그 순서를 기록하기 위해 작성한 글이다. 1. $ django-admin startapp user - 'user' 라는 새로운 앱을 만든다 - settings.py에서 INSTALLED_APPS 에 'user'을 추가 2. UserModel을 작성한다 # user/models.py from django.db import models # Create your models here. class UserModel(models.Model): # Meta Class : DB 테이블의 이름을 지정 class Meta: db_table = "my_user" username = models.CharField(max_length=20, null=False) passwor..
파이썬 알고리즘 문제를 풀던 중, 큐를 사용해야 하는 문제를 풀게 되었다. for 루프를 돌며 자료를 추가/삭제하는 문제였는데 queue를 사용하니 모두 시간이 초과 되었다. 시도했던 방법은 다음과 같다. 1) list를 큐로 사용 - 시간 초과 2) Queue 클래스 사용 - 시간 초과 답답해서 구글링을 하다보니 queue만 사용해도 충분한 문제인데도 deque를 사용해서 해결하는 경우를 발견하였다. 참고블로그 결론 부터 말하자면 deque가 가장 빠르다 아래에 비교한 내용을 정리하였다. 1) list 를 통한 queue 구현 파이썬의 list는 random access에 최적화된 자료 구조이기 때문에 pop(0)또는 insert(0, x)는 성능이 좋지 않은 연산이다. 이 두 연산은 시간 복잡도는 O..
목표 🌠 사물인식 기능을 활용한 서비스 페이지 만들기 계속될 팀프로젝트를 위한 figma,깃허브, 노션 등의 협업 툴을 적극적으로 사용해보기 마감기한까지 급하게 작성하다 제출하지 않도록, 제출일 전날까지 테스트 및 발표준비까지 완료하기 기획 📑 GitHub - sungwookoo/Flask_AI_pokemon Contribute to sungwookoo/Flask_AI_pokemon development by creating an account on GitHub. github.com 05.Project_Pokemon 💡Flask 와 AI 머신러닝을 활용한 프로젝트 입니다. imju0.notion.site KPT 📖 K - 블루프린트를 사용해서 각자의 작업 영역을 분리하여 관리한 것 (GIT 충돌 빈도도 ..
소수 구하기 문제 M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. 출력 한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다. 예제 입력 3 16 예제 출력 3 5 7 11 13 풀이 from sys import stdin # 소수 구하기 start, end = map(int, stdin.readline().split()) def is_prime(num): if num == 1: return False else: # 2부터 num의 제곱근(**0.5) 까지 검사 for i in range(2, int(num**0.5)+1): pr..
프린터 큐 문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다. 현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를 확인한다. 나머지 문서들 중 현재 문서보다 중요도가 높은 문서가 하나라도 있다면, 이 문서를 인쇄하지 않고 Queue의 가장 뒤에 재배치 한다. 그렇지 않다면 바로 인쇄를 한다. 예를 들어 Queue에 4개의 문서(A B C D)가 있고, 중..
팀원 / 기획서 / 일정 / DB / API (Notion 링크) Flask와 Tensorflow를 사용한 머신러닝 사물인식 팀 프로젝트를 진행하였다. 팀 회의 결과 사용자가 등록한 이미지와 가장 유사한 포켓몬 이미지를 출력하는 웹 프로젝트를 선정하였다. 이미지를 출력만 하는 것이 아니라 모델을 통해 학습한 결과와 정확도를 기록하는 서비스로 설계했다. 아래는 Notion 기획서 일부 내용이다. 📄 기획서 프로젝트명 닮은 포켓몬 찾기 기능 로그인 / 회원가입 회원가입, 로그인, 로그아웃 기능 사물인식기능 사진 업로드 업로드 된 사진 로그 저장 결과 화면 와이어프레임 회원가입 / 로그인 / 사진 업로드 / 사물인식 기능 / 결과화면 추가기능 커스텀 데이터셋을 만들어서 학습 브라우저의 웹캠 기능 사용으로 촬영..
딥러닝을 공부하며 캐글(Kaggle)의 dataset을 활용해 실습한 내용을 기록하기 위해 작성한 글이다 순서 Kaggle에서 Sign Language MNIST 를 받아 알파벳 수화 이미지를 이용해서 알파벳을 예측하는 과정은 다음과 같다 1. 캐글(Kaggle) 환경 변수 설정 (os) 2. 데이터셋 다운로드 3. 데이터셋 로드 (pandas.read_csv) 4. 전처리 5. 모델 설계 6. 모델 학습 7. 학습 결과 - history 그래프 1. 캐글(Kaggle) 환경 변수 설정 (os) import os os.environ['KAGGLE_USERNAME'] = 'username' os.environ['KAGGLE_KEY'] = 'key' 2. 데이터셋 다운로드 !kaggle datasets do..
수 찾기 문제 N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다. 출력 M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다. 예제 입력 5 4 1 5 2 3 5 1 3 7 9 5 예제 출력 1 1 0 0 1 풀이 이분 탐색 # 수 찾기 from sys im..
선형회귀, 논리회귀에서는 모두 1차 함수를 이용해서 문제를 풀었다. 하지만 자연계에는 직선으로 설명할 수 없는 문제들이 훨씬 더 많다. 이러한 문제들을 해결하기 위해 딥러닝을 사용한다. 딥러닝의 주요 개념 Batch size, Epoch - batch 와 iteration 만약 우리가 10,000,000개의 데이터셋을 가지고 있다고 가정해보자. 10,000,000개의 데이터셋을 한꺼번에 메모리에 올리고 학습시키려면 엄청난 용량을 가진 메모리가 필요하고 그 메모리를 사는데 (메모리가 없다면 개발하는데) 천문학적인 비용이 들 것이다. 따라서 우리는 이 데이터셋을 작은 단위로 쪼개서 학습을 시키는데 쪼개는 단위를 배치(Batch)라고 부른다. 예를 들어서 1,000만개의 데이터셋을 1,000개 씩으로 쪼개어 ..
다항 논리회귀를 공부하며 캐글(Kaggle)의 dataset을 활용해 실습한 내용을 기록하기 위해 작성한 글이다 순서 Kaggle에서 wine 정보(wineuci)를 다운로드 받아 와인의 정보를 이용해서 와인을 예측하는 과정은 다음과 같다 1. 캐글(Kaggle) 환경 변수 설정 (os) 2. 데이터셋 다운로드 3. 데이터셋 로드 (pandas.read_csv) 4. 전처리 5. 학습/검증 데이터 분할 6. 모델 학습 1. 캐글(Kaggle) 환경 변수 설정 (os) import os os.environ['KAGGLE_USERNAME'] = 'username' os.environ['KAGGLE_KEY'] = 'key' 2. 데이터셋 다운로드 !kaggle datasets download -d brynja..
오늘 공부한 이진 논리회귀를 캐글(Kaggle)의 dataset을 활용해 실습한 내용을 기록하기 위해 작성한 글이다 순서 Kaggle에서 타이타닉 탑승자(titanic)을 다운로드 받아 생존자/사망자를 분류하는 과정은 다음과 같다 1. 캐글(Kaggle) 환경 변수 설정 (os) 2. 데이터셋 다운로드 3. 데이터셋 로드 (pandas.read_csv) 4. 전처리 5. 모델 학습 1. 캐글(Kaggle) 환경 변수 설정 (os) import os os.environ['KAGGLE_USERNAME'] = 'username' os.environ['KAGGLE_KEY'] = 'key' 2. 데이터셋 다운로드 !kaggle datasets download -d heptapod/titanic !unzip tit..