Rust Memory Management
After GC, Post GC Memory는 프로그래밍에 꽤 중요하고 기술적인 부분입니다. 만약 독자께서 malloc, calloc, free 등에 어색함이 없다면 더욱 Memory를 다루는 것에 기술적인 특징들을 공감하실 수도 있겠습니다. 그래서 또 Memory를 다룬다는 점은 꽤 신중하고 기교가 높아야 했으며 문제가 복잡해질수록 이 과정에서의 버그나 Side-effect의 해결이 쉽지 않습니다. 이런 고통(?)에 대한 공감은 어렵지 않은 일이죠. 그래서 등장한 것이 바로 Garbage Collection 입니다. Garbage Collection은 무려 1959년에 John McCarthy에 의해 Lisp에서 등장하는 역사를 가지고 있습니다. 벗어나는 이야기지만 Robert C. Martin은 Th..
bayesian optimization in trading
AI는 인공신경망의 등장부터 두 번의 AI 겨울이 지난 현재까지 많은 산업의 패러다임을 바꿔나가고 있습니다. 특히 금융시장에서는 AI의 잠재력을 높게 평가하고, 현재 시장 트렌드 분석, 미래 시장 변화 예측 등을 위한 최적의 예측 모델을 연구하고 있는데요. 이같은 모델 개발을 위해서는 먼저 ‘초매개변수(하이퍼 파라미터, hyperparameter)’를 설정해야 합니다. 많은 연구들을 통해 알 수...
Middleware 패턴과 코드 수준에서의 활용
변경에 강한 패턴 생뚱맞은 도입이지만 좋은 코드란 무엇일까요? 여러 설명들을 들 수 있지만 그중 꽤 많이 거론되는 덕목은 변경하기 용이한 코드입니다. 코드의 작성 시점에서 변경은 미래에 일어날 일입니다. 지금 그 요구를 다 안다면 기다릴 것 없이 코드에 반영하면 되지만 그렇지 않기 때문에 변경이 용이할 수 있다는 점은 쉽지는 않습니다. 한편으로는 그렇기에 코드를 변경하는 케이스들을 일반화하여 코드를 작성하는 시점에 어떤 변경 패턴을 대비하곤 합니다. 그리고 그런 방법 중에 Middleware 패턴을 코드 수준에서 이용해 보려고 합니다. 코드 흐름과 변경 먼저, 코드를 변경하는 패턴 중에는 코드가 진행하는 흐름에 대한 패턴을 짧게 살펴볼까 합니다. 대표적으로 then 의 의미를 사용하는 방식들을 찾아볼 수..
올리브영 기술 블로그에는 누가, 얼마나 방문했을까?
올-하! 💚 안녕하세요! 신입사원 복스뮤직을 듣는 럭셔Lee…
위상정렬과 안전한 최소한의 동시성
위상정렬 위상정렬 은 부분 순서를 갖는 집합을 정렬하는 방법입니다. 우리에게 익숙한 순서가 부여되는 집합인 전순서 집합에는 자연수, 실수 등이 있습니다. 이들은 임의의 원소를 두 개 꺼내면 둘 사이의 순서를 언제나 결정할 수 있는 게 특징입니다. 이와 다르게 모든 임의의 두 원소 사이에 순서를 결정하지 못하는 집합도 있습니다. 하지만 뭔가 집합에 포함된 순서가 있으면서도 말이죠. 알쏭달쏭 하지만 그런 문제는 일상에 많습니다. 흔히 드는 예시는 수강신청입니다. 수강하려는 과목들 사이에는 딱히 순서가 없지만, 어떤 과목에는 선수과목이 있곤 합니다. 이런 경우 부분적으로 발생하는 순서를 고려해서 수강 계획을 짜야하죠. 이처럼 작업관리에서는 흔하게 부분 순서를 갖는 문제를 쉽게 마주합니다. 이를 정렬할 수 있는..
[키워드] 롬 리서치(Roam Research)란? 그래프 기반 노트 애플리케이션
롬 리서치(Roam Research)는 동명의 회사에서 개발하고 서비스하고 있는 그래프 기반의 노트 애플리케이션입니다. 롬 리서치는 2019년 10월 베타 버전을 런칭하고 2020년 6월 유료 플랜을 공개했습니다. 노트를 연결하고 편집하는 기능이 다른 노트 애플리케이션에 비해서 특출나게 편리해서, 일부 유저들 사이에서 큰 인기를 끌고 있습니다.
[뉴스] IDaaS 서비스 옥타(Okta), Okta Starter Developer Edition 공개
IDaaS 서비스 옥타(Okta)에서는 Oktane 21 Virtual 컨퍼런스에서 MAU 15,000명까지 무료로로 인증 기능을 임베딩해서 사용할 수 있는 Okta Starter Developer Edition을 공개했습니다. Okta Developer 서비스를 사용하면 인증 기능을 앱에 임베딩할 수 있으며, Okta 서비스의 적응형 MFA, API...
[뉴스] 테라폼(Terraform) 0.15 릴리스
지난 4월 14일 하시코프(Hashicorp)에서는 Infrastructure as Code를 구현하는 오픈소스 도구 테라폼(Terraform)의 0.15 버전을 정식 릴리스하였습니다. 테라폼 0.15는 1.0를 준비하는 버전으로 안정성 및 호환성을 중심에 두고 개선이 이루어졌습니다.
Monad 를 이해하는 방법
Monad 어떤 것을 설명하는 방법에는 몇 가지가 있습니다. 그것의 정의를 가지고 설명할 수도 있고 그것이 갖는 특성을 나열하며 설명할 수도 있습니다. Monad 를 설명할 때는 어떤 방법이 좋을까요? 사실 이 글을 쓰기 전 Monad 를 이해하기 위해 꽤 많은 설명들을 대하였습니다. bind :: m a -> (a -> m b) -> m b return :: a -> m a 이런 설명은 너무 단순하거나 수학적이어서 그 조건을 만족한 것이 어떤 기능을 할 수 있는지 상상하기가 어려웠습니다. Maybe is Monadic jQuery is Monadic Stream (in Java) is Monadic 이런 설명들은 그 사용 예들을 살피며 Monad 가 어떻게 기능하는 패턴이 있는지 대충 느끼게 해주지만 ..
Component 와 Transclude
Web Component 이 글은 Web Component 에 대한 소개의 글은 아닙니다. 이를 위한 Custom Element 나 Shadow DOM 의 기술을 설명하는 글도 아닙니다. 이 글에서는 transclude 한 컴포넌트 디자인이 어떤 의미를 지닐 수 있는지를 논의해보고 싶습니다. 자바스크립트나 함수적인 프로그래밍에 익숙한 분들은 클로져나 람다 등에 익숙하실 것 같습니다. 제가 느끼기에 transclude 는 이런 기술들의 근본과 차이가 크지 않으며 이를 통한 활용이 좀 더 높은 추상화를 가능하게 도와주는 도구라고 생각합니다. Web 에서 가장 많이 사용되는 element 는 컴포넌트 일 것입니다. 이 요소는 매우 단순한 요소인데 어떻게 많이 쓰이면서도 요소가 제공하는 요구사항을 더 추가하거나..
Yarn Workspace를 이용한 Monorepo 구성
PC의 시스템 로그를 활용하여 위협 행위 탐지하기
시작하며 하루에도 수통 씩 들어오는 스팸문자나 주기적인 개인 정보 유출 사고 뉴스를 접하다 보면 평소 보안에 관심이 없던 사람이라도 자신이 얼마나 위험에 노출되어 있는지 걱정되기 마련이다. 이런 이들을 위해 다양한 보안 프로그램과 서비스들이 등장하였지만 그에 맞춰 공격자들 또한 더욱 고도화된 방법들을 시도하고 있다. 대표적으로 기술적인 틈을 노리는 것이 아니라, 사용자의 인지적인 헛점을 공략하는 사회공학적 해킹 기법의 하나인 스피어피싱 (Spe
Gas! Gas! Gas! ⛽ 가스비를 절약하는 방법
Class vs Factory Function, 더 나은 선택은?
안녕하세요. API 개발팀 이정준 입니다. ECMAScript6 에서 class가 추가되었습니다. Class Function과 Factory Function의 차이를 알아보고, 어떤 Function을 사용할지 생각해 봅시다. 1.기본 사용 방법 기본 사용 방법은 다음과 같습니다. Class Function class TodoModel { constructor(data) { this.todos = []; this.data = data; } add
웹페이지에서 파일 다운로드 링크 제공 시 파일명 설정방법
[기술 블로그] 로플랫 SDK 개발 이야기
Webhook 이란
[키워드] 로케일(Locale)이란? 국가 및 언어 설정
로케일(Locale)은 사용자 인터페이스에서 사용되는 언어, 지역 설정, 출력 형식 등을 정의하는 문자열입니다. 유닉스, 리눅스, 맥OS 등 POSIX (호환) 시스템에서는 언어, 국가, 인코딩 방법의 조합으로된 문자열을 사용합니다.