분류 전체보기

    모던 자바스크립트, 4가지 동등성 비교 알고리즘

    동등성 비교 ES5 이전 JS 에서는 보통 동등성 비교에 2개의 부호만 사용했다. == 와 === 이다. ES6 에서 Object.is() 가 나왔다. 이 메서드는 자바스크립트 언어 스펙을 정하는 위원회의 앞으로의 방향을 나타내기 때문에 중요하다. 동등성 알고리즘 정리 그렇다면 동등성 알고리즘은 어떤 것들이 존재할까? IsLooselyEqual: == IsStrictlyEqual: === SameValue: Object.is(), Object.prototype.defineProperty() 에서의 빌트인 동등성 비교 연산 SameValueZero: Array.prototype.includes() 혹은 Map 에서의 빌트인 동등성 비교 연산 프리미티브에 대한 처리 때문에 이렇게 나뉘게 되었다. == 의 특..

    rel=nofollow 란? (SEO 에 미치는 영향)

    rel=nofollow 의 효과 보통 a 태그에 이렇게 붙인다. 검색엔진 크롤러가 해당 웹사이트에 방문하지 않게 만든다. 해당 페이지에 대한 링크 지분이나 페이지 랭크에 영향을 주지 않도록 한다. 그러나 모든 링크에 rel=nofollow 를 붙이는 건 좋은 전략이 아니다. 모든 링크에 rel=nofollow 를 붙인다면? 내부 링크에 대한 크롤링과 인덱싱이 제대로 되지 않는다. 검색엔진이 웹사이트 내부 구조에 대해 이해하기 어려워진다. 검색엔진에 웹사이트의 페이지랭크 혹은 링크 프로필을 조작하려는 신호로 보일 수도 있다. 이로 인해 웹사이트의 SEO 에 패널티가 가거나 부정적인 결과를 초래할 수도 있다. 외부 링크에 대해 어떠한 지분도 주지 않기 때문에 그들이 받아야 할 마땅한 이익을 보지 못하게 할 ..

    web.xml 에서 사용하는 absolute-ordering 이란?

    absolute-ordering 이란? Servlet 3.0 명세에서 도입된 기능이다. 어떤 web fragments 가 먼저 처리되어야 하는지 개발자가 직접 정의할 수 있는 기능이다. web fragments 란, 메인 웹 애플리케이션과 독립적으로 패키징하고 배포할 수 있는 웹 앱의 모듈적 단위이다. WEB-INF 내부 lib 디렉토리에 있는 JAR 파일들이 web fragments 의 예이다. 순전히 optional 한 엘리먼트이며, 존재하지 않는 경우 기본 값으로 처리된다. 기본값은 발견된 순서이다. 어떻게 동작하는가? 웹 앱이 배포되면, 웹 컨테이너는 web.xml 을 읽고 모든 web fragments 를 모아 하나의 통합된 웹 앱으로 만든다. 기본 값은 웹 컨테이너에 의해서 발견된 web fr..

    web.xml 파일이란? 그리고 web.xml 파일의 역할

    web.xml 파일이란? 자바 웹 애플리케이션을 위한 배포 디스크립터 (deployment descriptor) 이다. WEB-INF 디렉토리 내부에 위치한다. 배포 디스크립터란 구성 정보 파일을 말한다. 애플리케이션에 의해 사용되어 배포 도구 혹은 런타임에 정보를 제공한다. 애플리케이션의 servlets, filters 그리고 그 외 컴포넌트들을 구성하는 것을 도와준다. 정리하자면, 웹 컨테이너(Tomcat)에 구성 정보 (configuration information)를 제공해준다. web.xml 을 통해 제공할 수 있는 구성 정보들 자바 웹 애플리케이션에 대표적으로 아래와 같은 구성정보를 제공해줄 수 있다. 서블릿 매핑 보안 제약 에러 페이지 초기화 파라미터 필터 세션 구성 마임 타입 매핑 서블릿 ..

    자바 서블릿(Servlet) 이란?

    서블릿이란? 서블릿은 자바 웹 서버의 기능을 확장한다. 자바 웹 앱에서 클라이언트 요청을 다루기 위해 사용되는 자바 클래스이다. 서블릿은 동적 웹페이지 생성, 유저의 입력 처리, DB 혹은 다른 백엔드 서비스와의 커뮤니케이션 등에 사용된다. 왜 서블릿이란 이름을 가지게 되었는가? "server" 와 "applet" 이라는 이름이 합쳐졌다. "server" 는 클라이언트의 요청에 응답하는 프로그램을 말한다. "applet" 은 커다란 프로그램 안에서 세부적인 작업을 하는 작은 프로그램을 말한다. 서블릿은 어떻게 생성되는가? Java Servlet API 를 통해 구현된다. 공식문서 를 확인하여 어떠한 API 가 존재하는지 확인할 수 있다. 제공하는 인터페이스와 클래스들을 이용해 서블릿의 동작을 정의할 수 ..

    WEB-INF 디렉토리란?

    WEB-INF 디렉토리란 무엇인가? 자바 웹 애플리케이션에서 특수한 역할을 담당하는 디렉토리이다. 보통 웹 애플리케이션 루트 디렉토리에 위치한다. 애플리케이션 내부적으로 쓰는 파일이 존재하는 디렉토리로 클라이언트 접근이 불가능해야 한다. 몇개의 서브 디렉토리와 파일을 갖는다. WEB-INF/classes: 컴파일된 자바 클래스 파일들을 보관. WEB-INF/lib: 서드파티 라이브러리들을 보관. WEB-INF/web.xml: 구성정보 파일이다. 절대 클라이언트가 접근 가능한 위치에 두면 안된다. 서블릿, JSP 페이지와 같은 웹 애플리케이션 컴포넌트만 접근이 가능해야 한다.

    모던 자바스크립트, Reflect (리플렉트) 객체란?

    리플렉트 (Reflect) 란? 자바스크립트의 built-in object 이다. 일반적으로 프록시 객체의 핸들러에서 기본 동작을 제공하기 위해서 사용된다. Object 가 가지는 메서드들을 비슷하게 가진다. defineProperty() getOwnPropertyDescriptor() getPrototypeOf() setPrototypeOf() preventExtensions() 생성자로 생성할 수 없는 객체이다. (it's not constructible) Reflect.xxx() 와 같은 정적 메서드를 이용하기 위한 객체이다. new Reflect() 는 아무런 의미가 없다. 가로챌 수 있는 (interceptable) 자바스크립트 연산에 대한 메서드를 제공한다. interceptable 의..

    모던 자바스크립트, TypedArray (타입이 있는 배열)

    자바스크립트 기본 배열의 문제점 자바스크립트의 배열은 컴퓨터 과학에서 정의하는 일반적 배열이 아니다. 자바스크립트의 배열은 특수처리가 된 객체이다. 배열 인덱스, length, Array.prototype 에서 상속한 메서드들을 가진 객체이다. 타입이 있는 배열 (TypedArray) ES2015 에 생겨났다. 파일 읽기/쓰기, 그래픽 작업, 수학 API 등에 쓰인다. TypedArray 와 기존 배열과의 차이 값이 항상 프리미티브 숫자 값이다. 8비트 정수 혹은 32비트 부동 소수점 등이다. 배열 내부의 모든 원소는 동일한 타입이다. 배열을 한번 만들면 길이를 변경할 수 없다. 지정된 바이너리 양식으로 연속 메모리 버퍼에 저장된다. 중간에 공백이 있을 수 없다. 성긴 배열 (sparse array) 이..

    빅 엔디언 (big endian) 과 리틀 엔디언 (little endian) 이란?

    빅 엔디언과 리틀 엔디언이란? 바이트를 어떻게 읽을 것인지에 대한 방식을 말하는 것이다. CPU 벤더사마다 쓰는 방식이 다르다. Intel 과 AMD 같은 대형 벤더사가 리틀 엔디언을 써서 이게 주류다. 예제 값 읽어보기 빅 엔디언 25 C7 39 21 01 02 5F 9B A1 03 33 FA B6 62 97 5D 빅 엔디언에서는 0x0102 를 표현할 때 01 02 로 그대로 순서대로 표현한다. 리틀 엔디언 C7 25 21 39 02 01 9B 5F 03 A1 FA 33 62 B6 5D 97 리틀 엔디언에서는 0x0102 를 표현할 때 02 01 로 반대 순서대로 표현한다.

    스프링 부트 (Spring Boot) 란?

    스프링 부트 소개: 스프링 부트 (Spring Boot) 란? 스프링 기반 앱을 독립실행형(standalone)으로 빠르게 개발할 수 있도록 도와주는 미리 구성된(pre-configured) 환경이다. 스프링 프레임워크의 대체재로 오해하면 안 된다. 스프링 부트가 탄생하게 된 이유 스프링 프레임워크의 버전이 계속 업데이트되며 환경을 구성하는 일이 점점 어려워졌기 때문이다. 프레임워크가 발전하며 여러가지 문제들을 마주하게 되었고 마주한 문제들을 해결하려 모듈을 추가하다보니 프로젝트를 잘 구성하는 것조차 어려운 일이 되어버렸다. 너무 많은 선택지가 생겨버렸다. 많은 선택지는 문제에 대한 다양한 해결 방법을 제공했지만, 한편으로는 높은 진입장벽을 만드는 원인도 되었다. 이에 대한 해결책으로 몇몇 기업에서는 자..

    2의 보수란?

    보수 기초 개념 익히기: n 의 보수란? n 진수를 표현할 때 n 의 제곱이 되기 위해 더해주는 수 10 진수로 예제 들어보기 13 에 대한 10 의 보수는 87 이다. 가장 가까운 n 의 제곱이 100 이다. 133 에 대한 10 의 보수는 867 이다. 가장 가까운 n 의 제곱이 1000 이다. n-1 의 보수 구해보기 n-1 의 보수는 n 의 보수에서 1 을 빼면 된다. 즉, 133 의 9 의 보수는 866 이다. n-1 의 보수는 왜 구하는가? n-1 의 보수를 구하는 법은 알겠는데 왜 구하는지에 대한 감을 잡긴 어렵다. 8 진법에서 423(8) 의 8 의 보수를 구하려면 어떻게 해야 할까? 1000(8) = 423(8) + x(8) 여기서 x 를 구해야 한다. 여기서 우리는 자릿수의 변화와 또 ..

    IEEE 754 부동소수점이란?

    IEEE 754 부동소수점을 표현하는 표준이다. 부동소수점은 가수부(유효 숫자)와 지수부(소수점의 위치)를 나눠 소수를 표현하는 것이다. IEEE 는 전기전자공학자협회 (Institute of Electrical and Electronics Engineers, IEEE) 를 말한다. IEEE 754가 정의하는 것들 위키피디아 에 나와있으나 이것들을 몰라도 개발자가 적당히 IEEE 754 를 이해하는데는 큰 문제가 없다. 산술 형식 압축 인코딩 방식 반올림 규칙 작동 방식 예외처리 구조 총 3가지 부분으로 나뉜다. 부호 비트 1 비트 지수부 (Exponent bits, e 비트) 8 비트 가수부 (Fraction bits 혹은 Mantissa, f 비트) 23 비트 예제1: -118.625 표현해보기 총 ..

반응형