이번 글에서는 자바스크립트의 filter() 함수를 직접 만들어보겠습니다. 가벼운 내용이지만 자바스크립트가 가진 filter() 함수를 구현해본다면 이전보다 filter() 함수에 대해 잘 이해할 수 있을 뿐만 아니라 함수형 프로그래밍이 가진 멋진 장점을 알 수 있습니다. filter()를 사용하는 이유 filter() 함수는 의미 그대로 "거르다"를 하기 위해 정의된 함수입니다. 예를 들어 특정 사용자 데이터(이름, 나이)가 주어지고 그중에서 특정 조건을 만족하는 대상들을 찾는 경우에 filter()를 사용할 수 있습니다. 선언적인 프로그래밍 방식으로 이 문제를 해결한다면 for문 혹은 while문을 사용해서 다음과 같은 방식으로 코드를 작성할 수 있습니다. const users = [ { name: ..
객체지향 프로그래밍과 함수형 프로그래밍의 차이가 무엇이고 어떤 프로그래밍이 좋은 방법인 걸까요. 객체지향 프로그래밍이 좋다? 함수형이 좋다? 재미있게도 최근의 프로그래밍 언어들을 보면 함수형 프로그래밍은 객체지향 프로그래밍의 패러다임을 따라가고 객체지향 프로그래밍은 함수형 프로그래밍 패러다임을 따라갑니다. 프로그래밍 방식이 저마다의 장단점을 지니고 있기 때문에 이런 현상이 일어난다고 생각합니다. 결국 어떤 프로그래밍이 좋다고 단정 짓기는 어렵습니다. 객체지향 프로그래밍과 함수형 프로그래밍 사이에서 어떤 프로그래밍 방식이 좋다는 결론을 내리지 못해도 적어도 두 프로그래밍 방식 간의 차이는 알고 있는 게 좋습니다. 자바스크립트를 사용하면 손쉽게 객체지향이나 함수형 프로그래밍을 할 수 있습니다. 오늘은 간단한..
매개변수와 인수는 프로그래밍에서 자주 사용되는 용어입니다. 영어로는 Parameter(매개변수), Argument(인수)로 정의되고 쓰이는데요. 프로그래밍을 할 때 자주 쓰이는 용어인 만큼 명확하게 구분하고 인지하는 게 중요합니다. 오늘은 간단한 내용이지만 혼란을 야기하는 용어인 매개변수(Parameter)와 인수(Argument)에 대해 알아보겠습니다. 매개변수와 인수의 정의로 알아보는 차이점 매개변수와 인수의 차이점은 쓰임의 차이에 있습니다. 함수를 정의할 때 사용되는 변수를 매개변수, 실제로 함수가 호출될 때 넘기는 변수값을 인수라고 설명할 수 있습니다. 그럼 오랜만에 글보다는 그림을 통해 매개변수와 인수를 알아보도록 하겠습니다. Oracle 공식 홈페이지에서는 매개변수와 인수를 다음과 같이 정의한..
애플에서 2022년도 신학기 할인 이벤트가 시작되었습니다. 애플은 매년 신학기를 맞이해 교육 할인 프로모션 행사를 진행합니다. 애플의 교육 할인은 통해 구매하면 정가의 약 6%를 할인받아서 구매할 수 있는데요. 신학기 이벤트 기간에는 애플 케어 20% 할인과 더불어 에어팟 2세대를 증정품으로 제공됩니다. 혹시 교육 할인 대상이 되시는 분 중에 애플 제품 구매를 고려하시는 분이 계시다면 애플 신학기 프로모션 기간에 구매하시는 것을 추천드립니다. 2022년 애플 신학기 이벤트는 2022년 1월 6일부터 3월 7일까지 진행됩니다. 애플 2022년 신학기 교육 할인 혜택 프로모션 제품 2022년 애플에서 진행하는 신학기 할인 이벤트는 상시 진행하는 교육 할인과 애플 케어 20% 할인에 추가로 에어팟 2세대를 증..
티스토리 블로그를 운영한 기간을 계산해보니 오늘을 기준으로 286일이네요. 첫 글을 작성한 게 엊그제 같은데 어느새 9개월이 지났네요. 처음에는 호기롭게 1일 1포스팅 같은 것도 해보고 주간 회고록 같은 것도 써보았는데 지금까지는 유지하지 못한 게 매우 아쉽네요. 아직은 블로그를 운영한 게 1년도 지나지 않았지만, 저에게 있어서 짧지만은 않은 그리고 재미있는 경험을 할 수 있는 시간들이 되었던 것 같아요. 오늘은 2021년 한 해 동안 블로그를 운영하면서 느꼈던 점을 정리해보려고 합니다. 정리할 수 있는 머릿속 이야기 글을 쓰기 위해서는 글의 주재 즉 재료가 필요한데요. 이 재료는 주로 일상과 밀접하게 연관되어 있습니다. 알고 있지 못한 사실들을 글로 쓸 수 없기 때문이죠. 그렇다 보니 글의 주제는 자..
자바스크립트에서 typeof란 판별하려고 하는 대상의 값이 기본 타입인지 아니면 함수인지 혹은 객체인지 구체적으로 값을 식별하는 연산자입니다. 이전에도 typeof 연산자에 대해 이야기를 한 적이 있는데요. 오늘은 이전 내용을 조금 더 보충하기 위해 이 글을 작성하였습니다. 그림으로 보는 typeof 연산자 - 타입 연산자 typeof를 이용해서 판별할 수 있는 값의 타입은 숫자, 참 혹은 거짓, 문자열, 함수, 객체입니다. typeof 연산자로는 null을 구분할 수 없기 때문에 데이터의 타입을 식별하기 위해서는 먼저 "==" 연산자를 이용하는 게 좋습니다. 그런 이유로 앞서 정의한 순서도에서도 값을 구분하기 전에 식별하는 값의 null 여부를 판별합니다. 값이 null도 아니고 undefined도 아..
jQuery에서 제공하는 data()는 DB(Database)와 같은 데이터 저장소 역할을 합니다. data()가 데이터 저장소와 같은 역할을 한다면 화면을 개발할 때 무슨 필요가 있냐고 생각할 수 있지만, 화면에서 특정 기능이 동작하기 데이터가 필요한 경우 매번 서버와 통신하는 것은 불필요합니다. 특히 불필요하게 서버와의 통신이 빈번하게 일어나면 서버에 과부하를 주는 요소가 되기 때문에 어느 정도의 데이터는 화면에서 관리하고 사용하는 게 화면을 개발할 때 편리합니다. 그럼 오늘은 jQuery의 data()에 대해 학습해보도록 하겠습니다. data()는 어떤 원리로 동작하는 걸까? jQuery의 data()는 앞서 이야기드렸듯이 데이터를 설정하는 기능입니다. 그런데 한 가지 의문스러운 부분은 DB도 아니..
자바스크립트를 통해 사용자의 위치 정보를 알아내는 방법은 Geolocation를 사용하는 것입니다. Geolocation API는 사용자의 현재 위치를 가져오는 API로 주로 사용자 위치를 지도에 표시할 때 사용하거나 사용자 위치 기반의 서비스를 제공하는 경우에 사용됩니다. 또한 사용자의 위치 데이터는 개인 정보와 관련되어 있기 때문에 사용자의 동의 없이는 사용할 수가 없습니다. 이번 글에서는 Geolocation을 이용해서 사용자의 위치를 일회성 혹은 실시간으로 확인하는 방법에 대해 알아보도록 하겠습니다. 사용자의 위치를 확인하는 방법 geolocation를 이용해 사용자의 위치를 확인하는 방법은 간단합니다. getCurrentPosition()을 이용해 성공, 실패 콜백 함수를 등록하면 됩니다. 사용..
자바스크립트의 eval() 함수는 문자열로 이루어진 스크립트 코드를 실행하는 함수입니다. 그렇기 때문에 eval()을 잘 활용하면 동적으로 Javascript 실행문을 만들어서 실행할 수도 있지만, 보안에 취약하다는 문제점도 있는데요. 오늘은 eval()의 사용방법을 통해 어떤 점이 좋고 나쁜지 알아보도록 하겠습니다. 문자를 실행시키는 eval() console.log('2 + 2'); // output: '2 + 2' 일반적으로 함수의 매개변수로 문자 값을 사용하면 문자 리터럴로 인식되고 있는 리터럴로 사용됩니다. 위의 예제처럼 말이죠. 하지만 eval()을 사용하면 재미있는 결과를 만들어 낼 수 있습니다. console.log(eval('2 + 2')); // output: 4 eval()은 매개변수..
HTTP 요청 메서드와 HTTP 응답 코드를 잘 알고 사용한다면 우리는 보다 쉽게 RESTful 하게 HTTP 프로토콜을 사용할 수 있습니다. 뿐만 아니라 HTTP 프로토콜은 REST(Representational State Transfer) 아키텍처 위에서 더 큰 빛을 발하는 통신 규약입니다. 하지만 생각보다 API를 REST 하게 설계하고 사용하는 것은 말처럼 그리 간단치 않습니다. HTTP 요청 메서드 먼저 알아볼 부분은 HTTP 요청 메서드입니다. HTTP 요청 메서드는 요청(Request)을 통해 기대하는 행동을 말합니다. 예를 들어 서버에서 처리를 하지 않는다고 해도 https://7942yongdae.tistory.com/이라는 URL에 GET 요청(Request)하면 조회를 하고 싶다는 의..
정적 팩토리 메서드(static factory method)는 실무에서도 활용하기 쉬운 프로그래밍 기법입니다. 정확히는 GoF 디자인 패턴 중 팩토리 패턴에서 용어를 가져와 정의한 기법으로 "객체 생성 메서드"라고 정의할 수 있습니다. 프로그래밍을 처음 접한 사람은 조금은 어려울 수 있지만 간단하게라도 개념을 익히고 알아둔다면 프로그래밍을 하는데에 있어 도움이 되는 개념 중에 한 가지입니다. 정적 팩토리 메서드의 정의 정적 팩토리 메서드라는 용어가 생소하게 느껴질 수 있지만, 사실 그리 생소하지 않은 방법입니다. 자바에서 말하는 클래스의 인스턴스화, 즉 객체 생성을 흔히 사용하는 생성자가 아닌 정적(static) 메서드로 하는 것을 정적 팩토리 메서드라고 합니다. 글로만 설명하면 어려울 수 있으니 코드를..
이번에 레노버 LP40 무선 이어폰을 구매하게 되었습니다. 가격이 저렴하면서 언제든 아무 때나 사용하고 망가져도 무관한 오픈형 무선 이어폰을 찾던 중에 찾은 제품입니다. 구매 당시 제조사의 인지도와 에어팟3을 닮은 외관은 꽤나 매력적이라고 생각되었지만, 실제로 제품을 받고 사용한 결과는 아쉬운 점이 많은 제품인 것 같습니다. 알리 익스프레스를 통해 구매한 Lenovo LP40 무선 이어폰 주문하고 일주일이 조금 지난 시점에 구매한 제품을 받아 볼 수 있었습니다. 알리 익스프레스를 통해 구매한 레노버 LP40의 가격은 12,000원 정도입니다. 제품 구성은 무선 이어폰 1쌍, 무선 이어폰 충전 본체, USB-C 케이블, 제품 설명서입니다. 한 달간 써보고 쓰는 레노버 LP40 사용 후기 레노버 LP40 무..
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.