전체 글

전체 글

    leetcode 코딩테스트 연습 - 2624. Snail Traversal (JavaScript)

    이번 문제는 Array의 prototype에 고차 함수를 직접 구현하는 문제였다. this가 호출한 배열을 가르킨다는 것을 이번 문제를 해결하면서 처음 알게되어 의미가 깊다. /** * @param {number} rowsCount * @param {number} colsCount * @return {Array} */ Array.prototype.snail = function(rowsCount, colsCount) { if(rowsCount * colsCount !== this.length) { return []; } const result = []; for(let i = 0; i < rowsCount; i++) { result.push([]); } let row = 0; let isAscending =..

    MSA(Microservices Architecture) 개발 방법론 알아보기

    MSA(Microservices Architecture)는 소프트웨어를 개발하는 방법론 중 하나로, 애플리케이션을 작은 독립적인 기능 단위인 마이크로서비스로 분해하는 아키텍처 스타일이다. 확장 가능한 서비스를 개발하고, 더 빠른 배포와 리소스 관리를 위해서 사용되는 MSA에 대해서 알아보고 기록을 남겨보고자 하였다. 🍅 MSA를 통해서 애플리케이션을 작은 조각으로 분할하여 개별적으로 개발, 배포, 확장할 수 있다. MSA의 핵심 아이디어는 각 마이크로서비스가 하나의 특정 기능을 수행하도록 설계되며, 이들은 서로 독립적으로 실행될 수 있다. 마이크로서비스는 작은 규모의 독립적인 서비스로 구성되며, 별도의 데이터베이스, 통신 메커니즘, 프로세스 등을 가지고 있을 수 있다. 각 마이크로서비스는 표준화된 API..

    TCP/IP Suite에 대해서 알아보자

    ✦ TCP/IP 프로토콜 스위트는 인터넷에서 컴퓨터들이 데이터 통신을 위해 사용되는 프로토콜(통신규약)의 모음이다. 원래는 인터넷 프로토콜 스택이라고도 불리는데, 가장 많이 사용되는 TCP와 IP를 중심으로 다양한 프로토콜들이 구성되어 TCP/IP 프로토콜 스위트라고 부르기도 한다. TCP (Transmission Control Protocol) TCP는 신뢰성있는 연결 지향적인 프로토콜이다. 데이터를 안정적으로 전송하기 위해 사용된다. 데이터는 순서대로 loss없이 전달된다. TCP는 데이터를 패킷으로 분할하고, 수신 측에서는 패킷을 재조립하여 원래의 데이터로 복원한다. TCP는 패킷 손실, 중복, 순서 변경 등과 같은 문제를 처리하여 신뢰성 있는 통신을 제공할 수 있게 해준다. TCP와 UDP의 ..

    react-native-bootsplash을 사용하여 splash screen 구현하기

    이번에는 react-native-bootsplash을 사용하며 겪은 약간의 시행착오를 기록하고자 한다. 일단, react-native-bootsplash는 현재 가장 안정적으로 관리되고 있는 React Native의 Splash Screen 라이브러리이다. react native directory 검색 결과, 4개의 splash screen 라이브러리를 확인할 수 있는데 하나는 expo 라이브러리이고 나머지 세 라이브러리 중 두 라이브러리는 관리가 안된지 각각 2년, 6년이 지나가고 있다. 유일하게 최근까지 관리되고 있는 라이브러리가 React-Native-Bootsplash이다. 또한, ignite를 통해 생성한 프로젝트에 설정된 splash 스크린 라이브러리이기도 하기에 현재 기준으로 가장 믿을만한 ..

    localStorage와 sessionStorage 알아보기

    브라우저에 데이터를 저장하는 방법으로 localStorage와 sessionStorage 두 방법이 있다. 두 저장소의 차이점으로는, 둘 다 새로고침을 해도 브라우저에 데이터가 남는다. 다만, 창을 닫으면 session storage는 데이터가 사라지는 반면 local storage는 창을 닫아도 브라우저에 여전히 데이터가 남아있는 특징이 있다. localStorage는 브라우저 전체에서 공유되는 반면, sessionStorage는 같은 브러우저 탭 내부에서만 데이터가 공유된다. 기본적인 사용법은 두 스토리지 모두 같다. sessionStorage.setItem("key1", 123); const value = sessionStorage.getItem("key1"); console.log(value); ..

    Nginx를 사용하면 어떤 장점이 있을까? (express.js & React.js)

    서버에서 nginx를 사용하여 얻는 이점 (ex. express.js) 🍒 정적 파일 제공 엔진엑스는 정적 파일을 처리하는 데 특화되어 있다. Express에서 정적 파일(이미지, CSS, JavaScript 파일 등)을 처리하기 위해 별도의 미들웨어를 설정하고 관리해야하지만, 엔진엑스는 정적 파일을 효율적으로 처리할 수 있어 웹 애플리케이션의 성능을 향상시킬 수 있다. 🍒 로드 밸런싱 엔진엑스는 로드 밸런싱을 지원하여 여러 대의 백엔드 서버로 들어오는 요청을 분산시킬 수 있다. 이를 통해 트래픽을 분산하고 애플리케이션의 가용성과 성능을 향상시킬 수 있다. 🍒 Reverse Proxy 엔진엑스는 리버스 프록시로 사용할 수 있어 클라이언트 요청을 받아 애플리케이션 서버로 전달하고, 서버 응답을 클라이언트에..

    leetcode 코딩테스트 연습 - 1844. Replace All Digits with Characters (JavaScript)

    지금까지 프로그래머스를 이용하여 코딩테스트 문제를 풀어왔는데, 이번에는 leetcode를 이용하기로 하였다. 영어로 되어 있어 영어 공부를 할수도 있고, 문제가 다양하며 제출한 정답의 런타임이나 메모리 사용량도 알려주는 장점이 있는 플랫폼이다. 이번에 풀어본 문제는 간단한 문제로 아스키 코드를 이용한 문제였다. 자바스크립트에서 아스키 코드의 사용은 다소 생소하였기에 (C언어에서는 문자열이 숫자처럼 계산되었던 기억이 있다) 검색을 통해서 String.fromCharCode()나 char.charCodeAt() 과 같은 메서드를 알아내었다. /** * @param {string} s * @return {string} */ var replaceDigits = function(s) { let answer = "..

    비트코인 지갑 주소에 대해서 (p2pkh, p2sh, p2wpkh, p2wsh)

    비트코인 지갑의 주소에는 여러 종류가 있다. 과거 javascript로 지갑을 생성하면서 지갑의 주소를 생성하기 위해서 다양한 메서드들을 사용할 수 있었다. bitcoin testnet faucet을 사용하면서 알게된 점인데, 이 지갑 주소들은 각각 조금씩 다른 특성을 가지고 있고 일부 서비스들은 특정 유형의 지갑 주소만 사용할 수 있었다. 무작정 사용하기보다는 여기서 한 번 지갑 주소들에 대해서 정리하는 것이 좋다고 생각했기에 p2pkh, p2sh, p2wpkh 등 다양한 비트코인 지갑 주소에 대해서 알아보고 기록하기로 하였다. 비트코인의 지갑 주소들은 네트워크(메인넷, 테스트넷) 식별을 위해서 네트워크 버전과 관련된 정보를 지닌다. 또한, 주소의 유효성을 검사하기 위해서 체크섬을 지닌다. 지갑 주소..