목록미뿌감의 코딩 (348)
미소를뿌리는감자의 코딩
1. 개요프록시 코드를 하나하나 분석해 보려고 한다.#include "csapp.h"#define MAX_CACHE_SIZE 1049000#define MAX_OBJECT_SIZE 102400/* 사용자 에이전트 헤더 상수 */static const char *user_agent_hdr = "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.3) Gecko/20120305 " "Firefox/10.0.3\r\n";void doit(int connfd);void read_requesthdrs(rio_t *rp);int parse_uri(char *uri, char *hostname, char *path, int *port);void clienterro..
1. 개요 Computer Systems A Programmer's Perspective에서 페이지 930의 11.9 문제를 풀어보았다. [11.9] TINY를 수정해서 정적 컨텐츠를 처리할 때 요청한 파일을 mmap과 rio_readn 대신에 malloc, rio_readn, rio_writen을 사용해서 연결 식별자에게 복사하도록 하시오. void serve_static(int fd, char *filename, int filesize){ int srcfd; char *srcp, filetype[MAXLINE], buf[MAXBUF]; /* Send response headers to client */ get_filetype(filename, filetype); sprint..
1. 문제https://www.acmicpc.net/problem/1600 2. 접근 방법처음에 i, j 로 visited list를 만드는 것을 생각하였다가, k의 값이 유동적일 것이라 힘들 것 같다는 생각을 하였었다.하지만 3차원 리스트가 존재했기 때문에, 이를 이용하면 되었다. 코드 풀이 중에서 처음 시도는 import queue를 하는 것이었다. 하지만, 시간 초과와 런타임 에러가 지속되었고 다른 코드를 확인하다가 from collections import deque를 적용한 코드를 확인하게 되었다. 이에 queue -> deque로 import를 바꾸었고, 통과할 수 있었다. 과연, 둘의 차이가 무엇일까? import queuequeue.Queue()로 사용이 된다. 이는 멀티스레딩 환경에서의..

1. 개요이번에 채팅 기능을 확장하게 되면서, 메시지 큐 도입을 통한 서버 부하 감소를 하고자 하였다.그 중, rabbitmq를 선택해서 도입하게 되었다.kafka 보다 rabbitmq를 선택한 이유는 메시지 전송 패턴에 더 적합하다고 판단을 하였기 때문이다. 반면 kafka는 스트리밍에 더 적합한 서비스라고 판단하였다. 메시지 큐를 이용을 통해 서버의 부하를 줄일 수 있다는 점이 큰 이점으로 다가왔다. producer가 message와 routing.key를 포함해서 websocket을 이용하여 서버에 요청을 보내게 되면, 서버는 rabbitmq에 이를 전해주게 된다. rabbitmq는 exchange에서 routing.key를 통해서 알맞은 queue로 메시지를 전송하게 되고, 또한 메시지는 해당 큐..