[Mac Os] Mac 트랙패드 세 손가락 드래그
·
IT
MacBook Pro M4 Pro, Sequoia 15.3.1 버전에서 작성되었습니다. Mac 트랙패드에서 가장 유용하게 사용하는 것 중 하나가 세 손가락으로 드래그하는 기능이다.기본설정으로는 되어있지 않아, 직접 켜줘야 하는 기능이다.이 기능을 사용하고 안하고는 트랙패드의 사용성에 엄청난 차이가 나는 것 같다. 해당 기능은 세 손가락으로 드래그를 하면, 마우스 좌클릭을 하고 드래그하는 동작이 된다.ex) 글을 복사할 때, 화면 창을 옮길 때, 파일을 옮길 때 등등 세 손가락 제스처를 사용하여 항목을 드래그하는 기능은 Force Touch를 지원하는 트랙패드의 옵션이라고 한다.설정 방법설정 이름은 사용 중인 macOS 버전에 따라 다를 수 있다.1. Apple 메뉴() > 시스템 설정(또는 시스템 환경..
[VS Code] VS Code로 JSON 자동 정렬
·
IT
Visual Studio Code(VS Code)로 JSON 파일을 자동 정렬하여 이쁘게 보는 방법을 소개합니다. JSON 데이터를 볼 경우가 많은데, JSON이 아래와 같이 정렬이 되어있지 않아 알아 보기 어려운 경우가 있습니다. `{"openapi":"3.1.0","info":{"title":"Get weather data","description":"Retrieves current weather data for a location.","version":"v1.0.0"},"servers":[{"url":"https://weather.example.com"}],"paths":{"/location":{"get":{"description":"Get temperature for a specific locat..
[가상면접 사례로 배우는 대규모 시스템 설계 기초] 6장. 키-값 저장소 설계
·
IT
키-값 저장소(key-value store)는 비 관계형(non-relational) 데이터베이스이다.이 저장소에 저장되는 값은 고유 식별자(identifier)를 키로 가져야 한다.키와 값 사이의 이런 연결 관계를 "키-값" 쌍(pair)이라고 지칭한다. 키는 일반 텍스트일 수도 있고 해시 값일 수도 있으나, 성능상의 이유로 키는 짧을수록 좋다. 단일 서버 키-값 저장소한 대 서버만 사용하는 키-값 저장소를 설계하는 것은 쉽다.가장 직관적인 방법은 키-값 쌍 전부를 메모리에 해시 테이블로 저장하는 것이다.이 접근법은 빠른 속도를 보장하긴 하지만 모든 데이터를 메모리 안에 두는 것이 불가능할 수도 있다는 약점을 갖고 있다.이 문제를 해결하기 위한 개선책으로는 아래와 같은 것이 있다.데이터 압축(compr..
[가상면접 사례로 배우는 대규모 시스템 설계 기초] 5장. 안정 해시 설계
·
IT
안정 해시는 수평적 규모 확장성을 달성하기 위해 요청 또는 데이터를 서버에 균등하게 나누기 위해 보편적으로 사용하는 기술이다.해시 키 재배치(rehash) 문제N개의 캐시 서버가 있을 때, 이 서버들에 부하를 균등하게 나누는 보편적인 방법은 아래의 해시 함수를 사용하는 것이다.`serverIndex = hash(key8) % N (N은 서버의 개수)`이 방법은 서버 풀(server pool)의 크기가 고정되어 있을 때, 그리고 데이터 분포가 균등할 때는 잘 동작한다. 하지만, 서버가 추가되거나 기존 서버가 삭제되면 문제가 생긴다.예를 들어, 1번 서버가 장애를 일으켜 동작을 중단했다고 하자. 서버 풀의 크기는 3으로 변하고, 그 결과 키에 대한 해시 값은 변하지 않지만 나머지(%) 연산을 적용하여 계산한..
[가상면접 사례로 배우는 대규모 시스템 설계 기초] 4장. 처리율 제한 장치의 설계
·
IT
네트워크 시스템에서 처리율 제한 장치(rate limiter)는 클라이언트 또는 서비스가 보내는 트래픽의 처리율(rate)을 제어하기 위한 장치다. API에 처리율 제한 장치를 두면 좋은 점DoS(Denial of Service) 공격에 의한 자원 고갈(resource starvation)을 방지할 수 있음비용을 절감한다. 추가 요청에 대한 처리를 제한하면 서버를 많이 두지 않아도 됨서버 과부하를 막는다. 봇(bot)에서 오는 트래픽이나 사용자의 잘못된 이용패턴으로 유발된 트래픽을 걸러내는데 처리율 제한 장치를 활용할 수 있음처리율 제한 장치를 구현하는 데는 여러 가지 알고리즘을 사용할 수 있는데, 각각은 고유한 장단점을 갖고 있다. 처리율 제한 장치는 어디에 둘 것인가?`클라이언트` 측에 둘 수 도 있..
[가상면접 사례로 배우는 대규모 시스템 설계 기초] 3장. 시스템 설계 면접 공략법
·
IT
3장은 실제 면접의 접근법에 대해 설명해주고 있다. 나는 당장은 면접을 준비하고 있는 것은 아니지만, 실제 업무에서도 마찬가지로 책의 내용대로 사고하는 방식은 좋은 접근일 것 같다는 생각을 했다. 사실 면접이라는 것은 업무를 잘하는 사람을 뽑기 위함이니, 당연한 것이라고도 생각이 든다. 아래 내용에서 면접관을 상사라고 치환하면 동일한 내용일 것이다. 시스템 설계 면접은 두 명의 동료가 모호한 문제를 풀기 위해 협력하여 그 해결책을 찾아내는 과정에 대한 시뮬레이션이다.이 문제에는 정해진 결말도, 정답도 없다.면접은 설계 기술을 시연하는 자리이며, 설계 과정에서 내린 결정들에 대한 방어 능력을 보이는 자리이다.기술적 측면을 평가하는 것 이상으로, 협력에 적합한 사람인지, 압박이 심한 상황도 잘 헤쳐 나갈 자..
[가상면접 사례로 배우는 대규모 시스템 설계 기초] 2장. 개략적인 규모 추정
·
IT
`개략적인 규모 추정(back-of-the-envelope estimation)`은 보편적으로 통용되는 성능 수치상에서 사고 실험(thought experiments)을 행하여 추정치를 계산하는 행위로써, 어떤 설계가 요구사항에 부합할 것인지 보기 위한 것이다. 개략적인 규모 추정을 효과적으로 해 내려면 규모 확장성을 표현하는 데 필요한 기본기에 능숙해야 함.특히, `2의 제곱수`나 `응답지연(latency) 값`, 그리고 `가용성에 관계된 수치들`을 기본적으로 잘 이해하고 있어야 함.2의 제곱수데이터 볼륨의 단위를 2의 제곱수로 표현하면 어떻게 되는지를 알아야 한다.최소 단위 : 1바이트 = 8비트ASCII 문자 하나가 차지하는 메모리 크기 : 1바이트응답지연 값통상적인 컴퓨터에서 구현된 연산들의 응답..
[가상면접 사례로 배우는 대규모 시스템 설계 기초] 1장. 사용자 수에 따른 규모 확장성
·
IT
단일 서버모든 컴포넌트가 단 한대의 서버에서 실행되는 간단한 시스템부터 설계해 보기웹 앱, 데이터베이스, 캐시 등이 전부 서버 한 대에서 실행됨사용자 요청 처리 흐름사용자는 도메인 이름을 이용하여 웹사이트에 접속. 도메인 이름을 `도메인 이름 서비스(Domain Name Service, DNS)`에 질의하여 IP 주소로 변환하는 과정을 거침. DNS는 보통 제3 사업자(third party)가 제공하는 유료 서비스를 이용하게 되므로, 우리 시스템의 일부는 아님.DNS 조회 결과로 IP 주소가 반환됨해당 IP 주소로 HTTP(HyperText Transfer Protocol) 요청이 전달됨요청을 받은 웹 서버는 HTML 페이지나 JSON 형태의 응답을 반환이 요청들은 `웹 앱`과 `모바일 앱` 두 가지 종..