전체 글 373

관계형 데이터베이스 (Relational Database Management System)

관계형 데이터베이스 (Relational Database Management System) 구조화된 데이터를 저장할 수 있는 것이 핵심입니다. (강점) 비구조화된 데이터를 다루는데 적합하지 않습니다. (약점) 비구조화 데이터를 다룰 수 있는 빅데이터의 부상에도 불구하고 대부분의 데이터는 구조화되어 있으므로 여전히 중요한 핵심 기술입니다. RDBMS는 SQL(Structured Query Language)을 이용하여 데이터를 조회하고 조작합니다. 구조화 데이터 & 비구조화 데이터란? 구조화된 데이터(structured data)와 비구조화된 데이터(unstructured data)는 데이터의 형태와 조직 방식에 따라 구분됩니다. 구조화된 데이터: 이는 정의된 데이터 모델에 따라 구성되며, 일반적으로 데이터..

SQL 2023.11.12

4주차 - 5 [특강] 좋은 코드란?

좋은 코드를 작성하는 것은 훌륭한 개발자의 필수 요소 ● 깔끔한 코드는 읽고, 이해하고, 수정하기 쉬움 ● 코드는 명확한 이름, 일관된 형식, 의미 있는 주석으로 체계적으로 구성 ● 좋은 코드는 테스트가 가능하며 코드와 함께 유닛 테스트를 작성해야 함 ● 클래스와 함수는 분명한 하나의 일을 하도록 구현해야 함 ● 코드는 모듈화되어야 하며 중복을 피해야 함 ● 오류 처리는 코드베이스 전체에서 철저하고 일관성 있게 이루어져야 함 (로깅) ● 코드는 작성자가 아닌 사용자를 염두에 두고 설계해야 함 ● 단 중요한 일에 더 완벽을 기할 것 DRY(Don't repeat yourself) 1. 반복되는 작업이라면 함수로 만들 것 2. 동일한 일이 반복된다면 루프로 만들 것 3. 비슷한 클래스를 반복해서 만든다면 클..

데브코스 TIL 2023.11.10

4주차 - 4 [프로젝트] 간단하지만 치명적인 것들

오늘은 프로젝트를 진행하며 봉착한 난관과 해결책에 대해 짧게 남기려한다. Open API open api가 늘 신속하게 그리고 정확하게 데이터를 전달해주지는 않는다. API를 제공하는 측에서 데이터를 어떻게 수집하는지도 최대한 확인해둬야 한다. 예를 들어 Open API를 제공하는 A라는 곳이 존재한다고 가정하자. A는 평소에 데이터들을 B와 C로 부터 공급받는데 만일 사고가 생겨 B 혹은 C로 부터 데이터를 제대로 제공받지 못하면 JSON의 키값 혹은 XML의 태그 값들을 빈 상태로 제공할 수도 있다. 만일 이에 대한 예외처리가 제대로 되어있지 않으면 A가 제공하는 Open API를 활용하는 서비스에 문제가 생긴다. 시험삼아 한 처음 몇번의 시도는 모두 성공이었고 처음 며칠동안 정상이었던 서비스에 갑자..

데브코스 TIL 2023.11.09

4주차 - 3 [프로젝트] 간단하지만 중요한 것들

이번주 바쁘다는 핑계로 TIL 작성을 너무 소홀히 했다. 이번에 팀원들 덕분에 알게된 기술들 중 간단한 것들만 몇개 뽑아 기록해본다. dotenv url1에 남들과는 공유해서는 안되는 APIKEY를 넣어 Open API를 이용하려 한다. 다른 팀원들에게 노출되어서는 안되고 설령 믿을 수 있는 팀원이더라도 Git은 대부분의 repository가 public 상태로 모두에게 공개되기 때문에 이를 하드코딩 방식으로 적어 넣어서는 안된다. 문제는 반드시 협업을 위해 Git을 사용해야 한다는 점인데 이를 어떻게 해결할 수 있을까? 이 때 사용하는 것이 바로 dotenv다. 아주 간단하게 설명하면 .env형식의 파일을 하나 생성해 민감한 정보들을 담고 이를 코드에서 참조해 사용한다. 로컬상에 보관하고 Git과 같은..

데브코스 TIL 2023.11.08

4주차 - 1 [프로젝트]

프로젝트를 위해 조원들과 첫 미팅을 가졌다. 다들 열정적으로 임해준 덕분에 아이디어 선정 역할 분담이 무사히 끝났다. 언제나 그랬듯 아이디어를 내는 것과 이를 구현하는 것은 전혀 별개의 문제 Git 관리와 ERD, DB 환경, 거기에 가상환경에 사용할 버전 관리에 이르기까지 역시나 개발은 세팅이 절반 이상 API로 데이터를 가져오는 임무를 맡았다. 크롤링보다는 쉽지 않을까 기대했는데 역시 만만치가 않다. 다들 실력이나 열정, 인성 모든 측면에서 배울 점이 많다. 좋은 팀원들을 만난 것에 감사한다. 방해가 안되고 최소한 덜 되도록 열심히 임하자

데브코스 TIL 2023.11.06

장고(Django) 투표(Votes) 기능 구현하기 2 - Serializers & Views

Vote의 상세 페이지를 만들어 그 곳에서 로그인한 사용자가 투표를 하거나 자신이 한 투표들을 조회하고 이미 진행한 투표를 다른 곳에 행사하도록 수정하는 기능을 구현하겠습니다. polls_api/serializers.py from polls.models import Question,Choice, Vote class VoteSerializer(serializers.ModelSerializer): voter = serializers.ReadOnlyField(source='voter.username') class Meta: model = Vote fields = ['id', 'question', 'choice', 'voter'] polls_api/views.py from polls.models import Q..

장고 (Django) 2023.11.05

장고(Django) 투표(Votes) 기능 구현하기 1 - Models

로그인한 사용자만 투표를 할 수 있도록 만들기 우리가 저번에 뷰에서 메서드 기반으로 만든 vote 기능은 구현과 실습에만 초점을 맞췄기 때문에 누구나 자유롭게 들어와 투표를 제한 없이 여러번 할 수 있다는 문제가 있었습니다. 우리가 원하는대로 한명의 사용자가 하나의 question에서는 하나의 표만 행사할 수 있도록 하겠습니다. polls/models.py # (..생략..) from django.contrib.auth.models import User # (..생략..) class Vote(models.Model): question = models.ForeignKey(Question, on_delete=models.CASCADE) choice = models.ForeignKey(Choice, on_de..

장고 (Django) 2023.11.05

장고(Django) RelatedField

RelatedField란? Django의 RelatedField는 Django REST framework (DRF)에서 사용되는 직렬화 클래스의 일부로, 관련된 모델 객체에 대한 정보를 표시하고 연결된 데이터를 표현하는 데 사용되는 필드입니다. RelatedField는 다양한 관계를 다루는 데 도움이 되며, 다음과 같은 목적으로 사용됩니다: 1. **관계된 모델에 대한 정보 제공**: RelatedField는 직렬화 클래스에서 관련 모델 객체의 정보를 표시하는 데 사용됩니다. 예를 들어, ForeignKey, OneToOneField, ManyToManyField 등을 사용하여 다른 모델과의 관계를 나타내는 필드에 대한 데이터를 표시할 때 사용됩니다. 2. **연결된 데이터 표현**: RelatedFie..

장고 (Django) 2023.11.05

장고(Django) User 권한 관리

각 질문(question)마다 작성자 표시하기 로그인한 사용자가 Question을 만들 때 사용자가 만든 질문이라는 것을 표현해보겠습니다. Question List 페이지에서 각 질문마다 질문을 작성한 사용자 필드 owner라 표시되도록 할겁니다. Question List 페이지에 로그인&로그아웃 기능 추가 먼저 Question List에서 로그인하고 로그아웃할 수 있는 기능을 더할겁니다. polls_api/urls.py rest/api-auth 패턴을 path로 추가합니다. Django Rest Framework의 `rest_framework.urls` 패턴은 Django에서 제공하는 기본 로그인 및 로그아웃 페이지를 포함하는 URL 패턴입니다. 이 패턴을 사용하면 API에 로그인 및 로그아웃 기능을 ..

장고 (Django) 2023.11.05