본문 바로가기

전체 글

(215)
em vs rem CSS에서 em과 rem의 차이를 명확히 알아봅시다. em과 rem은 상대 단위입니다. 상대단위란, 말 그대로 상대적인 단위를 의미합니다. 고정되지 않고 기준에 따라서 바뀔 수 있는 길이를 나타내는 단위를 말합니다. 반대로, 절대 단위란 일상생활에서의 1cm와 같이 정해지면 절대 변하지 않는 단위를 말합니다. 상대단위: em, rem, %, vw, vh 절대단위: px(1px = 0.02645833cm) 픽셀(px)은 웹디자인이나 프론트엔드 개발을 하다보면 자주 사용하는 단위입니다. 하지만 px를 사용하는 것은 웹의 접근성(Accessibility)를 저해시킵니다. 브라우저마다 기본 font-size가 존재합니다.(보통 16px) 브라우저에는 사용자별로 기본 font-size를 지정하는 기능이 있고, 사..
prototype의 명확한 이해 JavaScript는 명령형(imperative), 함수형(functional), 프로토타입 기반(prototype-based), 객체지향 프로그래밍(OOP)을 지원하는 멀티 패러다임 프로그래밍 언어이다. prototype-based는 어떤 의미일까? 클래스 기반언어에서는 상속을 사용한다. 상속은 객체지향 프로그래밍의 핵심 개념으로, 어떤 객체의 프로퍼티 또는 메서드를 다른 객체가 그대로 사용할 수 있는 것을 말한다. 하지만, 프로토타입 기반 언어에서는 어떤 객체를 '원형'으로 삼고 이를 복제함으로써 상속과 비슷한 효과를 얻는다. JavaScript는 프로토타입을 기반으로 상속을 구현하여 불필요한 중복을 제거한다. 중복을 제거하는 방법은 기존의 코드를 재사용하는 것이다. 아래 코드를 보자. functio..
RAID RAID (Redundant Array of Inexpensive/Independent Disk)란, 여러개의 저장장치를 묶어서 하나의 고용량/고성능 저장 장치처럼 사용하는 기술입니다. 영어를 직역해서 표현하면, '저렴한/독립된 디스크의 복수 배열'이라는 의미를 지닌다. RAID는 여러개의 디스크를 배열하여 속도와 안전성, 효율성, 가용성증대를 하는데 쓰이는 기술이다. 가장 중요한 컨셉은 여러개의 디스크를 하나로 묶어 하나의 논리적인 디스크로 작동하게 한다는 것이다. 이 특성상 문제가 있는 디스크만 교체하면 되고 그 동안 다른 저장공간에는 영향없이 저장장치를 운영할 수 있다. 저장공간을 추가할 때도 마찬가지이다. RAID를 구성하는 방법에는 하드웨어적인 방법과 소프트웨어적인 구성방법이 있다. RAID 하..
2022년 5월 회고 다사다난한 5월이었다. 이번 회고를 통해 나를 좀 더 객관화 해보려고 한다. 어떤 점은 좋았고 어떤 점은 부족했는지 적어봐야겠다. 5월 1일 ~ 5월 10일 Vanilla JavaScript와 코딩테스트 공부를 주로 했다. 프로그래머스에서 JavaScript로 SPA를 만드는 방법을 익히며 몇가지 과제를 풀어보고 연습했다. 5월 8일에 우아한 테크 캠프 코딩테스트가 있었기에 5월 초반부는 Vanilla JS에 집중을 했던 것 같다. 5월 8일에 시험을 봤고 결과는 탈락이었다. 탈락의 이유를 잠깐 생각해보고 지나가면, 나는 우선 4개중 3개는 맞았다고 생각했다. 그리고 4번째 문제를 풀다가 제출을 하였다. 탈락 소식을 듣고 나서 다른 사람들의 블로그를 많이 뒤져봤는데, '히든 케이스'를 맞추는 것이 중요하..
이것이 코딩 테스트다 | 9장 최단경로 (1/2) 최단 경로(Shortest Path)알고리즘은 말 그대로 가장 짧은 경로를 찾는 알고리즘이다. 그래서 '길 찾기'문제라고도 불린다. 컴퓨터 공학과 학부 수준에서 사용되는 최단 경로 알고리즘은 다익스트라, 플로이드 워셜, 벨만 포드 이렇게 3가지이다. 다익스트라 최단 경로 알고리즘 다익스트라는 그래프에서 여러개의 노드가 있을 때, 특정한 노드에서 출발하여 다른 노드로 가는 각각의 최단 경로를 구해주는 알고리즘이다. 다익스트라 알고리즘은 음의 간선이 없을 때 정상적으로 동작한다. 음의 간선이란 0보다 작은 값을 가지는 간선을 의미하는데, 현실 세계의 길(간선)은 음의 간선으로 표현되지 않으므로 다익스트라 알고리즘은 실제로 GPS 소프트웨어의 기본 알고리즘으로 채택되곤 한다. 다익스트라 알고리즘은 기본적으로 ..
함수와 일급 객체 다음과 같은 조건을 만족하는 객체를 일급 객체라고 한다. 무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성이 가능하다. 변수나 자료구조(객체 배열등)에 저장할 수 있다. 함수의 매개변수에 전달할 수 있다. 함수의 반환값으로 사용할 수 있다. 결국 JavaScript의 함수는 값으로 취급할 수 있으며, 무명의 리터럴로 생성할 수 있기 때문에 일급객체의 조건을 만족한다. // 런타임(할당 단계)에 함수 리터럴이 평가되어 함수 객체가 생성되고 변수에 할당된다. const increase = function(num) { return ++num; } const decrease = function (num) { return --num; } // 함수는 객체에 저장할 수 있다. const predicates = ..
[JavaScript] Nullish Coalescing Nullish coalescing operator(null 병합 연산자)에 대해서 알아보도록 하겠습니다. null 병합 연산자는 ?? 를 사용하여 피연산자 중 그 값이 '확정되어있는' 변수를 찾을 수 있습니다. 바로 예를 들어보겠습니다. a ?? b 의 경우 a가 null도 아니고 undefined도 아니면 a, 그 외의 경우는 b를 의미합니다. 이를 삼항 연산자로 표현하면 다음과 같습니다. let x = (a !== null && a !== undefined) ? a : b??와 ||의 차이 위 둘은 같은 것처럼 보입니다. 두 연산자의 차이점은 뭘까요? ||는 첫번째 truthy 값을 반환합니다. ??는 첫번째 정의된(defined) 값을 반환합니다. null, undefined, 숫자 ..
Agile Development Principle 안녕하세요. 이현진입니다. 저희 팀은 지금 기획 초기 단계에 있고, 프로젝트 진행 전체에 있어서 팀원 모두가 같은 생각을 공유하면 좋을 것 같아서 ‘애자일 방법론’에 대한 글을 작성하게 되었습니다. 소프트웨어 마에스트로라는 과정 자체가 6개월이라는 시간안에 완성된 결과물을 만들어야 하기에 체계가 중요하다고 생각합니다. 스타트업은 실행 속도에 회사의 존폐여부가 달려있다고 합니다. 즉 스타트업에게는 지금 뛰지 않는 것이 가장 큰 리스크입니다. 결국 ‘어떻게 뛸 것인가’에 대한 체계가 없다면 망할 수 밖에 없습니다. 반면 대기업은 어떨까요? 대기업은 리스크를 최대한 줄이고 명확한 책임 소재를 가지고 일을 진행하기 위한 체계를 가지고 있습니다. 이는 우리에게 맞지 않습니다.속도가 필요한 조직과, 리스크 관리가 ..