일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- CSS
- 파이썬
- Algorithm
- Django
- HTML
- 알고리즘 문제
- 장고
- Git
- c++
- django ORM
- 알고리즘
- API
- js
- 백준
- django widget
- form
- django rest framework
- javascript
- react
- Baekjoon
- MAC
- 파이썬 알고리즘
- 알고리즘 연습
- AWS
- es6
- DRF
- web
- 알고리즘 풀이
- PYTHON
- java
- Today
- Total
목록분류 전체보기 (341)
수학과의 좌충우돌 프로그래밍
프로그래밍에서 디버깅은 땔래야 땔 수 없는 중요한 요소입니다. django 에서도 마찬가지 입니다. 그래서 저번에 vs code 를 이용하여 django 에서 디버깅하는 방법을 포스팅하기도 했었습니다. 이번에는 django-debug-toolbar 를 소개해드리겠습니다. django에서만 사용가능하며, 현재 서버와 클라이언트 간의 request, response 등 다양한 정보를 브라우저에서 쉽게 확인할 수 있습니다. 이를 통해 header, sql. static, cache 등 여러 정보 역시 확인할 수 있습니다. 보다 더 자세한 내용은 django-debug-toolbar 의 공식 문서 를 확인해주시고 간단히 설치방법을 알아보도록 하겠습니다. django-debug-toolbar 설치 pip inst..
문제 보러 가기 9455번: 박스 문제 m행 n열로 이루어진 그리드가 주어진다. 일부 칸에는 박스가 들어 있다. 모든 박스가 더 이상 움직일 수 없을 때 까지 아래로 움직인다면, 박스는 쌓여진 상태가 된다. 그림 (a)의 그리드의 크기는 5행 4열이고, 7칸에는 박스가 들어있다. 모든 박스가 계속해서 아래로 움직이면, 그림 (b)와 같이 변하게 된다. 박스가 움직인 거리는 바닥에 쌓이기 전 까지 이동한 칸의 개수이다. 예를 들어, 맨 왼쪽 열에서 가장 위에 있는 박스가 움직인 거리는 2이 www.acmicpc.net ACM-ICPC 문제라고 하기에 쉽고 간단한 문제 였습니다. 박스는 각 column 에서만 이동을 할 수 있으므로 column 을 기준으로 나눠서 생각해주었습니다. 박스가 있을 경우, 바닥으..
SNS 를 비롯해서 많은 사이트에는 좋아요, 하트 라고 불리는 기능이 있습니다. 아마 다들 뭔지 아실거라고 생각합니다. 이번에는 이 기능을 구현해보도록 하겠습니다. 그러기 위해서 부가적으로 구현되어야 할 것이 많습니다. 유저부터 시작해서 게시물 등 많지만 이 부분은 앞선 포스팅에도 있으므로 빠르게 넘어가도록 하겠습니다. 추가적으로 기능 구현에 주를 두고 있으므로 templates 의 디자인적인 부분은 아예 신경 쓰지 않았습니다. 좋아요 기능 구현 위에서 말했듯이 이번에 알아볼 중요 코드 외에 부가적인 코드가 많습니다. 그 부분 보다는 좋아요를 위한 코드 위주로 설명을 하도록 하겠습니다. # like/models.py class Profile(models.Model): user = models.OneToO..
html5 부터는 javascript 를 이용하여 간단히 음악 파일을 다룰 수 있습니다. 이에 대해서 알아보도록 하겠습니다. Audio 객체 그러기 위해서는 Audio 객체를 사용합니다. 이를 선언하는 방법은 다음과 같습니다. var audioFile = new Audio(); Audio 객체 는 다음과 같은 속성을 가집니다. src 음악 파일의 경로나 url 을 지정합니다. volume 음악의 음량을 설정합니다. 0~1 사이의 값을 가지며, 1에 가까울수록 소리가 큽니다. currentTime 음악의 재생 지점입니다. 초 단위이며. 0 값인 경우에 처음부터 음악을 재생합니다. loop 음악의 반복 여부를 결정하며 boolean 값을 갖습니다. Audio 객체 는 다음과 같은 메소드를 가집니다. play..
model 을 설계하는데 있어서 관계는 뺴놓을 수 없는 중요한 개념입니다. 각 모델 간에 여러 관계를 정의함으로서 많은 걸을 구현 할 수 있게 됩니다. 관계는 총 3가지가 있으며 이번에는 바로 그 관계에 대해서 알아보도록 하겠습니다. ForeignKey ForeignKey 는 1:N 관계를 의미합니다. 예를 들어 게시글과 댓글을 생각할 수 있습니다. 하나의 글에는 그 글에 해당하는 댓글이 여러 개 존재하게 되므로 ForeignKey 를 만족합니다. django 에서의 사용 예시 class Post(models.Model): # 생략 class Comment(models.Model): post = models.ForeignKey(Post, on_delete=models.CASCADE) 1:N 중에서 N 인..
이번 시간에는 데이터베이스에 저장되어 있는 데이터를 불러오는 방법에 대해서 알아보도록 하겠습니다. queryset 이란 이를 위해 빼놓을 수 없는 개념이 바로 queryset 입니다. query 란 데이터베이스에 정보를 요청해주는 것을 의미하며 파이썬으로 작성한 코드가 sql 로 매핑되어 queryset 이라는 자료 형태로 값이 넘어오게 됩니다. 이는 순회가능한 데이터로서 이를 이용하여 1개 이상의 데이터를 불러와 사용할 수 있습니다. queryset 의 특이한 점은 Lazy 한 특성입니다. 미리 db 에 접근해서 값을 불러오는 것이 아니라 출력 등과 같이 필요한 순간에 sql로 매핑되고 이를 통해 db에 접근해 값을 가져오게 됩니다. queryset 생성하기 queryset 에 대해서 알아보기 위해 m..
django 에서 기본적으로 주어지는 admin 페이지는 개발자에게 있어서 많은 편리함을 제공해줍니다. 이를 커스텀하여서 더 효율적으로 사용해보도록 합시다. admin 페이지에 models 등록 # {앱이름}/admin.py from django.contrib import admin form .models import Post # 방법 1 admin.site.register(Post) # 방법 2 class MyAdmin(admin.ModelAdmin): ... admin.site.register(Post, MyAdmin) # 방법 3 @admin.register(Post) class MyAdmin(admin.ModelAdmin): ... models 에는 Post 가 존재하고 이를 import 해와서 ..
model 에 대한 두 번째 포스팅입니다. 저번 포스팅은 django 를 처음 공부하면서 정말 기본적인 내용에 썼다면, 이번에는 공부하면서 좀 더 필요하다고 생각이 된 부분들에 대해서 새롭게 추가해보았습니다. ORM 이란? ORM 이란 object-relational mapping 의 줄임말로서 영어 그대로 해석하면 객체의 관계를 연결해주는 것을 뜻합니다. 데이터베이스는 SQL 로 관리를 하게 되는데 DJango 같은 경우, 파이썬 코드와 SQL 를 매핑 시켜줌으로서 파이썬 코드로도 쉽게 데이터베이스를 다룰 수 있게 됩니다. 좀 더 정확히 말하자면 데이터베이스 테이블 과 models.py 의 파이썬 클래스 를 1대1로 매핑하게 됩니다. 장고의 장점 중 하나로도 ORM 기능이 지원되는 점이 뽑힐 만큼 매력..
vs code 로 디버깅 하는 과정을 알아보겠습니다. 디버깅 하는 방법이야 여러가지 방법이 있겠지만 저는 이전까지 확인하고 싶은 변수를 print 함으로서 확인하는 과정을 거쳤습니다. 하지만 한계점을 많이 드러냈고 이에 따라 제대로 된 디버깅을 하고자 하였습니다. 이번 시간에는 vscode 를 이용하여 더 정확하고 활용성 높은 방법을 알아보도록 하겠습니다. 테스트를 해보기 위해서 간단한 장고 프로젝트를 만들겠습니다. 현재 프로젝트와 core 라는 app 을 만들었고 상황은 다음과 같습니다. # config/urls.py from django.contrib import admin from django.urls import path from core import views urlpatterns = [ pat..
소비자 개선 앞선 포스팅 WebSocket (2) 에서 작성했던 소비자는 동기적으로 작성되어 있습니다. 이렇게 함으로서 django 의 I/O 함수를 쉽게 호출할 수 있어 편리했습니다. 소비자를 비동기식으로 작성하게 되면 요청을 처리할 때, 추가적인 쓰레드를 생성하지 않습니다. 즉 성능 개션을 불러올 수 있는 것이죠. 실시간 채팅같은 경우에는 성능이 굉장히 중요한 요소이기 때문에 이 과정이 필요합니다. 앞에서도 한 번 언급했던 sync_to_async 를 통해서 django 의 동기적인 코드를 비동기적으로 수행하도록 할 수 있지만 지금 사용할 async-native 라이브러리보다 성능이 떨어집니다. # chat/consumers.py from channels.generic.websocket import ..