분류 전체보기
-
[Design Pattern] 빌더 패턴 (Builder Pattern)공부/디자인 패턴 2020. 2. 22. 23:25
Builder 패턴이란?빌더 패턴은 객체를 빌드하는데 사용됩니다. 생성하는 객체가 하위 객체들을 포함하고 있어 복잡하거나 구성을 정교하게 할 필요성이 있을 때, 빌더 패턴을 사용해 복잡한 유형을 단순화할 수 있습니다. 빌더 패턴은 복잡한 객체를 빌드하는 프로세스를 캡슐화 또는 숨기는 작업을 하고 객체와 해당 구조의 표현을 분리합니다. 그냥 간단하게 말해서 생성자를 통해 어떠한 값도 생성하지 않고 내부 클래스 (보통 빌더라고 이름을 지음)를 통하여 생성하도록 하는 패턴입니다.예시class Student { private Student(int number, String name) { } public static class Builder { int number=0; String name=null; public..
-
[Design Pattern] 디자인 패턴의 타입공부/디자인 패턴 2020. 2. 22. 22:35
디자인 패턴은 왜 필요할까?중복되는 코드 개발을 하고 싶지 않아서, 업무의 분리를 위해 가 가장 큰 이유가 됩니다. 실 생활에서 이미 바퀴가 발명되어 있는데 이를 재 발명 할 이유는 없습니다. 이전 문제의 해결책과 유사하게 느껴지는 문제에 대해서 해결책을 설계하고자 할 때, 데자뷰와 같은 느낌을 경험했으면 디자인 패턴을 공부하지 않았지만 무의식 적으로 이러한 패턴을 사용했을 것입니다.디자인 패턴의 종류객체 지향 언어의 디자인 패턴은 세 가지로 나눌 수 있습니다.CreationalStructuralBehaviouralCreationalCreational 디자인 패턴은 클래스에서 객체를 구성하는 방법과 관련이 있습니다. 객체를 새로 생성할 때, 인스턴스를 아무렇게 생성하면 코드를 파악하기 어렵게 만들 수 있..
-
[Python] 리스트, 딕셔너리 sort(), sorted() 사용하기언어/파이썬 & 장고 2020. 2. 22. 17:21
보통 리스트 타입을 정렬할 때, .sort()로 간단하게 사용할 수 있습니다. 하지만 이 때, 2차원 배열 같은 특정 경우에서 비교하거나 딕셔너리의 값을 기준으로 정렬을 하고 싶다면 sort() 또는 sorted()에서 제공하는 key 옵션을 사용하여 정렬을 진행할 수 있습니다. 먼저 sorted()는 내장함수로 (이터러블 타입, key, reverse)와 같이 3개의 파라미터를 받으며 결과를 반환합니다. sort(key, reverse)는 리스트에서 제공해주는 메소드이며 딕셔너리에서는 볼 수 없습니다. 2차원 배열 정렬먼저 아래와 같이 2차원 배열이 있다고 가정하고 내부 배열의 각 첫 번째 값으로 정렬을 하는 예제입니다.target = [[1, 2], [3, 1], [2, 6], [4, 5], [3, ..
-
[Python] 문자열 앞에 0 채우기언어/파이썬 & 장고 2020. 2. 22. 17:03
보통 문자열 앞에 0을 채우는 행동은 날짜를 문자열로 계산할 때 유용하게 사용됩니다. 예를 들어, 2월을 yyyy/mm/dd로 표시한다고 하면 2020/02/02 와 같이 표현할 수 있습니다. 이 때, 요구 사항때문에 월 또는 일을 정수로 변환하여 계산한 뒤, 다시 문자열로 변경하면 '02' → (정수 변환) 2 → (문자열 변환) '2'가 되어 0을 추가 해줘야 합니다. 이러한 행동을 좀 더 편하게 할 수 있도록 아래에서 설명합니다.문자열 타입에서 원하는 개수만큼 0 채우기문자열 타입일 경우, 아래와 같이 2가지 방법이 있습니다. 먼저 zfill(개수)를 사용하여 [현재 스트링의 길이 - 개수]만큼 0을 채울 수 있습니다.text = '2' a = text.zfill(2) b = text.zfill(1..
-
[Python] List, Dictionary insert 성능 비교언어/파이썬 & 장고 2020. 2. 22. 16:49
알고리즘 문제를 풀다가 임시 컨테이너 타입에 값을 넣고 정렬을 한 다음, 다시 추출을 해야되는 요구사항이 있었습니다. 이 때, 선택할 수 있는 컨테이너 타입이 리스트와 딕셔너리가 있었는데 이 둘 중, 어느 것을 사용하는게 더 빠른지 궁금증이 생겨 성능 비교를 한 결과를 공유합니다.insert 성능 비교다음 테스트 시나리오는 10000번 반복문을 실행하면서 리스트와 딕셔너리 각각에 값을 대입하는 것입니다. 리스트는 append()를 진행하고 딕셔너리는 key와 value를 동일한 값으로 대입합니다.테스트를 진행할 때, 진행하는 현재 컴퓨터 상태에 따라 속도가 차이날 수 있으므로 테스트를 10000번씩 10번 반복하여 진행했습니다.import timeit def list_append(): target = [..
-
[Python] Numpy 배열 형태 변경하기공부/데이터 2020. 2. 19. 21:07
numpy 패키지는 배열의 형태를 손쉽게 변경해 주는 기능을 제공하고 있습니다. 1차원 배열을 2차원으로 바꿀 수 있으며 두 개의 배열을 1차원 또는 다차원 배열로 변형도 할 수 있습니다. 1. 배열의 형태 변경 reshape() 메소드를 사용하여 배열의 크기를 변경할 수 있습니다. import numpy as np np_array = np.arange(1, 10) print(np_array) reshaped = np_array.reshape((3, 3)) print(reshaped) # [1 2 3 4 5 6 7 8 9] # [[1 2 3] # [4 5 6] # [7 8 9]] 배열의 모양을 변경할 때, 베이스가 되는 배열의 크기가 딱 맞아야지만 동작하고 적거나 더 많이 변형하고자 하면 오류가 발생합니..
-
[Python] Numpy란?언어/파이썬 & 장고 2020. 2. 18. 21:36
Numpy란? Numpy는 다차원 배열을 쉽게 처리하고 효율적으로 사용할 수 있도록지원하는 파이썬의 패키지입니다. NumPy는 데이터 구조 외에도 수치 계산을 위해 효율적으로 구현된 기능을 제공합니다. 데이터 분석을 할때, Pandas와 함께 자주 사용하는 도구로 등장합니다. 왜 Numpy를 사용할까 데이터란 이미지, 오디오, 텍스트, 숫자 등 다양한 형태와 크기로 존재합니다. 사람은 이런 데이터들을 가지고 이해하지만 컴퓨터는 0 또는 1만 이해합니다. 여기서 핵심은 데이터를 숫자의 배열로 볼 수 있습니다. 실제로 데이터 분석을 수행하기 위한 전제 조건은 컴퓨터가 이해할 수 있도록 데이터를 숫자 형식으로 변환하는 것입니다. 여기서 효율적으로 배열을 저장 및 조작할 수 있어야 하는데 이러한 요구사항으로 N..
-
[Golang] package 관리, 선언하기언어/Golang 2020. 2. 16. 20:57
main package패키지 이름에 main이라고 되어 있으면 Go 컴파일러가 이를 실행 프로그램으로 인식합니다. 또한 main 패키지 안의 main() 함수를 시작하고자 하므로 라이브러리를 만들 때, main 패키지나 함수명을 사용하면 안됩니다.package import패키지를 import하는 방법은 아래와 같이 2가지가 있습니다.package main // 단일 패키지 선언 import "bytes" // 복수 패키지 선언 import ( "bytes" "encoding/json" "encoding/xml" "io/ioutil" "net/http" )package scope패키지 내에는 함수, 구조체, 인터페이스, 메소드 등이 있는데, 이러한 이름의 첫 문자를 대문자로 시작하면 public으로 간주되..
-
[Golang] http 모듈 사용하기언어/Golang 2020. 2. 16. 20:29
Go에서 제공하는 http 모듈을 사용하면 보다 쉽게 데이터를 전송하고 가져올 수 있습니다.GET Method 사용하기http.Get 메소드를 사용하면 쉽게 요청을 보낼 수 있지만 헤더나 스트림을 추가할 수 없습니다. 따라서 NewRequest 객체를 직접 생성하고 http.Client 객체를 통해 호출해야 합니다.package main import ( "fmt" "io/ioutil" "net/http" ) func simpleGet() { // header나 추가적인 요청을 보낼 수 없음 resp, err := http.Get("https://naver.com") if err != nil { panic(err) } defer resp.Body.Close() // 결과 출력 data, err := iou..
-
[Git] commit 또는 push 된 내용 되돌리기 (reset, revert)저장소/git 2020. 2. 16. 20:10
commit 또는 push했던 내용이 잘못되어서 이전 상태로 되돌려야 하는 경우는 종종 발생합니다. 로컬에 commit만 하는 경우엔 쉽게 reset 기능으로 처리할 수 있지만 원격 저장소까지 push가 된 경우엔 revert라는 기능을 사용해야 합니다. (reset --f를 사용하지 않는다면)아래에선 reset과 revert기능을 위주로 언제 사용하고 어떠한 기능이 있는지 설명합니다.git reset먼저 reset의 기능은 의미 그대로 reset하고자 하는 커밋으로 돌아간 다음, 해당 커밋 이후의 이력을 전부 삭제합니다. reset에는 hard, mixed, soft와 같이 3 가지 기능을 제공하는데 아래 예시를 들어 설명합니다. 먼저 아래와 같이 커밋이 되어 있다고 가정합니다. 현재 활성화된 커밋은 ..