분류 전체보기 239

기술면접 스터디(9월27일 : 관심사 분리 | SOLID 원칙)

관심사 분리란 무엇인지 설명해주세요. separation of concerns, SoC 가독성 높은 코드를 짜려고 노력하다보면 도달하게 되는 어쩌면 개발자가 최초로 만나게 되는 디자인패턴이라고 볼 수도 있겠다. 예를 들어 자동차의 구현과 제작은 매우 복잡하고 어렵기에 핸들, 바퀴, 골격 각각 담당하여 개발하고 조합을 합니다. 이처럼 소프트웨어를 개발 할 때에 모듈이나 함수가 하나의 큰 책임을 지기 보다는 하나의 기능만을 수행할 수 있도록 독립적으로 개발한 뒤 조합하는 방식으로 소프트웨어를 구성하는 것을 관심사 분리라고 합니다. 이를 통해서 유지보수의 편의성, ‘분리’, ‘확장’을 고려한 코드를 작성할 수 있다는 장점이 있다. SOLID 원칙에 대해 설명해주세요. 객체지향 개발의 5대 원칙을 말한다. 단일..

STUDY/Python 2022.09.27

Method | get vs post

POST 메소드는 주로 새로운 리소스를 생성(create)할 때 사용된다. 조금 더 구체적으로 POST는 하위 리소스(부모 리소스의 하위 리소스)들을 생성하는데 사용된다. 성공적으로 creation을 완료하면 201 (Created) HTTP 응답을 반환한다. POST 요청은 안전하지도 않고 idempotent하지도 않다. 캐시가 되질 않는다는 점은 GET에 비해 보안에 조금 더 안전하다. 그 이유는 파라미터들이 브라우저 히스토리나 서버 로그에 저장되지 않기 때문이다. 비밀번호와 같은 민감한 정보를 전송하는데 사용된다. 다시 말해서 같은 POST 요청을 반복해서 했을 때 항상 같은 결과물이 나오는 것을 보장하지 않는다는 것이다. 그러므로 두 개의 같은 POST 요청을 보내면 같은 정보를 담은 두 개의 다..

STUDY/Python 2022.09.23

forked repo 에서 작업했는데, 잔디가 안보였을 때

잔디가 구멍이 나있네요. 추석연휴를 보내고 왔더니 빈 자리가 너무 크게 느껴지네요.. 그나저나 작업을 했는데 반영이 안된 날(9/20)이 있어서 왜 이러지? 싶은 마음에 팀 레포에서 리드미 작성까지만 한 후, 각 팀원들은 포크를 떠와서 (개인)작업하기로 했던 프로젝트만 비어있더라구요~ 자 본인의 새로운 레포를 만들어줍니다. 새로운 레포 -> Investment / 로컬 폴더명 I 포크 떠온 레포 -> Investment_Service

STUDY/Git || Github 2022.09.21

3-way handshake

3-way handshake 네트워크에서 클라이언트와 서버를 연결하고자 사용되는 3단계의 방법입니다. 예시로, A -> B : 내 말 들려? 연결 확인설정을 위하여 데이터 패킷(즉, 클라이언트가 통신에 사용하려는 임의의 시퀀스 넘버)보내는 단계입니다. B -> A : 잘 들려. 내 말은 들려? 1단계에서 받은 시퀀스 넘버에 1을 더한 ACK 값과 B가 A로 부터 보내기 위한 다른 임의의 시퀀스 넘버를 클라이어트에 보냅니다. 이 시퀀스는 클라언트의 패킷을 올바르게 승인했음을 알려주고, 승인을 위해 자체 패킷을 전송합니다. A -> B : 잘 들려~~! 클라이언트가 시퀀스 번호(이 경우 Y+1)에 1을 추가하여 서버의 패킷을 확인하고 서버로 다시 보낼 차례입니다. 완료되면 연결이 생성되고 호스트와 서버가 통..

STUDY/Python 2022.09.21

HTTP와 HTTPS를 차이점

우선, HTTP는 클라이언트와 서버 사이에 이루어지는 요청과 응답의 프로토콜입니다. HTTP에서 교환되는 정보는 일반텍스트로 이동하며 암호화 되어 있지 않아 누구나 쉽게 읽을 수 있고 통신을 가로채 악용될 수 있습니다. 이런 문제점을 극복하기 위해 HTTPS가 개발 되었습니다. 둘의 가장 큰 차이점은 HTTPS의 마지막 S으로 통신 프로토콜을 암호화해주는 부분입니다. SSL 또는 TLS 를 사용하여 데이터 암호화를 활성화합니다. 두 프로토콜은 모두 공개키 , 개인키 를 쌍으로 이루어 작동합니다. SSL(Secure Socket Layer) 는 데이터를 암호로 바꾸고 누군가 가로챈다고 하더라도 모든 정보를 확인할 수 없게 해줍니다. 또한 TLS(Transport Layer Security)는 데이터가 전송..

STUDY/Python 2022.09.21

OSI 7계층

'OSI 7계층'이란? 네트워크 통신과정을 7단계로 나눈 것으로 모든 시스템들의 상호 연결에 문제가 없도록 표준으로 정한 것으로 통신이 일어나는 과정의 흐름을 한눈에 알아보기 쉽고, 계층이 나누어져있어 해당 계층만 건들 수 있어 유지보수가 좋은 장점이 있다. 최하위인 물리계층부터 데이터링크→네트워크→전송→세션→표현→응용 계층까지 있습니다. 물리 계층 : 물리적인 장치를 연결하고, 데이터를 전기적, 기계적인 신호로 변환해서 데이터를 송수신 (비트) 데이터 링크 계층 : 물리적인 연결을 통하여 인접한 두 장치 간의 신뢰성 있는 정보 전송을 담당하고 물리계층에서 송수신되는 정보의 오류와 흐름을 관리 (데이터 단위 : 프레임 mac주소) 네트워트 계층 : 목적지 컴퓨터로 데이터를 전송하기위해 ip주소를 이용해서..

STUDY/Python 2022.09.20

RDB & NoSQL

1. RDB는 transaction을 통한 데이터의 안정성을 보장한다는 장점이 있습니다. 반면에 no-sql은 지원하지 않습니다. 2. RDB는 관계를 통해 데이터를 정의하여 직관적으로 데이터베이스를 설계할 수 있고 no-sql은 데이터가 나열되어 있어 설계하기가 까다롭다. 3. RDB보다 no-sql은 JSON형태로 저장돼 속도가 더 빠르고 많은 데이터를 저장할 수 있다. 4. no-sql은 인메모리 데이터베이스 redis, 검색엔진으로서의 elastic-search 등 활용도가 높으나 RDB는 데이터베이스로만 쓰입니다. 5. RDB는 관계형 데이터베이스로 스키마가 명확히 있어 데이터 중복이 없지만, NOSQL은 자유로운 형태의 데이터베이스로 정확한 데이터 구조를 알 수 없고 데이터 중복이 발생할 수 ..

STUDY/DataBase 2022.09.15

set_password | make_password | check_password

기업과제에서 유저모델이 없이 게시글 자체의 비밀번호를 부여해 게시글을 작성하는 코드를 작성했었다. 비밀번호를 해시 암호화를 해주는 method인 set_password를 사용해 게시글의 비밀번호를 생성해보았지만 되질 않음 검색을 해보니 같은 기능하는 함수가 있어서 사용해 해결하였고 그 과정에서 알게된 set_password | make_password | check_password 를 간단히 적어봄 원인 : 평소 사용하던 set_password는 UserModel을 상속받아 사용할 수 있는데 내가 했던 프로젝트는 UserModel 없이 비밀번호를 만드는 작업이었기 때문에 되질 않았던 것. 해결 : Django 내장 함수인 make_password 를 사용해 해결 ! 💚 set_password 예시 set..

PROJECTS 2022.09.08
반응형