큐와 consumer는 1 대 1! => 그래서 한 consumer가 받아보는 이벤트들은 큐에 시간순으로 정렬되어 있음이 보장된다. mac에 설치해서 실행해보기 # 설치 brew install rabbitmq # 포그라운드 실행 /usr/local/opt/rabbitmq/sbin/rabbitmq-server # 백그라운드 실행 brew services start rabbitmq localhost:15672 접속하고 초기 id/pw인 guest/guest 로 로그인하기. 라우팅 참고하기 : Part 4: RabbitMQ Exchanges, routing keys and bindings (예시 언어는 python!) queue - exchange 바인딩 한개의 큐는 여러개의 exchange에 바인딩 할 수 ..
parrallelism vs concurrency parrallelism => 여러 태스크가 진짜로 동시에 진행됨. concurrency => 시분할로 여러개의 태스크가 동시에 진행되는 것 처럼 보이는 것. 일꾼 parallelism을 가능하게 하는 컴퓨터의 일꾼 늘이기 기법에 대해 알아보자. 일단 가장 간단하게는 cpu에 코어가 여러개 장착되어 있는 것을 생각할 수 있지만 이외에도 다양한 방법으로 parallelism을 지원하는데, 우선 파이프라이닝을 통한 명령어 수준의 병렬성이 있다. - 하이퍼스레딩 (SMT) cpu 사려고 찾아보면 이렇게 4코어 8쓰레드 이런식으로 적혀있는데 이게 뭔지 아시는가? 옛날에는 인텔이 하이퍼스레딩이라는 기법을 통해서 코어가 1개이지만 마치 2개인 것 같은 성능을 낸다라는..
2021.10.16 - [CS/WEB] - 디지털 암호화 디지털 인증서 비대칭키를 활용한 인증서 방식을 사용하면 안전한 상대방임을 보장받기 위한 인증 서비스가 온라인으로 유지될 필요가 없다. * 참고로 kerberos 라는네트워크 인증 암호화 프로토콜에서는 온라인 KDC(key distribution center)에 접속해서 테이블을 대조하고 티켓을 발급받아 서버와 통신해야 한다고 함. Kerberos builds on symmetric cryptography and requires a trusted third party (=KDC key distribution center) $ SIGN_{CA's\,private\,key}\{name:public\,key\} $ 인증서의 핵심 역할은 1. 클라이언트가 ..
SSL vs TLS SSL1.0 - never publicly released because of serious security flaws in protocol SSL2.0 - deprecated in 2011 SSL3.0 - deprecated in June 2015 TLS1.0, TLS1.1 - widely deprecated by web sites around 2020 넷스케이프사가 처음 개발한 시조새 같은 프로토콜이 SSL이고 SSL을 계승하고 결점들을 보완해서 현재에 실제 사용되고 있는 프로토콜이 TLS인데, 이중에서 현재 가장 널리 통용되고 있는 것은 TLS1.2 이지만 TLS1.3으로의 세대교체 중인 그런 느낌..? Cipher suites TLS 통신 과정에서 사용할 암호화 알고리즘 모음 ..
ECC (elliptic curve cryptography)를 사용한 digital signature 알고리즘. 특히 TLS에서 디피힐먼 방식의 키교환 알고리즘을 채택했을 경우 서버 authentication(해당 서버가 ssl 인증서에 들어있는 public key의 counterpart인 private key를 진짜 가졌음을 검증)을 위해 함께 사용되는 알고리즘 중 하나이다. (RSA를 키교환 알고리즘으로 채택했을 경우와 달리, 디피 힐먼은 키교환만 할 뿐 authentication을 하지는 못하기 때문에) * ECC Elliptic Curve Cryptography Tutorial - Understanding ECC through the Diffie-Hellman key Exchange 파라미터 세팅..
대칭키 암호체계 $$ E_{k}(p)=c\\ D_{k}(c)=p $$ E : encrypt function D : decrypt function k : secret key p : plain text c : cipher text 인코딩과 디코딩에 같은 키를 사용한다. 비대칭키 방식보다는 컴퓨팅 파워가 덜 들지만, 각 호스트쌍 마다 각각의 비밀키를 나눠가져야 하고 이 비밀키를 탈취당하면 제3자도 메세지를 암호화, 복호화할 수 있게된다. 대칭키 알고리즘으로는 AES, CHACHA20_POLY1305, DES, Triple-DES, RC2, RC4, Camelia, ARIA 등이 있다. ( * 현재 제일 많이 쓰이는 건 AES, CHACHA20_POLY1305는 2015년에 발표된 속도가 더 빨라진 차세대 알고..
N+1쿼리를 방지하기 위해 rails AR에서 제공하는 4가지 association data load 방법을 정리해보자. joins 이름처럼 SQL join 쿼리로 변환된다. joins = inner join, left_outer_joins = left outer join SQL join에서 되는 건 다 된다. where, group, having, select... 특히 다른 로드 방식과 비교해서 select나 group 사용해서 원하는 대로 custom한 쿼리를 작성하고 싶을 때 쓴다. irb(main):003:0> result = Book.joins(:reviews).where(reviews: {eval: :good}).group(:author).select("books.author, COUNT(*..
생성자 함수 const Person = (function(){ //인스턴스 메소드, 프로퍼티 function Person(name){ this.name = name; this.sayName = function(){ console.log('name:'+this.name); } } //프로토타입 메소드, 프로퍼티 Person.prototype.age = 20; Person.prototype.sayHi = function(){ console.log('Hi! My name is '+this.name); } //정적 메소드, 프로퍼티 Person.country = "america"; Person.sayHello = function(){ console.log('Hello'); } return Person; }())..