본문 바로가기

전체 글

(27)
[Spring/이벤트 기반 아키텍쳐]메시지 큐란? 1) 메시지 큐 메신저의 특성상 사용자가 많아지게 되면, 채팅의 양이 늘어남에 따라 대용량 데이터가 실시간으로 전달되는 상황이 오게 된다. 기존의 동기식 요청-응답 방식으로 이를 구현하게 되면 발생하는 많은 문제점들을 해결하기 위해 비동기식 발행-소비 방식인 메시지 큐를 사용하기로 결정하였고 이에 대해 학습하는 시간을 가졌다. 2) 왜 메시지 큐를 써야하는가? - 동기식 요청-응답 방식 채팅 시스템을 동기식 요청-응답 방식으로 처리하게 되면, 끊임없이 메시지를 주고받는 채팅시스템에 유연하게 대처하지 못하게 된다. 수백명의 사람이 채팅방에 들어와 있을 때, 한 사람의 네트워크 상태가 좋지 않아서 그 사람이 보낸 메시지가 제대로 처리되지 않고 있는 상황이 발생하면 이로 인하여 나머지 수백명의 사람이 해당 메..
[자료구조]스택,큐로 이해하는 DFS,BFS DFS & BFS 란? 깊이우선 탐색, 너비 우선 탐색의 약자이다. 이진트리를 완전탐색하는 두가지 방법론이다. 스택으로 이해하는 DFS 이제까지는 재귀호출로 DFS 를 이해해왔고, BFS 가 큐로 이루어진것을 이해했다. DFS 를 스택으로 구현해보기도 했지만, 정확히 그 동작원리를 알지 못했었다. 때마침 오늘 학교강의를 들으며 이 부분에 대해 교수님이 설명해 주셔서 글로 남긴다. 스택은 LIFO(Last in First out), 큐는 FIFO(First in First out) 으로 동작한다. DFS by stack 왼쪽이 스택의 bottom, 오른쪽이 스택의 top 이다. BFS by queue 왼쪽이 큐의 front이다. 코드로의 구현 기존에 DFS 를 재귀적으로 이해했었고 그렇게 코딩해왔었다. 이..
[SNS프로젝트 회고]RDBMS vs NOSQL [개요] 스마일게이트 서버개발캠프에서 프로젝트를 기획하는 도중 DB를 어떤 것을 사용 할 것인가에 대한 선택사항에 마주하게 되었다. MySQL, Oracle 같은 RDBMS 를 사용 할 것인가? 아니면 MongoDB 와 같은 NoSQL 을 사용할 것인가? Node.js 를 사용하는 사람들은 MongoDB(NoSQL)를 많이 사용한다고 하고, 단점도 있다고 하고.. 각각의 특징과 장단점에 대해 알아보고 우리의 sns 프로젝트에 적용할 적합한 db 를 선택해 보고자 한다. 우리는 알림 db 에는 nosql(mongodb)을 적용하고, 유저 db에는 mysql 을 적용하였다 RDBMS(SQL) - 관계형 데이터베이스 SQL 은 '구조화 된 쿼리 언어(Structured Query Language)'의 약자이다..
.gitignore 사용법 정리 .gitignore 이란? 깃에서 특정 파일 혹은 디렉토리를 관리 대상에서 제외할 때 사용하는 파일이다. 이 파일 안에 기입된 내용들은 모두 깃에서 관리하지 않겠다는 것을 의미함. 예를 들어 자동으로 생성되는 로그파일, 프로젝트 설정 파일과 같이 외부에 노출되면 안되는 파일을 관리 대상에서 제외함으로써 github 에 노출되지 않는다. 최상위 디렉토리 이외에 어떤 디렉토리 안에 있던 간에 해당 파일 무시하는 방법 **/*.docs -- 모든 디렉토리(실험결과 최상위 디렉토리도 포함임.) 아래 .docs 확장자 파일 커밋에서 제외 *.docs -- 최상위 디렉토리 아래 .docs 확장자 파일 커밋에서 제외 name.py -- 최상위 디렉토리 아래 name.py 파일 커밋에서 제외 data/ -- data ..
과정지향적인 개발자가 되자 돌아보며 이번 방학동안 진행한 서버개발캠프에서 팀원들과 프로젝트를 진행하는 과정 속에서 나의 아집을 버리고 팀원들을 믿고 꾸준히 소통하는 것이 효율적인 팀빌딩임을 깨닫게 되었다. 개발을 진행하면서 참고했던 수많은 기술블로그들과 서적들을 보면서 단기간에 몰아치는 개발이 아닌 꾸준히 고민하며 개발하는 것이 중요함을 알았다. 이번 달에는 이동욱님께서 쓰신 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스'와 '커리어 스킬(존 손메즈 저)' 그리고 '스프링 퀵 스타트' 를 보면서 체계적인 학습을 할 수 있었다. 이전까지는 기술 블로그를 참조하면서 필요한 기능들에 대해서 학습하고 적용하였는데(대부분 구글링) 반해 이번 달에는 코로나로 인해 학교강의가 온라인이 되어서 많은..
Markdown 문법 총정리 마크다운의 장점 문법이 쉽다 관리가 쉽다 지원 가능한 플랫폼과 프로그램이 다양하다 마크다운의 단점 표준이 없어 사용자마다 문법이 상이 할 수 있다 모든 HTML 마크업을 대신하지 못한다 마크다운 문법 hi hi hi 밑줄 순서없음1 순서없음2 순서없음 1-1 순서없음 1-2 Google Naver 구글 홈페이지 : https://google.com 네이버 홈페이지 : https://naver.com Dribble Github 문서 안에서 참조 링크를 그대로 사용가능 **hi** __hi__ ~~hi~~ 밑줄 * 순서없음1 * 순서없음2 + 순서없음 1-1 + 순서없음 1-2 [Google](https://google.com) [Naver](https://naver.com "링크 설명(title)을 작성하..
암호 분석(암호 해독)의 공격 분류 번역된 것은 아주 가관임. 차라리 영어로 보는 것이 이해가 쉬움... 해독이 어려운(공격자 입장에서)것 부터 쉬운 것 순 나열이다. 영어로 보는것이 이해가 편하다. cipher-text only attack COA : 암호문 단독 공격 공격자가 가진것이 암호문 밖에 없는 상황이다. 따라서, 공격자는 암호문 만을 가지고 평문을 추론해야 하므로 고전적인 치환암호,전치 암호가 아닌 현대 암호학에선 현실적으로 불가능한 공격 방식이다. known plain-text attack KPA : 기지('이미 앎') 평문 공격 몇몇 암호문에 해당하는 평문을 아는 상태이다(몇 가지 암호문-평문 조합을 공격자가 아는 상태). 암호문 단독 공격에 비해서 조금 더 공격자에게 유리한 상황이지만 한정된 조합을 가지고서..
DB 테이블 설계 DB 설계 ER Diagram of open market database table 을 추가하기 전에는 다음과 같이 반드시 drop 명령어를 써서 기존의 중복되는 이름을 가지는 테이블을 삭제해 주어야 한다. DROP TABLE account cascade constraint; DROP TABLE item cascade constraint; DROP TABLE service cascade constraint; DROP TABLE customer cascade constraint; DROP TABLE branch cascade constraint; servece table 생성 참조되는 테이블을 반드시 먼저 생성해 주어야한다. create table service( s_date date not null, s..