Root

런타임이란? ( 런타임 환경이란? ) 우리가 사용하는 프로그래밍 언어중 일정부분을, 컴파일 시간에 기계어로 변환하지 않고 프로그램이 실행되는 동안 기계어로 변환(컴파일)하는 시스템 javascript가 실행중에, 코드를 컴파일 - 런타임 : browser, Node.js..
Lunatic 이란? 브라우저의 가상머신에서, 엄청나게 많은 작업을, 동시에 실행 수 있도록 만든 WebAssembly 라이브러리 (런타임) 탄생 배경 Erlang의 무수히 많은 프로세스 여기서 말하는 프로세스는, OS가 다루는 프로세스가 아니라 가상머신위에서 동작하는 가상의 프로세스를 뜻한다. ( 가상 프로세스가 좋은 이유 : 추후 작성 예정 ) WebAssembly의 확장성, 호환성, 유연성 웹 어셈블리는, 브라우저 가상머신위에서 동작가능하여 javascript와 합칠 수 있고, C, Rust 와 같은 low-level 언어로 작성된 코드를, 웹 어셈블리로 바꿔서 사용할 수 있으므로, 자신이 원하는 언어로 작성할 수 있다. 장점 WebAssembly로 컴파일 할 수 있는 모든 언어를 통해, 가상 프로..
· Languages
Julia 란? MIT 출신 개발자가 만든 수학 계산을 쉽게 할수 있도록 만들어진 프로그래밍언어 특징 수학 식 작성이 쉽다. Python과 합쳐서 사용가능하고, 더 빠르다. (C,Rust보다 약간 느림) 수학식을 작성하는데 C,Rust 보다 더 적은 코드가 필요하다. C의 속도와, Python의 쉬움 그 중간에 위치하고, 위의 특징 때문에, 머신러닝에 특화되어있다. 신기한 점 모든 유니코드를 이름으로 지정할 수 있다. # 변수 α ̂⁽²⁾ = 10 안녕하세요 = "Hello" 수학식 처럼 변수를 만들 수 있다 (선언) a = b = c = 11 # 셋다 11 함수 계산 속도를 측정할 수 있다. 자신이 작성한 코드와, 다른 코드의 성능 비교가능 @time println(a) # 10 # 0.020050 s..
서문 최근에 디스코드 DB 를 교체하는 이유와, 과정에 대한 글을 쓴적이 있는데, 이 과정에서 사용된 방식을 Super-Disk라고 부르더라 ㅋㅋㅋ 다시한번 말하지만, 디스코드 같이 전세계를 대상으로 서비스하는 회사는 엄청난 양의 데이터를 관리하고 있다. 또, 요즘에는 실제로 컴퓨터를 보유하고 직접관리하는 방식이 아닌, 전문적으로 컴퓨터 관리만하는 회사에게, PC를 대여하는 클라우드 컴퓨팅을 사용하는데, 이와 마찬가지로, 디스코드도 구글 서버를 빌려서 사용하는 중이다 (GCP) 이번 글에서는, 디스코드가 클라우드 컴퓨팅을 서비스를 이용하면서 겪은 어려움과, 이를 해결하기 위해 사용한 방식을 알아보면서, 실제 서비스에서 중요하게 여겨지는 기준과, 디스코드가 사용한 기술들을 살펴보자. 문제 배경 디스코드는 ..
서문 저번 게시글에서는, 디스코드가 대량의 데이터를 저장하기 위해서 이전에 사용했던 방식을 살펴보았다. [Snack] 디스코드가 1조개의 메시지를 저장하는법 서문 작년 (2022), 디스코드는 기존의 사용하고 있는 데이터베이스인 Cassandra에서, 새로운 데이터베이스인 ScyllaDB로 모든 데이터를 옮겼다. (migrate) 이는, 디스코드가 서비스에서 중요하게 생각하 defineall.tistory.com 또, 그 방식에 따른 문제점과, 사용자와 개발자에게 미친영향을 알아보았다. 결국 그 문제점들 때문에 디스코드는 DB를 교체하기로 결정했다 ( 처음에 기술의 정확한 장단점을 최대한 인지하는것이 중요한 이유 ) 과정 1. 데이터 중복 저장하기 하지만, 대용량의 데이터를 저장하는 것과, 저장된 데이터..
서문 작년 (2022), 디스코드는 기존의 사용하고 있는 데이터베이스인 Cassandra에서, 새로운 데이터베이스인 ScyllaDB로 모든 데이터를 옮겼다. (migrate) 이는, 디스코드가 서비스에서 중요하게 생각하는 3가지 요소 때문이다. 커지고 작아지는게 자유로운지 (확장성 - Scalable) 오류가 있어도, 다시 복구 가능한지 (Fault-tolerant) 유지보수가 적은지 (maintanance) 디스코드는 2017년에도, MongoDB에서 Cassandra로 옮긴 전적이 있지만, 유지보수 측면에서 많은 어려움을 겪었다고 한다. 이 때문에 디스코드는, 더 편하고 (유지보수 극혐), 심지어 더 빠르기까지한 ScyllaDB를 선택했다. 여기서 말하는 "모든" 데이터는 상상할 수 없을 정도로 크다..
(1972) The Humble Programmer - Edsger W.Dijkstra 프로그램 테스트는, 우리가 작성한 코드에 버그가 있다는 것을 알려주는데 탁월하지만, 우리가 작성한 코드에 버가 없다는 것을 알려주는덴 절망적으로 부적절하다. Stream chat in Twitch - someone. 우리 회사에 내가 담당하던 개발자가 있었는데, Elixir 코드에 대한 José Valim의 PR(Pull Request)를 "자신의 스타일이 더 좋다"고 거부했다. (José Valim - Elixir 언어 창시자) 그는 오래 가지 못했다.
👉 namespace 란? 변수나, 함수의 이름을 저장해 모아놓은 공간 👉 필요성 (목적) 변수나, 함수의 이름이 같아서, 이를 구분하고 싶을때, 같은 이름이나, 다른 곳에 존재한다는 사실을 알려주어야 한다. 같은 이름이여도, 다른 namespace에 존재하므로, 컴퓨터가 이를 구분해 올바른 작업을 한다.
선행 지식 [Rust] 소유권 - 메모리 관리 이야기 (feat. Garbage Collector) 서문 Rust에는 소유권이라는 개념이 있는데, 이는 Rust에만 존재하는 고유한 특성이다. 이 글에서는 소유권이란 것이 무엇인지 뿐만아니라, 어떤 상황에서 사용하는지, 왜 등장하게 되었는지 등 defineall.tistory.com Borrowing 이란? 의미 : 소유권을 가지고 있는 변수의 데이터를 빌리는 것 실제 : 소유권을 가지고 있는 변수의 메모리주소를 저장하는 것 배경 Rust의 변수는, 스코프를 벗어난 이후에도 메모리 공간을 OS에게 돌려주지(drop) 않도록 하기 위해 자동으로 drop 되지 않도록, 매번 수동으로 소유권을 옮겨(move)주어야 한다. 이 때문에, 굳이 drop 할 필요가 없..
MOONCO
'분류 전체보기' 카테고리의 글 목록 (2 Page)