목록2023/04 (5)
hmk run dev
경쟁상태(Race Condition) 경쟁 상태(Race Condition)는 둘 이상의 스레드나 프로세스가 공유된 자원(예: 변수, 메모리 등)에 대해 동시에 접근하고 변경하는 경우 발생할 수 있는 문제입니다. 이 경우, 어떤 스레드나 프로세스가 먼저 접근하여 변경한 값을 다른 스레드나 프로세스가 무시하거나, 올바르지 않은 값을 사용하는 등의 문제가 발생할 수 있습니다. 예를 들어, 두 개의 스레드가 동시에 같은 변수에 접근하여 값을 증가시킨다고 가정해보겠습니다. 만약, 첫 번째 스레드가 값을 증가시키기 전에 두 번째 스레드가 변수에 접근하여 값을 변경한다면, 첫 번째 스레드가 기대한 값이 아닌 변경된 값으로 변수를 증가시키게 됩니다. 이러한 문제를 경쟁 상태라고 합니다. JavaScript에서도 멀티..
프로그래밍의 핵심은 유저들에게 가치를 제공하는 것 개발자는 자신이 기술자라고 생각해서는 안된다. 너무 구체적인 것에 집중해선 안됩니다. 소비자에게 더 나은 가치를 제공하여 그들의 불편함을 해소할 수 있는 것을 개발해야 합니다. 개발자는 “세상을 어떻게 더 좋게 만들 수 있을까“라는 고민을 해야만 합니다. 당신이 더 좋은 제품을 만들 수 있다면 세상은 더 좋은 곳이 될 수 있을 겁니다. 특정한 아키텍처나 기술 또는 코드 시퀀스에대해 약간의 자부심을 가지는 것은 좋습니다. 그러나, 최우선적으로, 제품이 가치를 줄 수 있는 가를 생각해야 좋은 프로그래머라고 할 수 있습니다. 개발자는 유저를 위해 일을 해야합니다. 그리고 기술적 역량이 있다면, 최소한의 노력으로 가장 많은 가치를 제공하는 디자인을 만들어 내야 ..
마이그레이션 의사 결정 결과 aws lambda를 이용해 backEnd에서 색상을 추출하는 방식을 FE에서 모두 처리 서버비용 절감 Rust를 사용한 WebAssembly 도입 및 사내 시스템화 기존 방식 filedId & sliceId를 넘겨 backend에서 컬러를 추출해 보여주는 방식(sliceApi) 적용 방식 Rust & wasm-pack을 이용해 wasm 모듈 생성 wasm 모듈이 적용된 webworker를 생성 해당 webworker에 메세지를 주고 받으며 데이터 교환 도입이유 이미지에서 색상 데이터를 추출하여 추천 색상을 찾는 것은 기존에도 가능했지만, 이 과정에서 많은 계산 작업이 필요하고, 이는 웹 페이지의 성능에 영향을 미칠 수 있습니다. WebWorker는 백그라운드 스레드에서 작업..
자바스크립트는 브라우저에서 실행되는 스크립트 언어입니다. 이 언어는 변수, 함수, 객체 등의 요소를 이용하여 동적인 웹페이지를 만들기 위해 사용됩니다. 자바스크립트의 동작 원리와 메모리 관리는 다음과 같습니다. 1. 동작 원리 자바스크립트는 클라이언트 측에서 동작하며, 실행 순서는 다음과 같습니다. 스크립트 파일을 다운로드합니다. 파싱(parsing) 과정에서 코드를 읽어들이고 문법적으로 검사합니다. 실행 엔진(execution engine)이 코드를 실행합니다. 실행 과정에서 발생하는 이벤트를 처리합니다. 실행이 완료되면 메모리에서 삭제됩니다. 2. 메모리 관리 자바스크립트는 가비지 컬렉션(garbage collection)을 이용하여 메모리를 관리합니다. 가비지 컬렉션이란, 사용하지 않는 메모리를 자..
컴파일 언어: 컴파일 언어는 소스 코드를 기계어로 미리 변환하는 과정을 거친 다음, 이를 실행합니다. 이때 변환된 기계어 코드는 실행 속도가 빠르고, 컴파일된 코드는 반복적으로 사용될 수 있어서 실행 속도가 빨라집니다. 대표적인 예시로는 C, C++, Java 등이 있습니다. 인터프리터 언어: 인터프리터 언어는 소스 코드를 실행하는 동안에 한 줄씩 해석하여 실행합니다. 이 때문에 컴파일 언어보다 실행 속도가 느리지만, 컴파일 언어에서 발생하는 컴파일러의 오류 등이 없기 때문에 디버깅이 쉽습니다. 대표적인 예시로는 Python, Ruby, JavaScript 등이 있습니다. 인터프리터 언어와 컴파일 언어는 각각의 장단점이 있습니다. 인터프리터 언어는 실행 시간에 코드를 해석하기 때문에, 즉석에서 코드 수정..