2020/09(5)
-
[네트워크] WebSocket과 Socket.IO
WebSocket과 Socket.IO 기존의 HTTP 프로토콜은 서버와 클라이언트 사이의 연결이 유지되지 않는다. (connectionless) 따라서 상호작용(실시간 통신)하는 웹 서비스를 위해서는 숨겨진 프레임(Hidden Frame)을 이용한 방법이나 Long Polling, Stream 등 다양한 방법을 사용하며 복잡하고 어려운 코드로 구현했다. 그러나 이러한 방식은 브라우저가 HTTP 요청를 보내고 웹 서버가 이 요청에 대한 HTTP 응답를 보내는 단방향 메세지 교환 '규칙'을 변경하지 않고 구현한 방식이다. WebSocket 보다 쉽게 상호작용하는 웹 페이지를 만들려면 브라우저와 웹 서버 사이에 더 자유로운 양방향 메시지 송수신(bi-directional full-duplex c..
2020.09.21 -
[자료구조] 트라이 (Trie) C++ 구현
트라이 (Trie) 우리가 여러 개의 문자열을 가지고 있을 때, 어떤 문자열이 그 문자열 중 하나인지 알아내는 방법을 생각해보자. 단순하게 일일히 비교하는 방법이 있겠지만, 이러한 방법은 매우 비효율적이다. 최대 길이가 M인 문자열 N개의 집합에서 마찬가지로 최대 길이가 M인 문자열이 그 문자열의 집합에 포함되는지를 일일히 확인하면 최악의 경우 O(NM)의 비교 횟수가 필요하다. 이때, 문자열을 효율적으로 저장하고 탐색할 수 있는 자료구조가 트라이(Trie)다. Prefix tree, Digital search tree, Retrieval tree라고 부르기도 한다. 프레드킨이 Retrieval tree에서 "Trie"라는 이름을 붙였다. 트라이는 특정 문자열을 찾는 작업을 O(N)만에 해결할 수 있다...
2020.09.18 -
2021 KAKAO BLIND RECRUITMENT 카카오 1차 코딩테스트 후기
2020년 9월 12일 토요일, 오후 2시부터 7시까지 총 5시간 동안 카카오 1차 코딩테스트를 진행했다. 아, 중간에 서버 문제로 인해서 30분 연장했으니 7시 반 까지. 사실 아직 많이 모자란 걸 알기에 카카오 채용에 마음이 크게 있었던 것은 아니고 ㅎㅎ.. 6월부터 약 3개월 동안 다른 사람들과 알고리즘 스터디를 진행했는데 검증?하고 싶었던 마음이 좀 있었다. 사실 말이 3개월이지 SSAFY 교육을 듣다보니 알고리즘에 온전히 집중하진 못했어서 ㅠ_ㅠ 떳떳하게 열심히 했다고 말하지는 못 하겠다. 알고리즘은 충분히 고민하고 디버깅하는 시간도 필요한데, 계속 반복되다보니 스트레스를 너무 받아서, 또 최근에는 공부할 시간도 부족하다보니 바로 답 찾아보고 겉핡기 식으로 공부한 것도 많고. (반성해라 나 자신..
2020.09.13 -
[네트워크] HTTPS (개념, SSL/TLS 암호화 과정, 장단점)
최근 진행한 프로젝트에서 음성인식 때문에 Webkit 기반의 Speech Recognition API를 사용했다. 로컬 환경에서는 카메라 및 마이크 요청을 허용해주니 문제 없이 잘 됐지만, AWS에 배포한 후 실제 웹 환경에서는 허용 여부를 물어보지도 않고 해당 권한을 차단했다. 찾아보니 2019년에 구글이 크롬 68을 릴리즈하며 7월부터 SSL 보안 서버가 적용된 HTTPS 웹페이지는 '안전함'으로 표시하고 그렇지 않은 HTTP 사이트에 대해서는 '안전하지 않음' 경고 표시를 적용할 것이라고 발표했는데, '안전하지 않음' 사이트에 대해서는 요청을 무조건 차단한다고... 😥 하아.. 덕분에 프로젝트 마감 전날 부랴부랴 SSL 인증을 완료했다. (certbot으로 쉽게 할 수 있는데 키 생성 개수 제한 있..
2020.09.11 -
[Apache] 아파치 기반 SPA에서 새로고침 시 Not found 뜨는 문제 해결 방법
배포 파일을 AWS의 Apache에 올리고 사이트에 접속을 했더니 홈 경로가 아닌 곳에서 새로고침을 하거나 뒤로가기 등을 하면 Not found가 뜨는 문제가 발생했습니다. 처음에는 어떤 부분을 건드려야 하는지, 어떻게 검색을 해야하는지도 모르겠어서 엄청 헤맸는데 (처음에는 vue-router의 문제인 줄 알았습니다...) SSAFY 코치님의 조언으로 웹 서버의 configuration 설정의 문제란 것을 알게 되었고, 환경이 조금씩 다르긴 하지만 StackOverflow와 이 블로그를 참고했습니다. 사실 아파치 뿐만 아니라 SPA(Single Page Application)면 흔히 발생하는 일이라고 알고 있는데요, SPA는 일반적으로 단 하나의 색인 파일(index.html)과 HTML5의 Histor..
2020.09.01