반응형 Study64 [Server] Go Web Server HTTPS 적용하기 HTTPS란? HTTP 프로토콜을 사용하여 통신하는 웹 애플리케이션에 TLS 프로토콜을 적용시켜 암호화된 데이터를 사용하여 통신하는 프로토콜. TLS란? 컴퓨터 네트워크 통신에 데이터를 암호화하는 데 활용할 수 있는 프로토콜. 대칭 암호화 방식과 공개키 암호화 방식을 사용한다. 디지털 인증서란? 믿을 수 있는 제3자 기관에 의해 발행된 디지털 문서이다.(스스로가 OpenSSL과 같은 오픈소스를 통해 자가 인증이 가능하기도 하다) 공개키, 이 키가 속한 서버 이름, 정보를 검증하는 믿을 수 있는 제3자 기관의 이름, 발행자가 기록돼 있다. 이 제3자 기관을 인증기관(CA)이라 한다. 만료일자가 존재한다. 웹 클라이언트는 일반적으로 알려진 인증기관의 리스트를 갖고 있다. 대칭 암호화 방식 대칭키 알고리즘이라.. 2022. 6. 7. [Server] OAuth 알고 쓰기 OAuth란? 다양한 플랫폼 환경에서 권한 부여를 위한 산업 표준 프로토콜이다. 아마 다양한 환경에서 알게 모르게 OAuth를 사용한 인증을 해 보았을 것이다. 당장에 생각나는 예시를 들자면 첨부한 인프런의 로그인화면을 보면 인프런 자체의 회원임을 인증하는 방법과 간편 로그인 란의 다양한 플랫폼을 통해 인증하는 방법이 있는 것을 볼 수 있는데 여기서 간편 로그인을 통한 인증이 이 OAuth 프로토콜을 사용한 인증 방법이다. OAuth에서의 용어 정리 사용자 : Resource Owner 사용하고자 하는 서버 : Client 리소스 제공 서버 : Resource Server 리소스 제공 서버의 인증 서버 : Auth Server OAuth를 사용하는 이유 신뢰성이 확보되지 않은 서비스에 본인의 정보를 넘기.. 2022. 6. 2. [문자열] 문자(아스키코드-asciicode, 유니코드-unicode)와 인코딩(utf-8, base64) 시작 컴퓨터 세계에서 문자라고 한다면 대부분의 사람들이 들어봤을 아스키코드와 유니코드가 대표적일 것이다. 어떠한 기회가 있어서 이 부분에 대해 관심이 생겼고(원래도 알았어야 한다고 생각하지만 그렇지 못했다!) 공부해 보았다. 깊이 있게 알게 됐다고는 말할 수 있을지 모르겠지만 이전보다는 더 많은 것을 알게 됐다. 그 부분을 기억하기 위해 이렇게 기록하고자 한다. 아스키코드 아스키코드는 컴퓨터를 만들었고 가장 초창기에 컴퓨터에 대해 깊게 사용하기 시작한 서양권(영문권)의 나라들이 정립한 것이다. 그때문에 코딩에 필요한 몇몇 특수 문자들과 영문, 숫자 정도를 포함하고 있다. 그렇기에 7bit라는 작은 범위에 코딩에 필요한 문자를 맵핑한 약속이다. 유니코드 하지만 컴퓨터는 영문권에서만 사용되는 것이 아니게 됐.. 2022. 5. 25. [Go] 고루틴(GoRoutine) 심화(5) - 누수 관리 메모리 누수 비록 고루틴이 다른 쓰레드에 비해 가볍긴 하지만 메모리를 사용하는 것은 당연할 것이다. 그렇기에 사용하진 않지만 살아있는 고루틴은 프로세스의 메모리를 쓸데없이 낭비하게 될 것이다. 이런 현상을 메모리 누수라 한다. 메모리 누수를 관리하는 방법을 살펴보자. 누수 관리 누수가 일어나는 예시 package main import ( "fmt" ) func main() { doWork := func(strings 2022. 5. 24. [Go] 고루틴(GoRoutine) 심화(4) - channel Channel Channel 이란? 고루틴을 사용하는 데 있어서 데이터를 전달하는 가장 효과적인 방법이다. 데이터를 전달하는데 통로 역할을 한다. 채널을 사용하는 데 있어 서로 간에 많은 정보를 알 필요는 없으며 채널에 대한 주소 값만 알면 채널을 통해 데이터를 송신하고 수신할 수 있다. Channel의 종류 양방향 채널 (chan interface{}) 데이터를 송신하고 수신하는 역할 모두 가능하다. 송신용 채널 (chan 2022. 5. 15. [Go] 고루틴(GoRoutine) 심화(3) - sync.Pool Pool Go는 GC(Garbage Collector)가 존재하는 언어이다. 그렇기에 사용하지 않는 객체는 GC가 이를 알아차려 정리하고자 할 것이다. 그러나 객체를 생성하는데 굉장히 오랜시간이 걸리고 당장엔 사용하지 않지만 이를 재사용할 가능성이 높다면 GC가 삭제하는 것은 큰 효율성 저하를 불러올 것이다. 또한 많은 객체를 생성해야 할 필요가 있는 객체역시 만들어 놓은것을 재사용한다면 메모리적으로도 크게 이득을 볼 수 있을 것이다. 이를 효율적으로 관리해 주는 것이 Pool이라 불리는 객체 저장소이다. 그리고 Go 언어는 이 기능을 Sync 패키지에 내장해 두었고 이것이 sync.Pool 이다. Sync.Pool의 기본 기능 GET 풀에 저장된 인스턴스를 불러오는 함수. NEW 풀에 저장된 인스턴스가.. 2022. 5. 13. 이전 1 2 3 4 5 6 7 ··· 11 다음 반응형