분류 전체보기 57

[C++ 자료구조론] 3장 스택과 큐

템플릿 template 클래스와 함수의 재사용에 기여 템플릿/ 인수화 타입을 이용해 소프트웨어 개발 시간과 비용 절약 SelectionSort 선택 정렬 기법을 이용해 n ≥1 개의 서로 다른 T의 집합을 정렬 사용 시 주의사항 사용자 정의 데이타 타입에 대해서는 별도로 정의해야 한다. template // 이 부분을 반드시 넣어야 한다. void SelectionSort(T *a, const int n) { // n개의 T a[0]부터 a[n-1]까지 비감소 순으로 정렬한다. for ( int i = 0; i < n; i++) { int j = i; // a[i]와 a[n-1] 사이에 가장 작은 T를 찾는다 for (int k = i + 1; k < n; k++) if (a[k] < a[j]) j = ..

[C++ 자료구조론] 2장 배열

추상 데이타 타입과 C++ 클래스 명세와 구현을 구별하고 사용자로 부터 ADT의구현을 은닉하기 위해 클래스(class) 제공 클래스 구성 클래스 이름 데이터 멤버 (멤버 변수) 멤버 함수 💡 프로그램 접근 레벨 : public, private, protected public : 프로그램 어디에서도 접근 private : 같은 클래스 내, friend로 선언된 함수나 클래스에 의해 접근 protected : 같은 클래스 내, 서브클래스, friend에 의해서만 접근 데이터 추상화와 캡슐화 데이터 멤버 모두 private 또는 protected로 선언해 캡슐화 멤버 함수 외부에서 접근할 것은 public으로 선언하고 나머지는 private이나 protected로 선언 멤버 함수의 구현은 inline 함수로 ..

[C++ 자료구조론] 1장 기본 개념

대형 컴퓨터 시스템 💡 설계 및 구현 방법론 데이터 추상화 알고리즘 명세 성능 분석과 측정 대형 컴퓨터 프로그램 복잡하게 상호작용하는 부품들로 구성된 시스템 like 하드웨어 시스템 생명 주기가 있음 why? 유지보수를 위해 시스템 생명 주기 System Life Cycle 💡 요구사항 - 분석 - 설계 - 정제와 코딩 - 검증 (과정을 하나라도 생략하면 안 된다.) 요구사항 requirement 프로젝트들의 목적을 정의한 명세들의 집합 고객의 요구에 맞게 입력과 출력에 관한 정보를 기술 분석 analysis 문제들을 다룰 수 있는 작은 단위들로 나눔 = 분할 정복 Divide and Conquer 상향식 bottom-up VS 하향식 top-down 상향식은 C의 함수처럼 기능 위주로 나눈다. 버그 난..

[DB] 기본키가 두 개일 수 있나?

사용자가 추천하는 식당을 저장하는 테이블을 설계하면서 기본키를 설정할 때 문제가 생겼다. 테이블은 행을 구분할 수 있는 기본키가 필요하다. ‘사용자 - 식당’ 테이블에서 행을 구분하려면 사용자 ID와 식당 ID가 동시에 사용되어야 한다. 이때 기본키는 두 개가 될 수 있나?라는 의문이 들었다. 정답은 아니다. 기본키는 하나인 게 맞고 기본키를 구성하는 열이 두 개인 것이다. 기본키가 하나라는 말이 기본키를 구성하는 열이 하나여야 한다는 뜻은 아니다. ‘사용자 - 식당’ 테이블처럼 하나의 열만으로는 행을 특정하기 어려울 수 있다. 이때는 복합키를 만들어 기본키로 사용하면 된다. 참고 https://hoon93.tistory.com/57

[DB] 2022.07.07

[DB] UUID를 Primary Key로 사용하기

UUID UUID는 범용 고유 식별자로 네트워크 상에서 서로 다른 개체들을 구별하기 위해 만들어진 방법이다. 32개 문자, 4개의 하이픈으로 이루어져 있어 생성할 수 있는 값은340,282,366,920,938,463,463,374,607,431,768,211,456개이다. 고유성을 완벽하게 보장할 수는 없지만, 실제 사용할 때 중복될 가능성이 거의 없다 UUID는 생성 방법에 따라 5가지 vertion이 존재한다. TimeStamp 기반의 v1/v2, 완전 Random 기반의 v4, Hashing 기반의 v3/v5가 존재한다. 실제로는 v1/v4/v5가 주로 이용된다. Random한 UUID를 생성하기 위해서는 v1/v4를 이용하고, 고정된 UUID를 생성하기 위해서는 v5를 이용한다. PK를 생성할 ..

[DB] 2022.07.07

[DB] 데이터 모델링은 어떻게 하는걸까?

먼저 데이터 모델이란? 데이터 모델은 현실의 정보를 컴퓨터로 표현한 개념적 모형이다. 데이터베이스 설계 과정에서 데이터의 구조(Schema)를 논리적으로 묘사하기 위해 사용한다. 그럼 데이터 모델링은? DB의 골격을 이해하고 SQL문을 효율적으로 작성하기 위해 필요한 과정이다. 정보시스템 구축의 대상이 되는 업무 내용을 분석하고 약속된 표기법에 의해 표현하는 걸 의미한다. 분석된 모델은 실제 데이터베이스 생성하고 개발 및 데이터 관리 시 사용된다. 데이터 모델링 절차 데이터 모델링은 업무 파악 → 개념적 데이터 모델링 → 논리적 데이터 모델링 → 물리적 데이터 모델링 순으로 이루어진다. 업무 파악 주어진 업무를 정확하게 파악하는 단계이다. 어떤 기능들이 필요한 지 개념을 잡는다. 개념적 데이터 모델링 현..

[DB] 2022.07.07

[Django] Template 상속

Template 상속이란 템플릿 상속은 중복되는 코드를 한 번만 작성하고 재사용하는 기능이다. 중복되는 코드를 하나의 html 파일에 넣어 효율적으로 관리한다. {% extends 'base.html' %} {% block content %} {% endblock %} Template 상속 방법 1. 중복되는 코드를 넣어놓을 파일 하나를 생성한다. 주로 파일 이름은 base.html로 생성한다. (app/templates/base.html 생성) 2. 중복되는 코드를 모두 복사 붙여넣기하여 넣는다. 3. 중복 코드 중간에 페이지별로 다른 코드가 들어가는 부분에는 {% block content %}와 {% endblock %}을 넣는다. {% block content %}, {% block preview ..

[장고] 2022.06.30

[Django] Static 파일 관리하기

Static 파일이란 정적 파일은 HTML을 제외하고 웹 페이지를 렌더링할 때 필요한 추가 파일들이다. 웹 서버에 미리 저장되어 있어 css, image 파일 같이 컨텐츠가 고정되어있고 사용자의 요청에 따라 변하지 않는다. 정적 파일에는 static파일과 media파일이 있는데, static 파일은 개발자가 미리 준비한 데이터이고, media 파일은 사용자가 업로드한 데이터이다. Static 파일 생성 app 디렉토리 안에 static 디렉토리를 생성한다. css, js, img 등 필요한 static 파일들을 저장한다. Static 경로 설정 어디에 static 파일이 저장되어 있는지 장고에게 위치를 알려주어야한다. STATIC_URL을 '/static/'로 설정해 ‘/static/’ 경로로 요청이 들..

[장고] 2022.06.30

[Django] URL 매핑 - include를 이용한 url 계층 관리

url을 연결할 때 urlpatterns에 path들을 단순 나열해두면 path가 많아졌을 때 관리가 어렵다. # myproject/urls.py from django.contrib import admin from django.urls import path # import 해주기 import myapp.views urlpatterns = [ # 일 때 path('admin/', admin.site.urls), # 일 때 myapp.views.home함수를 실행해라 path('', myapp.views.home, name='hello_world'), ] 그래서 django.urls의 include를 사용해 url들을 계층적으로 관리한다. 먼저 url을 관리할 앱을 myproject/setting.py의 I..

[장고] 2022.06.30