목록분류 전체보기 (185)
hmk run dev
프로그래밍의 핵심은 유저들에게 가치를 제공하는 것 개발자는 자신이 기술자라고 생각해서는 안된다. 너무 구체적인 것에 집중해선 안됩니다. 소비자에게 더 나은 가치를 제공하여 그들의 불편함을 해소할 수 있는 것을 개발해야 합니다. 개발자는 “세상을 어떻게 더 좋게 만들 수 있을까“라는 고민을 해야만 합니다. 당신이 더 좋은 제품을 만들 수 있다면 세상은 더 좋은 곳이 될 수 있을 겁니다. 특정한 아키텍처나 기술 또는 코드 시퀀스에대해 약간의 자부심을 가지는 것은 좋습니다. 그러나, 최우선적으로, 제품이 가치를 줄 수 있는 가를 생각해야 좋은 프로그래머라고 할 수 있습니다. 개발자는 유저를 위해 일을 해야합니다. 그리고 기술적 역량이 있다면, 최소한의 노력으로 가장 많은 가치를 제공하는 디자인을 만들어 내야 ..
마이그레이션 의사 결정 결과 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 등이 있습니다. 인터프리터 언어와 컴파일 언어는 각각의 장단점이 있습니다. 인터프리터 언어는 실행 시간에 코드를 해석하기 때문에, 즉석에서 코드 수정..
무분별한 lint 정렬로 인한 헤맴... lint 오류 무시...(lint에러 좀 해결하자 ^^ 구글링하면 다 나온다) 편견에 덮인 오류 찾기 애초에부터 개발자 도구로 번들링 된 파일에 CSS가 script가 빠져있다는 것을 확인하지 않은 것에 대해 자괴감이 들었다...! 그것도 모르고 노드 버전이니 npm 캐시 문제니 getSiteControl 문제이니... 앞으로 문제가 생기면 문제가 생긴 지점부터 그 아래 구동원리를 파악 하자..! 해결방법을 지엽적으로 생각하지 말자 빠르게 하지 말고 그 밑에 돌아가고 있는 구조부터 파악하자..! 그리고 모르는 것은 물어봐도 된다. 사냥개 같이 집요하게 문제를 자발적으로 해결하려는 것도 중요하지만 조직 전체로 봤을 때 리소스 낭비이다. 그러니 오늘 깨달은 점을 실천..
개발 작업은 개발자의 컴퓨터에서 코딩하고 테스트 후에 문제가 없으면 서버에 배포한다. 서버에서 프로그램을 구동시키기 위해선 개발자의 컴퓨터 환경과 호환이 되는 실행환경(버전)이 세팅이 되어있어야 한다. ex) 노드, 파이썬, mysql 등의 버전 이러한 호환을 맞추기 위해 여러 공수가 들어갈 수가 있다..! 이를 해결하기 위한 방법은 여러 가지 방법이 있지만 현재 가장 보편적으로 많이 쓰이는 것이 바로 도커이다! 도커의 컨테이너는 개발자가 코딩을 하고 서버에 배포할 때 코드와 설계도를 같이 서버에 보내면 서버는 그 설계대로 컨테이너들을 설치해 서비스를 실행할 수 있게 해 준다. 1. 매번 환경을 세팅할 공수를 해결해준다. 2. 도커 허브에선 세팅해 놓은 환경을 가져올 수 있다! 3. 이렇게 세팅해놓은 환..
ESM(ES Modules)가 등장하기 전까진 Javascript 모듈화를 네이티브 레벨에서 진행할 수 가 없었습니다. 따라서 개발자들은 번들링(bundling)이라는 우회적인 방법을 사용할 수 밖에 없었습니다. (번들링: 모듈화된 소스 코드를 브라우저에서 실행할 수 있는 파일로 한데 묶어 연결해주는 작업) 이 같은 상황에서 webpack, rollip 같은 도구로 번들링 작업을 하며 프론트엔드 개발자의 생산성을 향상 시켰습니다. 하지만, 1000개가 넘는 JavaScript 모듈이 있는 거대한 프로젝트라면 어떨까요? 실제로 이러한 상황을 어렵지 않게 마주할 수 있으며, 이 경우 Webpack과 같은 JavaScript 기반의 도구는 병목 현상이 발생하곤 합니다. (개발 서버를 실행하는 데 있어 비합리적..
웹팩 이전의 script 태그를 가져오는 방식 아래 방식의 단점 1. 변수 이름 충돌의 가능성 script 태그의 module 타입 사용하기 아래처럼 script 태그의 type의 module을 사용하면 변수 충돌 가능성을 배제시킬 수 있다. 각각의 word 변수는 각각 모듈 안에서만 유용하다 아래 방식의 단점 1. 오래된 웹브라우저에서 호환성이 낮다. 2. 자바스크립트 파일을 모두 다운로드 받아야 하므로 리소스 가 많이 든다. hello.js var word = "Hello"; export default word; world.js var word = "World"; export default word; 웹에서도 모듈의 개념을 사용하고, 여러개의 파일을 하나로 묶어 제공하고 싶다는 생각이 반영된 것이 바..
머신러닝 기계야 학습해봐! 머신러닝 종류 주어진 데이터 set에 따라 분류할 수 있다 Supervised Learning - 데이터에 정답이 있고 정답 예측 모델 만들 때( 사진을 주고 컴퓨터가 인식할 수 있게 하기 등..) Unsupervised Learning - 데이터에 정답이 없을 때 (추천 알고리즘 등..) 머신러닝 예시 인간 러닝 6월 9월 성적 각각 반반씩 영향이 있다고 예측 6월 점수 x 0.5 + 9월 점수 x 0.5 머신러닝 6월 점수 x w1 + 9월 점수 x w2 (w = weight : 가중치) + b(bias : 편향) w값을 예측해야 함 컴퓨터에게 w1, w1를 찾으라고 시키자 > 데이터를 주면 됨 성적 3개의 레코드 오차는 각각 20, 15, 20이다. 컴퓨터에게 오차값이 최..
모든 머신러닝 모델은 다음의 3가지 과정을 거치고 이 과정은 앞으로 배우는 모든 머신러닝 알고리즘의 기본 토대이기 때문에 꼭 제대로 숙지하고 넘어가야 한다! 1. 학습하고자 하는 가설을 수학적 표현식으로 나타낸다 2. 가설의 성능을 측정할 수 있는 손실 함수를 정의한다. 3. 손실 함수를 최소화할 수 있는 학습 알고리즘을 설계한다. 1. 가설 정의 위의 3가지 과정을 선형 회귀 모델에 대입해서 생각해보면 다음과 같습니다 - 선형 회귀 모델을 선형 함수를 이용해서 회귀를 수행하는 기법 - 선형 회귀 함수는 학습하고자 하는 가설을 아래와 같은 선형 함수 형태로 표현합니다. - 이때 x와 y는 데이터로부터 주어지는 인풋 데이터, 타깃 데이터이고 W와 b는 파라미터라고 부르며 트레이닝 데이터로부터 학습을 통해 ..