분류 전체보기 40

[CS] 내부단편화와 내부단편화

내부 단편화란? 간단히 정리하면 실제로 물리적 공간이 없어서 작업을 할당하지 못하는 경우이다 총 200MB의 공간에 하나의 클러스터 크기가 50MB일때 50MB 짜리 작업 A, B, C가 할당되어 있고 새롭게 30MB의 작업 D를 할당한 경우 남은 공간이 20MB가 있지만 클러스터의 크기가 50MB라서 새 작업을 할장하지 못하는 경우가 발생한다 이 경우 20MB만큼의 내부 단편화가 발생했다고 할수 있다. => 하나의 클러스터 크기가 작다면 내부 단편화의 발생 가능성을 줄일수 있다. 외부 단편화란? 물리적 공간은 충분하지만 필요한 공간이 연속적으로 할당되어있지 못하는 경우이다 총 250MB의 공간에 하나이 클러스터 크기가 50MB일때 A(50MB), B(50MB), 빈공간(50MB),C(50MB), 빈공간..

ComputerScience 2021.05.15

[JavaScript] Throttle

이 개념도 책(Do it 리액트 프로그래밍 정석)에서 본 내용인데 Throttle이란 개념은 Debounce(include-note.tistory.com/entry/JavaScript-Debounce)와 유사하지만 입력되는 동안 이전에 요청했던 작업들이 주기적으로 실행된다는 점이 다르다. Throttle의 경우 명령이 동작하고 있는 도중에 새 명령이 들어오는 경우 새 명령을 무시하도록 구현하면 된다. 이 개념이 주로 사용되는 App은 Facebook이다. Facebook의 경우 아래로 스크롤될 때 스크롤되는 동안 새로운 페이지가 계속해서 로드되는 것을 볼 수 있다. 만약 Throttle이 아닌 Debounce라는 개념이 적용되었다면 스크롤이 멈추기 전까지는 새로운 페이지가 로드되지 않는 문제가 발생할 수..

[JavaScript] Debounce

책(Do it 리액트 프로그래밍 정석)에서 보기 전에는 이런 개념이 있다는 것도 모르고 살았었는데... Debounce란 어떤 내용을 입력하다가 특정 시간동안 대기하고 있으면 마지막에 입력된 내용을 바탕으로 서버에 요청하는 방법이라고 하는데... 이 개념은 굳이 대상이 서버가 아니더라도 활용이 가능할 거 같다. 예를 들어, App에서 Data검색 쿼리를 날리는 경우에도 같은 방식을 적용할수 있을 거 같다. 검색 쿼리에 Debounce 개념이 적용되면 대용량의 DB를 실시간으로 검색하는 구조를 가진 앱의 경우 쿼리가 앱에 주는 부하를 축소시킬 수 있다는 생각이 든다. 아무튼 책에 나온 예시는 JavaScript이니 JavaScript형식의 코드를 공유하자면 아래와 같다. 조금만 변형하면 다른 환경에서도 적..

[JavaScript] Promise

JavaScript로 비동기 프로그래밍을 할 때 JavaScript가 함수형 언어이기 때문에 발생하는 현상인 콜백 지옥이란 게 있다.. work1 함수 끝나고 work2 함수가 불렸으면 좋겠고 work2 함수가 끝나고 나면 work3을 불렀으면 좋겠고.. 이런 요구사항이 발생할때 function work1(onDone) { setTimeout(() => onDone("work 1 done"), 100); } function work2(onDone) { setTimeout(() => onDone("work 2 done"), 200); } function work3(onDone) { setTimeout(() => onDone("work 3 done"), 300); } work1(function (msg1) ..

[Algorithm] Karatsuba Algorithm

Karatsuba 알고리즘.. 간단히 소개하자면 큰수에 대한 효율적인 곱셈 알고리즘 N자리 K진수 A, B가 주어졌을 때, 두 수의 곱을 연산하는데 쓰이는 알고리즘. long long 자료형의 범위(-9223372036854775808 - 9223372036854775807) 즉 최소 N이 20넘어가는 순간부터는 이런 특이한 알고리즘을 사용하지 않으면 계산이 안될것 같다.. 이 알고리즘의 특이한 점은 수를 하나의 정수 자료형에 두고 사용하는게 아니라 배열에 넣어놓고 연산해서 연산 도중 B값을 넘거나, 0보다 작아지는 경우에 대해 직접적으로 처리를 해주어야 한다는 점인거 같다. 이 알고리즘을 사용하지 않고 단순히 수학적으로 계산을 하게 된다면 위와 같은 방식으로 계산이 될것이고 이경우 코드는 아래와 같이 ..

[React] 1. 환경 설정

Do it! 리액트 프로그래밍 정석에 나온 내용을 기반으로 환경설정 도중 발생한 오류 수정기.. NVM(Node Version Manager)로 NodeJs설치 1. NVM(Node VersionManager) 설치 설치 링크: github.com/coreybutler/nvm-windows/releases Releases · coreybutler/nvm-windows A node.js version management utility for Windows. Ironically written in Go. - coreybutler/nvm-windows github.com 설치된 버전 확인 명령: nvm -v 이때 발생할 수 있는 에러는 아래와 같음 설치 경로에 한국어가 들어가 있으면 nvm 명령이 제대로 먹지..

WebPack

WebPack은 프로젝트에 사용된 파일을 분석하여 기존 웹문서 파일로 변환하는 도구임 사용하는 이유 -> Framework가 .js, .css, .jpg같은 기존 웹 문서파일을 사용하지 않기때문 예를 들어 트위터 부트스트랩은 .css가 아닌 .sass로 문서 작성 웹 브라우저는 .sass를 읽지 못하기때문에 해석이 필요함 이 외에도 .hbs, .cjs 같은 형식이 있음 이런 파일들을 분석하여 js, css, png, jpg같은 웹브라우저가 읽을수 있는 형태로 변환시킴 또한, 변환된 파일을 적절한 크기로 자르거나 묶어주는 역할도 함 -> 불필요 파일을 제거하여 프로젝트의 용량을 줄여줌 그리고 간단한 노드기반의 서버를 구동하기도 함

NPM(Node Package Manager)

NodeJs 프로젝트에 사용되는 라이브러리(자바스크립트 라이브러리)를 관리하는데 사용됨 NPM은 node_modules 폴더에 라이브러리를 다운받아 관리하며 package.json이라는 파일에 설치된 라이브러리의 정보를 적어 저장시킴 실제 라이브러리(node_modules)와 라이브러리 명세(package.json)파일을 분리하여 관리함 그 이유는, node_mnodules에 저장되는 라이브러리의 용량때문,.(GB 단위를 뛰어넘을때가 있음) 분리해서 관리하지 않고 프로젝트 내에 모든 라이브러리를 함께 관리하는경우, 프로젝트 단위의 공유시 공유해야 하는 데이터의 크기가 너무 커지기 때문,.. 따라서 A가 B에게 프로젝트 공유시 package.json과 핵심 코드만 공유하면 B는 package.json의 명..

[Programmers] 완주하지 못한 선수

간만에 문제풀이를 위해 들어갔는데.. 바보가 된 느낌이다 전에는 이렇게 안풀었겠지만 오랜만에 c++을 만지면서 STL사용이 너무 어색해져서 답을 알면서 구현을 못하는 말도 안되는 상황까지 온듯하다... 반성하자.. 너무나도 간단한 주제,, 두 string 리스트를 비교해서 중복되지 않는 하나의 string을 뽑아내는 문제였다. 처음에 생각났던 풀이는 HashMap이라는 주제에 맞춰서 Map을 구성해서 비교한 풀이였고 나중에 생각났던 풀이는 좀더 짧고 간단한 풀이였는데 뒤에있는풀이가 좀더 재밌는 풀이인것 같다. 우선 HashMap이라는 주제에 고정시킨 풀이부터 설명해보자면 1. 입력된 string값들을 hashing해서 hashValue, string을 한쌍으로 해서 Map에 집어넣는것을 두 string ..

ComputerScience/PS 2020.07.25

[Android] SVG파일 안드로이드에 집어넣기

이전에 안드로이드 개발을 할떄는 기기의 해상도에 맞추어서 리소스들을 다 지정해 주어야 했었는데 API Level 21 이상부터는 SVG파일을 이미지로 사용할수 있게 되어서 해상도에 상관없이 하나의 파일만으로 모든 해상도를 커버할수 있게 되었다. .svg로 제공되는 파일을 안드로이드에 넣는 방법은 아래와 같다. res 우클릭 -> [New] -> [Vector Asset] -> .svg 파일 선택 -> [Next] -> [Finish] 이 다음은 이전에 png 혹은 bmp를 통해 resource 사용하던것처럼 같은 형식으로 리소스를 사용하면 됩니다.