전체 글 (181) 썸네일형 리스트형 [Javascript] - Object Object (객체) - 자바스크립트는 null 과 undefined 를 제와한 모든 것을 객체로 취급합니다. - 객체는 자바스크립트의 기본 데이터 구조입니다. 객체는 속성을 갖고 있으며, 각 속성에는 이름과 값이 있습니다. 이름은 문자열이고 값은 어떤 자료형이든 될 수 있습니다. - 객체 리터럴을 사용해 새로운 객체를 만들 수 있습니다. - 객체 리터럴의 범위는 중괄호 ({}) 로 결정됩니다. 괄호 안쪽에 0개 이상의 속성을 콤마로 구분하여 나열 가능합니다. let bar = 'abcd'; let test_object = { "0/0": 0, foo: bar, bar, test_method() { return 'test'; } }; console.info(test_object.foo === test_o.. [Javascript] - Array Array (배열) - 배열은 연속적인 메모리로 구성되고, 같은 크기의 배열 요소로 나눠지며, 각 요소는 정수 색인과 연결되어 빠른 접근이 가능합니다. - 자바스크립트는 처음 배포 당시 배열을 포함시키지 못했습니다. 자바스크립트의 객체가 워낙 강력해서 배열이 빠졌다는 사실을 늦게 깨달았으며, 성능 문제만 무시한다면 객체는 배열이 할 수 있는 모든 것을 할 수 있습니다. - 자바스크립트의 배열은 진짜 객체이나 다음의 측면에서 객체와 살짝 다릅니다. 배열은 length 속성을 갖고 있습니다. 배열의 length 는 배열이 담고 있는 요소의 개수가 아닌, 가장 큰 색인보다 1 큰 값을 나타냅니다. 예를 들어 배열에 요소가 네 개 있고 마지막 요소의 색인이 10 이라면 length 는 11 입니다. 배열은 Ob.. [Javascript] - Boolean Boolean Type (불 타입) - 불 타입은 true, false 만 가질 수 있다. - true, false 에 대해 typeof 연산자는 "boolean" 을 반환합니다. 관계 연산자 === 같음 !== 같지 않음 = 보다 크거나 같음 - 관계 연산자에서 몇가지 특이 케이스 undefined null // false undefined === null // false NaN === NaN // false NaN !== NaN // true "11" < "2" // true "2" < 5 // true 5 < "11" // true - 값이 NaN 인지를 확인하려면 반드시 Number.isNaN(x) 을 사용해야 한다. - 반복문의 종료 조건으로 =.. [Javascript] - Big Integer Big Integer (큰 정수) - 자바스크립트에는 64비트 정수가 없다 int64 형은 최대 9223372036854775807 까지의 정수를 담을 수 있는데, 자바스크립트의 Number.MAX_SAFE_INTEGER 범위보다 세자리나 큼 자바스크립트의 숫자형은 한개라 새로운 숫자형을 추가하는데에도 문제가 있음 -> 단순성을 잃게되고, 잠재적으로 다른 버그를 초래할 가능성이 커짐 만약 64비트 정수형을 추가하더라도 이후 72비트, 96비트, 128비트 등등을 대응할 필요는 없을까? 라는 논쟁이 이어질 수 있습니다. - 큰 정수를 언어에 추가하는 대신 라이브러리화 하는 것이 적절해 보이며 해당 부분을 이번 내용에서 보도록 하겠습니다. 큰 정수는 배열 형태로 저장할 것입니다. (크기가 자유롭기에) 배열의.. [Javascript] - Number Number (숫자) - 자바스크립트의 수는 실수(real-number) 에서 영감을 받았지만 진짜 실수(real-number) 는 아닙니다. - 자바스크립트는 number 라고 하는 하나의 숫자형을 갖고 있습니다. 따라서 오는 이점은 숫자 타입간의 고민을 하지 않아도 되서 개발자의 생산성 증가 타입 변환으로 인한 오류 없음 int 형을 사용해서 발생하는 오버플로 문제도 일어나지 않음 (아래 자바와 비교) Javascript : 2147483647 + 1 // 2147483648 정확하게 맞음 Java : 2147483647 + 1 // -2147483648 완전히 잘못됨 - 인텔의 iAPX-432 프로세서를 위해 처음 개발된 IEEE 부동소수점 연산 표준(IEEE 754) 을 차용했습니다. 부동소수점 .. [Javascript] - Name Name (이름) - 변수나 속성, 함수에 부여하는 것 - 자바스크립트는 변수 이름의 길이에 제한을 두지 않음 const fruit = 'apple'; // fruit 라는 이름의 변수를 선언 const newyork_queens_hillcrest_right_bottom_side_university_name = 'St Johns'; // 억지로 만들었지만 이것보다 긴 이름도 상관없음 - 이름만 보고 무엇을 하는 것인지 짐작이 가능해야함 (코드를 읽기만 해도 프로그램을 설명할 수 있어야 합니다.) // bad const f = ['apple', 'banana', 'peach']; // good const fruits = ['apple', 'banana', 'peach']; // 변수명만으로 어떤 값을 가지.. Go 언어 - [8장] (실무 패턴) ※ 디스커버리 Go 언어 라는 책 내용을 전반적으로 다루지만 책 리뷰보다는 좀 더 간단하게 정리해보겠습니다. 8. 실무 패턴 이번 장에서는 실무에서 맞닥뜨리는 설계 문제들을 어떻게 풀 수 있는지 보도록 하겠습니다. 예를 들면, Go 언어에서는 제네릭 프로그래밍을 지원하지 않는데, 이를 어떻게 흉내낼 수 있는지 아는 것보다 제네릭으로 어떤 문제를 풀고 싶은지가 더 중요합니다. 이렇게 생각하면 굳이 제네릭을 이용하지 않아도 되는 경우가 많습니다. 8.1 오버로딩 오버로딩은 같은 이름의 함수 및 메서드를 여러 개 둘 수 있는 기능인데, Go 언어에서는 지원되지 않습니다. 어떤 경우에 오버로딩이 필요한지 생각해보겠습니다. - 자료형에 따라 다른 이름 붙이기 : 오버로딩을 반드시 하지 않아도 되는 경우가 많으며,.. Go 언어 - [7장 - (2)] (동시성) ※ 이전 내용에 이어서 7장의 나머지 부분을 정리해보겠습니다. 7.3.6 파이프라인 중단하기 파이프라인을 구성할 때, 받기만 할 뿐 그만 보내달라고 요청할 수 없었습니다. 채널에서 받다가 끝까지 받지 않고 break 등으로 빠져나온다면, 보내는 쪽에서 채널이 막히게 되고 이 고루틴은 종료되지 않고 계속 막혀있게 됩니다. 채널이 닫힐 때까지 자료를 모두 빼주어야 종료되면서 고루틴이 소멸됩니다. 모두 자료를 소진시키지 않으면 해제되지 않은 고루틴들이 메모리에 남아 누수를 일으킵니다. 모든 자료를 소진시킨다해도 그만큼 계속 데이터를 받아오면 더 많은 네트워크 트래픽과 배터리 소모가 발생할 것입니다. 채널을 억지로 닫아버린다면 패닉이 발생하기에 보내는 쪽에서만 닫는것으로 패턴을 정형화해야 합니다. 유용한 패턴 .. 이전 1 ··· 15 16 17 18 19 20 21 ··· 23 다음