오히려 좋아..

상황이 나쁘게만 흘러가는 것 같을 때 외쳐보자.. .

궁금한 마음으로 포트폴리오 보기

분류 전체보기 209

[네트워크] NAT(Network Address Translation)

1. NAT란? 많은 회사들이 여러 이유(보안, 한정된 공인 IP)로 하나의 공인 IP에 여러 단말기(PC)를 서브넷으로 구성하는 경우가 많다. 외부에서 보기에는 하나의 IP로 보일텐데 어떤 식으로 서브넷의 특정 단말기와 통신가능 한 것일까? 이번글에서는 이러한 문제를 해결하는 NAT과 NAT의 종류에 대해 다루도록 하겠다. 기본적으로 서브넷이나 공인/사설 IP에 대한 이해를 바탕으로 진행하므로 아직 공인 IP, 사설 IP에 대해 모른다면 이 글을 참조하자! 잠깐 다른길로 잠깐 새보면 예전에는 친구랑 놀려면 친구집에 있는 집 전화기에 전화해야하던 때가 있었다. 민수가 병건이에게 전화를 한다. 민수가 병건이네 전화번호를 누르고 누군가 전화를 받는다. 민수 : ”여보세요. 병건이 있어요?” 병건이네 엄마 :..

Network 2022.08.24

[Django] 장고 비즈니스 로직 어디둬야하는 고민하는 사람들 드루와..

장고를 써온지도 어느 1년이 되었다. 장고는 굉장히 장단점이 명확한 프레임워크 였다. 스타트업들이 가장 빠르게 MVP를 만들어 볼 수 있지만 프로덕트 크기가 커짐에 따라 코드관리가 어려워지는게 문제다. 오늘은 코드관리가 어려운 장고에서 비즈니스 로직관리를 어떤식으로 할 수 있는지에 대해 적어보도록 하겠다. 1. Model 너 누구야? 먼저 본격적으로 비즈니스 로직을 분리하기 전에 장고에서 비즈니스 로직의 핵심이 되는 Model에 대해서 몇가지 이야기해야 한다. Model의 가장 대표적인 역할은 데이터베이스와 서버어플리케이션 사이의 인터페이스 역할이다. 가령 데이터베이스를 변경해야할 때 장고에서는 setttings에서 사용할 데이터베이스만 변경하면 된다. 즉 데이터베이스 변경으로 인한 변화가 어플리케이션 ..

[NestJS] 스웨거에서 여러 Type의 Object Array 정의

swagger를 사용하다 보면 여러 타입의 오브젝트가 들어간 Array를 정의해야할 때가 있다. 아래처럼하면 된다. $ref가 돌아가지 않는다면 아래 링크를 통해 방법을 확인하자. https://cocook.tistory.com/213 [NestJS] Swagger에서 refs 안될 때 Swagger에서 DTO를 이용해 서버 응답 값을 정의하는 기능이 있는데 직접 가져오는게 아닌 경로를 작성해주면 해당 경로에 있는 클래스를 가져와 붙여주는 기능이 있다. 경로는 분명히 맞는데 안되 cocook.tistory.com export const API_RESPONSE: ApiResponseOptions = { status: 200, isArray: true, description: "Successful respo..

Language/Python 2022.08.22

[NestJS] Swagger에서 refs 안될 때

Swagger에서 DTO를 이용해 서버 응답 값을 정의하는 기능이 있는데 직접 가져오는게 아닌 경로를 작성해주면 해당 경로에 있는 클래스를 가져와 붙여주는 기능이 있다. 경로는 분명히 맞는데 안되는 경우가 있어서 정리해둔다. 해결 방법은 간단하다. 아래처럼 createDocument의 extraModels에 추가로 정의 해주면 된다. const document = SwaggerModule.createDocument(app, options, { extraModels: [ DogCreateDTO, DogUpdateDTO ], }); SwaggerModule.setup("api-docs", app, document, { swaggerOptions: { defaultModelsExpandDepth: -1, pe..

추상클래스와 인터페이스 차이

매번 사용하면서도 모르는 추상클래스와 인터페이스의 차이에 대해 설명하려고 한다. 구글에 검색해봐도 사실 어려운 이야기만 잔뜩 있어서 이게 뭐지 라는 생각만 든다. 나는 이 둘의 차이를 용도의 차이 측면에서 보려고 한다. 결론부터 말하면 추상클래스는 확장해서 사용하기 위함이고 인터페이스는 설계를 위함이다. 아직 무슨 말인지 감이 오지 않을 것이다. 먼저 추상 클래스의 예시를 보자! 1. 추상 클래스 예를 들어 Company 라는 추상 클래스가 있고 이 클래스는 아래와 같다. 추상클래스는 자식 클래스들의 공통된 구현을 추상 클래스 내에 정의된 상수나 구현을 이용해 중복을 없애고 추상 메서드를 이용해 자식들의 구현을 강제한다. abstract class Company { private name: string;..

Paradigm/OOP 2022.08.21

우리가 간절히 바랄 수 있는 것

행복인 불행이 없는 것 이라는 주장에 꽤 동감하고 있다. 삶에서 우리가 간절히 바랄 수 있는 건 불행이 우리를 발견하지 않게 몸을 낮추고 기도하는 일 뿐이다. 이런 맥락에서 해리포터의 죽음의 성물의 삼 형제 이야기가 훌륭한 통찰을 담았다고 생각한다. 셋째가 투명망토를 둘러 수명이 다하기 직전까지 죽음이 그를 찾지 못하게 한 것 처럼 인간의 유한함을 인지하고 나에게는 투명 망토는 없으니 죽음이 예정보다 빨리 오지 않기를 바랄 뿐이다. 죽음은 기본적으로 폭력적이다. 자연사는 존재하지 않는다. 즉 수명이 다해 숨이 자연스럽게 멎어지는 개념 자체는 존재하지 않는다. 호흡 곤란이나 심장마비가 우리에게 주어진 선택지이고 우리는 죽음 앞에서 어떤 선택도 할 수 없다. 죽음이 이렇게 끔찍한 걸 아무도 나에게 말해주지 ..

[Typescript] Object key 타입 정의

자주 사용하지만 항상 까먹어서 정리해둔다. 1) Union String인 경우 type fruit = "orange" | "strawberry" | "melon" // Optional인 경우 {[key in fruit]: number} const fruitPrices: {[key in fruit]: number} = { orange:10, strawberry: 20, melon: 30 } const fruitPrices2: Record = { orange:10, strawberry: 20, melon: 30 } 2) Enum인 경우도 동일하지만 위 예제와 동일하게 사용시 value 값을 사용하게 된다. enum Fruit { Orange="orange", Strawberry="strawberry", Me..

[Python] WSGI란?

오늘은 늘 보지만 어색한 WSGI에 대해 알아보겠습니다. WSGI란? 먼저 WSGI를 한마디로 정리해보면 웹서버(Web Server)와 서버 어플리케이션 사이를 연결해주는 부분입니다. 물론 후려친 정의이지만 일단 이렇게 알아둡시다. 아직 웹서버와 웹 어플리케이션 차이를 모르신다면 아래 페이지를 통해 알아보세요! https://cocook.tistory.com/87 [Web] WAS와 Web Server 차이 3줄 정리 1. 웹서버는 정적페이지, WAS는 동적페이지 응답 2. 둘다 함께 배포하는 이유는 각자 잘하는 걸 하기 위함 3. 장고는 꼭 Webserver와 배포하자 장고 배포와 관련된 글을 보면 WS(Web Server, 웹 cocook.tistory.com 이를 조금 어렵게 말해보자면 웹서버와 웹..

Language/Python 2022.08.16

아침에는 죽음을 생각하는 게 좋다

오늘은 에어컨 청소 아저씨가 오셔서 출근을 늦게 하게 되었다. 시간이 남아 이런저런 생각을 한다. 송해 선생님이 자택에서 별세 하셨다고 한다. 우연히 들어간 커뮤니티 인기글 순위에 있는 두 개의 글 폐암 4기 판정 받았습니다. 아들의 첫 생애 소풍!!! 삶과 죽음은 맞닿아 있다는 생각을 한다. 달려있는 많은 응원의 댓글 응원으로 병이 낫는다면 얼마나 좋을까 중간중간 대체의학이나 종교를 권유하는 글도 보인다. 무슨 생각들이신건지. 다들 자신만의 진실로 세상을 살아간다.

MBTI가 미친 영향

나와 전혀 다르게 생각하는 인간의 존재를 받아드리게 된 것. 서로의 기질에 대해 터놓고 이야기 할 수 있는 장을 열어준 것 떨어지는 사회성이 타고난 성향일 수 있다는 것. 가령 사회성이 높은 친구들 모임에 있는 그들보다 사회성이 조금 낮은 친구는 자기 자신의 사회성 결여가 문제라고 생각할 수 있음. 주변 친구들도 자신과 다른 친구의 행동을 이해하기 어려움 하지만 MBTI라는 아주 무딘 칼을 통해 인간 유형을 준객관적으로 나눠주어 친구의 행동을 이해할 수 있는 수단이 생김 MBTI는 이전부터 존재하던 것. 하지만 놀이화를 통해 파급력을 키워갔다. MBTI 이전에 인간을 나누던 수단인 혈액형과는 어떤식으로 다른 것인가? 단순히 혈액형은 비과학 MBTI는 과학 이런식으로 나눌 수는 없을 듯 다양한 인간상을 4..