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 무..
DOM(Docuemnt Object Model)은 document 내의 노드(Node) 탐색을 위해 몇 가지 편의 기능을 제공합니다. 오늘은 그중에서 다른 노드에 대 참조를 사용하는 부분에 대해 알아보려고 합니다. 여기서 중요한 점은 참조를 기반한 DOM의 탐색은 element 뿐만 아니라 text와 comment를 포함한다는 사실입니다. 오해하기 쉬운 DOM 노드 탐색의 사실과 불편하지 않게 노드 탐색을 할 수 있는 방법에 대해 알아보겠습니다. 불편한 DOM의 노드 탐색 결과 오해까지는 아니지만 처음 DOM의 노드 탐색을 사용하는 경우에 이상하게 여길 수 있는 부분이 있습니다. 바로 참조값을 이용한 접근인데요. 참조를 사용한 대표적으로는 parentNode, firstChild, lastChild, n..
불안이 우릴 일 하게하지. 불안과 걱정, 쓸데없는 잡생각... 물론 일에 대한 확신과 희망 같은 것으로도 기차는 움직이지만, 그것만으로는 평지를 겨우 달릴 수 있을 뿐이야. 언덕을 만나면 그것만으로는 어렵지. 그때는 불안과 걱정 같은 걸 넣어서 함께 태워야지. 불안과 걱정, 우울이 한밤에 일어나 불을 켜게 만들고, 이불을 걷어차게 만들고, 기어이 책상 앞에 앉게 하지. 불안이 이미 끝낸 일을 다시 펼치게 만들고, 불안이 지나쳐버린 실수를 찾아내고, 불안과 긴장이 일이 끝날 때까지 쓰러지지 않게 등과 다리에 힘을 주지. 불안이야말로 일의 주적이자, 최고의 동맹이야. 진눈깨비소년 - 205화 불안이 하는 일 중에서
순수 함수(Pure Function)란 무엇일까요? 순수 함수에 대한 정의를 내리자면 동일한 인자가 전달되면 항상 동일한 결과를 반환하는 함수(코드 블록)입니다. 함수라면 당연한 거 아니냐 라고 생각하실 수 있지만 가장 기초적이면서 지키기 어려운 개발이 순수 함수를 만들고 그 함수들을 조합해 확장성, 재사용성을 높이는 코드를 작성하는 것입니다. 오늘은 자바스크립트를 통해 함수형 프로그래밍을 하는데에 있어 쉽지만 지키기는 순수 함수에 대해 이야기해볼까 합니다. 막상 내일 책상 앞에서는 일정에 쫓겨 잊겠지만, 적어도 오늘보다는 멋진 프로그래밍을 할 수 있기를 바라보면서 말이죠 순수 함수의 정의 - Pure Function 순수 함수의 정의는 서문에서 말한 것과 같이 동일한 매개변수가 주어지면 항상 동일한 결..
처음으로 구글 에드센스 수익이 100$를 넘어 드디어 통장으로 첫 수익이 입금되었습니다. 애드센스를 통해 수익을 얻고 이렇게 인증받는 글을 쓸 수 있다니 기분이 매우 좋네요. 블로그에 글을 처음 올린 게 2021년 3월 말쯤이었는데 지금이 11월이니 처음으로 애드센스 수익을 얻는데 약 7개월 정도가 걸렸습니다. 길다면 길고 짧다면 짧은 기간이네요. 그럼 이제 처음으로 애드센스 수익을 인증하는 글을 써볼까요? 구글 애드센스 인증 블로그를 운영하면서 돈을 벌어본 적이 없어 이번 기회를 통해 구글 애드센스가 광고 수익금을 지급하는 방법을 알 수 있었습니다. 간략하게 내용을 설명하면 애드센스 수익은 블로그의 광고를 통해 수익이 발생한 뒤 애드센스에 설정되어 있는 지급 기준 금액(기본: 100$) 이 초과하면 지..
아이폰의 iOS를 2021년 9월 21일에 정식으로 배포된 iOS 15 버전으로 업데이트하면서 생긴 이슈 중에 하나가 바로 통화 연결음 문제입니다. 버전 업데이트를 하면서 이전에 사용하던 통화 연결음 대신 한국 사람들에게는 익숙하지 않은 ETSI 표준의 통화 연결음으로 변경이 되어 생긴 이슈입니다. 처음 ETSI 표준 통화 연결음을 듣는 사람은 상대방과 전화가 연결된 것처럼 착각할 수 있는 소리입니다. 아이폰 통화 연결음을 복구하는 방법 다시 업데이트를 하자! 변경된 아이폰 통화 연결음을 이전으로 돌리는 방법은 바로 업데이트를 하는 것입니다. 정확히는 오늘(2021년 10월 26일) 배포된 iOS 15.1 버전으로 아이폰을 버전을 업데이트하면 이전에 사용하던 통화 연결음으로 변경이 됩니다. 이전의 통화 ..
이번 글에서는 스프링 부트에서 제공하는 화이트라벨(Whitelabel) 대신 사용자가 정의한 오류 페이지를 사용하는 방법에 대해 이야기해볼까 합니다. 스프링 부트의 오류 처리 방법은 스프링에서 정의한 화이트라벨(Whitelabel)이 기본값으로 사용됩니다. 토이 프로젝트에서 사용하기는 문제가 없지만 멋진 웹 프로젝트를 만들기 위해서는 사용자 정의 에러 페이지를 쓰는 것이 좋습니다. Spring Boot에서 정의하는 오류 처리 방법 - feat. Whitelabel Spring Boot Features - Error Handling에서는 스프링 부트 오류 처리 방법에 대해 아래와 같이 정의합니다. By default, Spring Boot provides an /error mapping that handl..
올해 애플이 세계 개발자 회의(WWDC 2021)에서 차세대 macOS인 몬터레이(Monterey)를 발표했습니다. 오랫동안 지원을 해주었던 2014년도 MacBook Pro 라인도 이번에는 지원 대상에서 제외되었습니다. 개인적으로 MacBook Pro 2014 mid를 사용하고 있어서 몬터레이(Monterey) 지원 대상에 포함되기를 조금은 기대했던 부분이 있는데 아쉽기도 하네요. 올해 새롭게 출시될 거라고 예상되고 있는 신형 맥북을 노려야 할 것 같습니다. 몬터레이(Monterey)를 지원하는 Mac 제품 목록 확인하기 애플 공식 홈페이지에서는 몬터레이(Monterey)가 지원하는 하드웨어 목록을 다음과 같이 공개했습니다. - iMac (2015년 후반 이후 모델) - Mac Pro (2013년 후반..
Promise를 한 마디로 정의한다면 비동기 작업을 나타내는 객체입니다. 조금 더 풀어서 설명하면 비동기 작업을 쉽게 사용할 수 있도록 적의 된 객체입니다. Promise는 ES6(ES2015)에 표준으로 등록된 사양이고, 모던한 Javascript에서는 가진 역할과 책임이 더 중요해졌습니다. 그럼 이번 글에서는 콜백 지옥(Callback hell)을 벗어나는 방법을 통해 Promise가 가진 장점을 알아보도록 하겠습니다. Promise를 사용하는 방법 먼저 콜백 지옥을 벗어나는 방법을 알아보기 전에 Promise의 사용 방식을 알아보려고 합니다. Promise의 사용 방식은 생각보다 중요한데요. 그 이유는 바로 Promise는 비동기에 Callback을 전달하지 않고 첨부하기 때문입니다. 말로는 이해하..
일반적으로 Javascript의 배열의 요소에 접근하는 경우 index를 사용합니다. 예를 들면 array.length를 사용해서 말이죠. 하지만 at()라는 함수를 사용하면 조금 더 멋진 방법으로 배열(Array)의 요소를 다룰 수 있습니다. 이번에는 at()을 이용해 index 없이 배열을 사용하는 방법에 대해 알아보겠습니다. index를 이용한 배열 요소 접근 방법 배열의 요소에 접근하는 방법으로 주로 사용되는 방법은 바로 index를 사용하는 방법입니다. index는 위치를 기준으로 정의된 값입니다. 배열에서의 index는 배열 시작으로부터 몇 번째에 위치하느냐를 가리키는 위치 값입니다. 그렇기 때문에 배열의 첫 번째 요소를 가리키는 경우 index의 값으로 0을 사용합니다. const numbe..