Computer Science(11)
-
[DB] ORM (Object Relational Mapping) 사용 이유, 장단점
ORM (Object Relational Mapping) 객체지향적 구조? 모든 데이터는 객체이며, 각 객체는 독립된 데이터와 독립된 함수를 지님 SQL 구조? 데이터는 테이블 단위로 관리되며 객체들을 조회하기 위한 명령어를 사용 ORM은 각 테이블 또는 구분하고자 하는 데이터 단위로 객체를 구현하고, 데이터 간의 관계를 형성 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 Framework 객체지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용하기 때문에 객체 모델과 관계형 모델간에 불일치가 존재 → ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결 즉, 객체를 통해 간접적으로 데이터베이스 데이터를 다룸 이러한 중간 계층을 Persi..
2020.10.01 -
[네트워크] 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 -
[네트워크] HTTPS (개념, SSL/TLS 암호화 과정, 장단점)
최근 진행한 프로젝트에서 음성인식 때문에 Webkit 기반의 Speech Recognition API를 사용했다. 로컬 환경에서는 카메라 및 마이크 요청을 허용해주니 문제 없이 잘 됐지만, AWS에 배포한 후 실제 웹 환경에서는 허용 여부를 물어보지도 않고 해당 권한을 차단했다. 찾아보니 2019년에 구글이 크롬 68을 릴리즈하며 7월부터 SSL 보안 서버가 적용된 HTTPS 웹페이지는 '안전함'으로 표시하고 그렇지 않은 HTTP 사이트에 대해서는 '안전하지 않음' 경고 표시를 적용할 것이라고 발표했는데, '안전하지 않음' 사이트에 대해서는 요청을 무조건 차단한다고... 😥 하아.. 덕분에 프로젝트 마감 전날 부랴부랴 SSL 인증을 완료했다. (certbot으로 쉽게 할 수 있는데 키 생성 개수 제한 있..
2020.09.11 -
[운영체제] 스레드 안전 : Thread-safety (C++과 JAVA)
Thread-safe A data type or static method is threadsafe if it behaves correctly when used from multiple threads, regardless of how those threads are executed, and without demanding additional coordination from the calling code. 멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음을 뜻한다. 즉, 하나의 함수가 한 스레드로부터 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하여 동시에 함께 실행되더라도 각 스레드에서의 함수의 수행 결과..
2020.08.09 -
[운영체제] 멀티스레드 : Multi-thread (장단점, 멀티프로세스와 차이)
Multi-thread 아래 글에서는 프로세스와 스레드에 대한 기본적인 설명을 하지 않습니다. 프로세스와 스레드에 대한 내용은 여기를 참고해주세요 :) 멀티 스레딩(Multi-threading)이란? 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상 시키는 것 하나의 프로그램에서 동시에 여러 개의 일을 수행할 수 있도록 해줌 (사실 분산처리를 통해 동시에 실행되는 것 처럼 보이는 것) ex) 워드 프로세서에서 그림을 표시하고, 키 입력에 응답하며 철자 및 문법 검사를 계속 함 멀티 스레딩의 장점과 단점 장점 응답성 : 프로그램의 일부분(스레드)이 중단되거나 긴 작업을 수행하더라도 프로그램의 수행이 계속 되어 사용자에 대한 응답성이 증..
2020.08.09