전체 글 62

Dynamic Programming

divide-and-conquer은 서로 상관관계가 없는 문제를 해결하는데 적합하다. 반면, dynamic programming은 서로 상관관계가 있는 문제를 해결하는데에 적합하다. dp[i][j] --> 개의 보석을 만큼의 한도의 가방에 넣었을 때 보석의 가치 보석 1개를 넣었을 때 보석의 무게가 100, 가치가 1000이라 했을 때 dp[1][100]=1000 dp[[i][j]=max(dp[i-1][j], LIS 최장 증가 부분 수열 11053 카드 구매하기 11052 포도주 시식 2156 --> 일반항만 생각하면 되는 것이 아니고 한 단계 더 생각해야 한다. 1074 Z 분할과 정복은 문제 자체로 나오기보다는 수단으로 나온다. 4등분하고 Z 형태의 순서로 방문하는 것은 크기와 상관없이 항상 적용되는..

Spring Boot

Spring에 대해서 착각했던 것이 있다. Spring을 웹을 만드는 도구라고 생각하고 있었다. 그런데, Spring은 웹을 만드는 도구가 아니라 Dependcy Injection을 이용하여 JAVA 애플리케이션을 만들 수 있는 프레임워크이다. 여기에서 추가적으로 웹 MVC 모듈을 제공하여 웹을 효과적으로 만들 수 있도록 도와준다. 스프링이란? POJO방식의 스프링의 핵심이 POJO 프로그래밍이란는 사실은, 스프링의 핵심을 가장 잘 나타내고 알려진 스프링 삼각형을 통해서도 알 수 있다. ( 출처: https://java.ihoney.pe.kr/398 [허니몬(Honeymon)의 자바guru]) 스프링 프레임워크, 스프링 부트 스프링 데이터, 스프링 시큐리티, 스프링 클라우드 등.. 스프링 프레임워크 1)..

웹 프로젝트 2021.02.02

Docker 컨테이너 관련 커맨드 사용법

Docker의 동작 방식 먼저 도커는 소프트웨어를 '컨테이너'라는 표준화된 방식으로 소프트웨어를 패키징합니다. 이 컨테이너 안에는 소프트웨어를 실행하는 데에 필요한 모든 것(library등) 이 패키징된다. 패키징된 컨테이너를 작동시키는 방식으로 동작하며 컨테이너를 위한 운영체제라고 할 수 있다. 각 서버마다 설치하여 서버 운영체제를 가상화하고 컨테이너를 만들고 동작을 시작하거나 멈추는 등의 명령을 제공한다. Docker를 사용하는 이유 AWS에서 도커를 사용해야 하는 이유 -> 코드를 더 빨리 전달하고, 애플리케이션 운영을 표준화하고, 코드를 원할하게 이동하고, 리소스 사용률을 높여 비용을 절감한다. 도커는 기존의 OS를 사용하기 때문에 VM에 비해 가볍다. 컨테이너 조회 docker ps Docker..

웹 프로젝트 2021.02.01

collections 모듈의 deque과 queue 활용하기

추가 삭제를 양쪽 끝에서 빠른 속도로 할 수 있다. empty deque은 생성자 없이 만들 수 있다. DFS BFS 관련한 여행경로 문제를 풀어보겠다. 1. 주어진 배열을 그래프로 만든다. 2. 큐를 만들고 (출발 노드,[경로]) 삽입 3. 경로 찾는 함수를 작성한다. 4. 가능한 경로를 다 찾은 후 알파벳 순으로 정렬& 첫번째 경로 리턴 pop() 함수는 rightmost element를 제거하는 용도로 사용한다. 파이썬의 리스트에서 지원하는 pop()과 작용방식 같다 deque 는 각 명령을 O(1)으로 지원하는데에 반해, Queue 모듈은 멀티쓰레드 환경을 지원하기 때문에 더 느리다고 하네요 참고로 한가지 더 팁을 드리자면, copy.deepcopy() 또한 매우 느린 작업

Swagger

Swagger 개발자가 API서버를 개발할 때, API의 스펙에 대한 명세를 편리하게 할 수 있는 API 자동 문서화 도구(프레임워크) Django로 Rest API 서버 개발시에만 자동 문서화 도구로 Swagger를 사용할 수 있는 것이 아니고, Spring과 엮어서 Swagger를 쓸 수 있다는 것을 알게 되었다. 1) Swagger 의존성 설정 2) Swagger 설정 파일 생성 @Configuration / @EnableSwagger2 SwaggerConfig.java 에서 해당 Controller를 Swagger API 문서로 지정 swagger-ui.html#/ 의 주소로 접근 하면 자동 문서화된 swagger docs를 볼 수 있다. 이렇게 되면 swagger docs의 가장 기본적인 기능들..

웹 프로젝트 2021.01.31

Django Model 관련한 공부

전문가들이 사용하는 용어 중 Data Model/ Business Model 중 Data Model을 말하는 것이다. App을 만들기 위해 필요한 데이터를 models에서 정의하면 된다. Django 모델을 공부하던 도중, 모델들 간의 관계를 정의하는 과정에서 헷갈리는 부분이 있었다. 모델에 작성자 클래스와 게시 아래 개념들을 설명하기 위하여 게시글 작성 수정하는 토이 프로젝트를 예시로 들겠다. OneToOneField 1: 1 관계 한 명의 작성자는 하나의 게시글만 작성할 수 있고, 하나의 게시글은 한 명의 작성자만 갖을 수 있따. 일대일 관계에선 한 쪽의 테이블이 상대 테이블에 대한 키값을 갖는다. 게시글 테이블에서 작성자에 대한 키 값을 Django에서 ID(Primary Key)로 갖고 있게 되면..

웹 프로젝트 2021.01.23

ubuntu

CPU: Intel(R) Xeon(R) Gold 5120 CPU @ 2.20aGHz * 16 (CPU당 코어수 16) RAM: 약 180G 하드디스크: 약 2T GPU: Tesla V100-SXM2 32G *2 위 서버를 9개월간 관리해왔다. 서버 관리를 하면서 귀찮았던 부분은 서버 사용량 모니터링이 안되면 Nvidia Drive재설치에 관한 안내가 나한테 왔다는 부분이다. 리눅스 커널이 2개 존재한다면, 우분투 서버에 문제가 발생하는 것을 확인할 수 있었다. 로그인 에러 Nipa 측에서 기본으로 제공한 버전은 ubuntu kernel 4.4.0-189-generic이고 새롭게 컴파일한 커널은 4.1.15이다. Login했을 때 failed credentials에러가 뜬 원인을 파악했다. 403은 월드 ..

카테고리 없음 2021.01.12

습관빵 안드로이드 개발 Google OAuth 인증 관련 에러

내 계정이 Google Cloud Platform의 사용자 인증 정보란에 등록되지 않아서 발생한 문제였다. 패키지명이 바뀌어서 기존의 Google Cloud Platform의 프로젝트를 그대로 사용하지 못할 것이라고 생각했다. 서버측과 바로 협력하지 않고, 내 패키지를 나의 Google Developers Console에 등록하여, OAuth 인증을 받으려다 보니 생긴 문제였다. 아래 링크를 참조하여 문제를 해결하였다. stackoverflow.com/questions/24160011/the-signing-fingerprint-you-specified-is-already-used-by-another-android-oauth2

소원 글

형이 시험 본다는 말에 아침에 눈이 번쩍 떠졌다. 근처의 경기고등학교에서 시험을 본다고 한다. 혜화역에서 삼성역까지는 머니까....오늘만은 집에서 아침밥을 든든히 먹고 시험을 보러 출발한다. 공부는 드럽게 안하지만, 시험은 또 잘 보는 타입인 것 같으니 한 번 믿어보겠다.ㅋㅋㅋ 4년 동안 힘들게 공부 해온 것, 제발 시험 잘 치르고 나오면 좋겠다. 제발 잘 보자....!

카테고리 없음 2021.01.08