Uint8Array.from()이 반복문보다 빠른 이유
·
개발 아카이브/Javascript
코드 비교변경 전: 수동 반복문 (느림)const bytes = new Uint8Array(binaryString.length);for (let i = 0; i 변경 후: Uint8Array.from() (빠름)const bytes = Uint8Array.from(binaryString, char => char.charCodeAt(0));성능 차이가 나는 이유1. 내부 구현 최적화수동 반복문의 처리 과정:JavaScript 인터프리터가 각 반복을 처리매번 조건 확인 (i )개별 인덱스 접근과 할당증가 연산 (i++) 반복Uint8Array.from()의 처리 과정:네이티브 C++ 코드로 구현벡터화된 연산 가능 (SIMD)메모리 접근 패턴 최적화루프 언롤링 자동 적용2. JavaScript 엔진 최적화V..
TypedArray와 일반 배열과의 성능 차이 정리
·
개발 아카이브/Javascript
protobuf를 알아보다가 Uint8Array를 알게되고, 그러다가 TypedArray을 알게 되었다.자바스크립트 쓰면서 타입이 없어 비효율이 많다는 점을 내면속에 알고만 있었는데, 이런 부분을 보완한 Array가 있다고 해서 알아봤다.당연히 이런것들이 존재했을 법 한데, 새삼 이제야 알게된다.TypedArray는 단순히 타입이 있는것 뿐만 아니라 많은 용도들이 있는데 신기해서 가져와 봄. https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/TypedArray TypedArray - JavaScript | MDNTypedArray 객체는 이진 데이터 버퍼에 기초하여 배열과 같은 보기를 만들어냅니다. 하지만 Typed..
protobufjs로 JSON보다 10배 빠른 데이터 통신하기
·
개발 아카이브/Javascript
https://github.com/protobufjs/protobuf.js/ GitHub - protobufjs/protobuf.js: Protocol Buffers for JavaScript & TypeScript.Protocol Buffers for JavaScript & TypeScript. Contribute to protobufjs/protobuf.js development by creating an account on GitHub.github.com Protocol Buffers란?Google이 개발한 언어 중립적 데이터 직렬화 형식JSON/XML보다 3-10배 빠름더 작은 크기로 데이터 전송성능 중요한 애플리케이션에서 사용.proto 파일 구조package ecommerce; // 네임스페..
크롬 AI 번역 API - Translator API
·
개발 아카이브/Javascript
해당 내용은 포스팅 시각 기준 실험적인 기능입니다. 그래도 좋은 기능이 나와서 포스팅합니다.해당 기능은 MDN에 포스팅 되어 있지만, 크롬에서만 선두적으로 개발해둔 실험적 기능이라 다른 브라우저에서는 지원하지 않습니다.그래도 크롬 기반에서는 쉽게 번역 기능을 구현할 수 있겠네요. https://developer.mozilla.org/en-US/docs/Web/API/Translator Translator - Web APIs | MDNThe Translator interface of the Translator and Language Detector APIs contains all the associated translation functionality, including checking AI model a..
Google Apps Script에 ChatGPT 연동하기
·
개발 아카이브/Javascript
구글 앱 스크립트 (Google Apps Script)구글 앱 스크립트는 JavaScript 기반의 클라우드 스크립팅 언어로, 구글 워크스페이스 제품군(Google Sheets, Docs, Forms 등)을 자동화할 수 있는 도구입니다. 이를 통해 사용자는 다양한 작업을 자동화하고, 반복적인 작업을 쉽게 처리할 수 있습니다. 구글 앱 스크립트로 스프레드시트 자동화구글 스프레드시트에서 반복적인 데이터 입력이나 복잡한 데이터 처리 작업은 시간이 많이 소요될 수 있습니다. 구글 앱 스크립트를 사용하면 이러한 작업을 자동화하여 생산성을 높일 수 있습니다.예를 들어, 데이터를 자동으로 정리하거나 특정 조건에 따라 데이터를 필터링하는 스크립트를 작성할 수 있습니다. 구글 스프레드시트 자동화에 ChatGPT를 사용하..
[Sveltekit] 버튼 hover시 +page.server.js 실행을 막는 법
·
개발 아카이브/Javascript
Sveltekit에서 버튼이나 a tag에 라우터 url이 걸려 있으면,그 버튼을 hover만 해도, 라우터에 걸린 +page.server.js 가 실행됩니다.위의 코드를 보면 href에 user 라우터가 걸려있습니다.user 라우터에는 +page.server.js 가 있습니다.위에서 말한대로 버튼을 hover만 해도, +page.server.js 가 실행됩니다. SvelteKit에서 버튼을 호버했을 때 그 버튼을 클릭하면,가는 페이지의 +page.server.js의 load 함수가 실행되는 것은의도된 동작입니다.  왜 그럴까요?SvelteKit이 페이지 전환을 미리 준비하기 위해 preload를 수행합니다.preload은 사용자가 링크나 버튼을 호버했을 때, 해당 링크가 가리키는 페이지를 미리 로드하여..
JavaScript에서 export { }와 export default의 차이점
·
개발 아카이브/Javascript
>> 그래서 적어본 export와 export default의 차이점!      출처: https://www.google.com/url?sa=i&url=https%3A%2F%2Fbootcamp.uxdesign.cc%2Fnamed-export-vs-default-export-in-es6-a2370b062f17&psig=AOvVaw3526ddTwrULsBlVYSnaxql&ust=1715784990773000&source=images&cd=vfe&opi=89978449&ved=0CBQQjhxqFwoTCKiR16azjYYDFQAAAAAdAAAAABAE JavaScript 모듈 시스템은 코드를 구성하고 재사용하기 위한 방법을 제공하고 있습니다.그 중 export는 2가지 방법이 있습니다. Named Export ..
Svelte와 vite로 CSR 개발 환경 세팅
·
개발 아카이브/Javascript
Svelte는 웹 애플리케이션 개발 프레임워크입니다. 직관적이고 쉬운 문법을 가지고 있는 Svelte로 만든 SSR 기반 프레임워크가 SvelteKit 입니다. 최근에 Svelte에 관한 공식 문서를 보다가 한가지 이상함을 느낌적이 있습니다. Svelte 공식 문서를 보는데, 이상하게 설치는 SvelteKit을 알려주고 있습니다. 공식적으로 CSR(Client Side Rendering)인 Svelte보다 SSR(Server Side Rendering)을 사용하라는 말인것 같네요. 그런데 저는 최근에 오직 CSR을 위해 Svelte를 사용하고 싶었습니다. 그것은 크롬 익스텐션 때문입니다. 크롬 익스텐션은 SSR은 당연히 사용할리 없고.. CSR만 쓰고 싶은데 왜 설치 방법은 따로 없는거지..? . . ...
REPL(Read Eval Print Loop) 이란?
·
개발 아카이브/Javascript
REPL은 "Read Eval Print Loop"의 약자로, 인터프리터 기반의 프로그래밍 언어에서 사용되는 대화식 환경을 제공하는 도구입니다. REPL은 사용자가 코드를 입력하면 해당 코드를 읽어들이고(Read), 평가하여 실행합니다(Eval), 그리고 실행 결과를 출력합니다(Print). 이후 다시 새로운 코드를 입력할 수 있도록 반복적으로 동작합니다(Loop). REPL의 동작 REPL은 다음과 같이 동작합니다: 1. Read (읽기): 사용자가 입력한 JavaScript 코드를 읽습니다. 2. Eval (평가): 읽은 코드를 평가하고 실행합니다. 3. Print (출력): 코드의 결과 값을 출력합니다. 4. Loop (반복): 이후 사용자가 더 많은 코드를 입력할 수 있도록 반복합니다. REPL은..