새해가 시작한 지 엊그제인 것 같은데 시간이 흘러 벌써 5월이 되었네요. 블로그를 시작한 지도 어느덧 1년이 지났어요. 처음으로 글을 올린 게 2021년 3월이었는데 지금은 1년이 지나 2년 차가 되었고 빠른 주기는 아니지만 여전히 꾸준하게 글을 올리고 있어요. 글을 쓰기 시작한 지 1년이 지나서 일까요? 어떻게 블로그가 변화했는지 그리고 어떤 이야기들을 했는지 확인해보고 싶은 마음이 생겨 이 글을 쓰게 되었습니다. 처음에 블로그를 운영할 때만 해도 여러 가지 주제를 탐문하고 많은 생각과 이야기들을 쓸 수 있을 거라고 생각했지만 지금의 결과를 보면 부족한 부분이 많아 내심 부끄럽기도 하네요. 자 그럼 조금은 늦은 감이 있지만 지나간 2021년을 되돌아보며 어떤 일들이 일어나고 변화했는지 살펴보겠습니다. ..
안드로이드 앱을 개발할 때 일반적으로 사용하는 기능 중 하나가 바로 findViewById()입니다. 특정 TextView의 문자 값을 변경하거나 이벤트를 처리할 때 등등 화면의 요소를 findViewById()로 찾아 제어합니다. val textView: TextView = findViewById(R.id.text_main) 이런 코드로 말이죠. 하나의 TextView 정도야 예제 코드처럼 쉽게 쓸 수 있지만 화면에서 관리해야 하는 요소가 늘어날수록 findViewById()는 부담스러울 정도로 늘어납니다. 이러한 부분을 조금 더 간결한 코드로 손쉽게 해결할 수 있는 방법이 데이터 바인딩입니다. 데이터 바인딩은 데이터와 화면을 연결 짓는 기술로 안드로이드 앱뿐만 아니라 화면과 관련된 기술들(WinFor..
자바에서는 객체를 문자화 시킬 때 toString()을 사용합니다. 대부분 사람들이 처음 toString()을 배울 때 단순한 출력문 함께 배우기 때문에 toString()을 인스턴스를 표현하는 @어쩌고의 문자 값 정도로 인지하지만 알고 보면 재미있는 녀석이 toString()입니다. toString()은 객체의 단순하게 보면 문자 값이지만, 객체의 입장에서 본다면 인스턴스화 된 자신을 문자로 표현할 수 있는 Object의 유산이에요. toString()을 잘 사용한다면 조금 더 재미있게 객체의 관점에서 객체를 바라볼 수 있어요. Object가 물려준 유산이 toString() 외에도 여러 가지가 있지만 오늘은 toString()에 대해서 이야기해보겠습니다. toString()은 어디에 사용될까? - 내..
의존성 주입(Dependency Injection)은 객체의 생성과 사용 관심사를 분리하는 프로그래밍 설계 방식입니다. 자바 같은 경우 추상화 도구(인터페이스, 추상 클래스)를 사용하면 손쉽게 의존성 주입하는 코드를 만들 수 있습니다. 오늘은 의존성 주입(DI)이라는 단어가 주는 부담을 덜어낼 수 있도록 이 글을 작성하게 되었습니다. 아직까지 의존성 주입이라는 개념이 대하기 어려우셨다면 뒤에서 이야기할 이야기를 통해 조금이라도 의존성 주입을 쉽게 이해하실 수 있으면 좋겠습니다. 아 그리고 의존성 역전(IOC)은 의존성 주입과 다른 개념이니 의존성 주입과 의존성 역전을 혼동하지 말아 주세요. 분명 둘은 다른 개념입니다. 의존성 정의부터 알아보자 의존성이라는 단어의 사전적인 정의는 "다른 것에 의지하여 생활..
안드로이드 앱을 개발하기 위해서는 기초적으로 알야 할 개념이 다섯 가지가 있습니다. 바로 액티비티(Activity), 서비스(Service), 브로드캐스트 리시버(Broardcast receiver), 콘텐츠 프로바이더(Content provider)라고 불리는 4개의 컴포넌트, 그리고 메시지를 칭하는 인텐트(Intent)입니다. 아직은 공부하는 중이라 코드 수준으로 명확하게 설명하기는 어렵지만 개념적으로는 한번 정리해두는 게 좋을 것 같아 이렇게 정리해봅니다. 안드로이드 앱에서 이야기하는 컴포넌트라는 것은 우리가 집을 만든다고 하면 필요한 시멘트나 골조나 벽돌 같은 개념입니다. 제대로 사용할 줄 몰라도 어떻게든 사용은 가능하지만 조금 더 정확히 알고 사용방법을 분명히 안다면, 더 멋진 앱을 만들 수 있..
최근 앱을 만들어보고 싶어 져서 코틀린과 안드로이드 앱 공부를 시작했습니다. 아직 잘 모르는 부분이 많아 안드로이드 앱을 만드는 내용을 기초 단계에서부터 차근 차근히 조금씩 정리를 해보려고 합니다. 이번에는 그 시작 단계로 안드로이드 스튜디오를 사용해 빈 프로젝트를 만들고 실행하는 과정을 알아보겠습니다. 안드로이드 스튜디오를 설치하는 과정은 따로 정리하지 않았습니다. 필요하신 분은 공식 홈페이지에서 확인해주세요. 안드로이드 앱 빈 프로젝트 생성하기 안드로이드 스튜디오를 설치하고 실행하면 위와 같은 화면이 보입니다. New Project는 신규 안드로이드 앱 프로젝트를 생성할 수 있고, Open은 컴퓨터에 저장되어 있는 기존에 사용하던 앱 프로젝트를 열 수 있습니다. Get from VCS는 Git, SV..
이번에는 Axios 파일 다운로드 기능을 만들어보려고 합니다. 개발을 하다 보면 자주 구현하는 기능 중에 하나가 파일 다운로드입니다. 간단한 내용이지만 정리를 해두면 좋을 것 같아 매번 정리해둔다고 하면서 한 적이 없어 이제 정리해보려고 합니다. 글의 제목은 Axios 파일 다운로드 기능 구현이지만 실제로 구현할 코드는 Axios 뿐만 아니라 fetch나 jQuery.ajax에서도 사용할 수 있는 내용입니다. Axios 파일 다운로드 요청하기 axios({ url: 'https://7942yongdae.tistory.com/file-download', // 파일 다운로드 요청 URL method: 'GET', // 혹은 'POST' responseType: 'blob', // 응답 데이터 타입 정의 })..
자바스크립트에서 소수점을 내리거나 올리거나 혹은 반올림하는 방법을 알고 계신가요? 소수점 계산을 해야 하는 경우가 별로 없다 보니 Math 객체에 대해 크게 관심을 가져 본 적이 없는데요. 이번에 반올림(round), 올림(ceil), 내림(floor)을 사용해 소수점 단위까지 검증이 필요한 요구사항을 구현하게 되어 Math에 대해 알아보려고 합니다. 아 그리고 소수점 처리에서 빠질 수 없는 Number 객체 toFixed()도 같이 공부해보겠습니다. 소수점 반올림 - Math.round() 반올림은 근삿값을 구할 때 4 이하의 수는 버리고 5 이상의 수는 윗자리에 1을 더하는 방법입니다. 예를 들어 0.4를 반올림하면 1, 0.5 반올림하면 1이 됩니다. 자바스크립트에서 소수점 반올림은 Math.ro..
괜찮은 프로그래밍 강의 사이트는 어느 곳이 있을까요? 요즘은 개발자 직군의 인기가 높다 보니 자연스레 프로그래밍을 주제로 한 사이트들이 늘어나고 있는데요. 오늘은 이 중에서 개인적으로 사용하면서 좋았던 프로그래밍 강의 사이트들을 알려드리려고 글을 쓰게 되었습니다. IT라는 분야가 일상이 되면서 프로그래밍 혹은 코딩이라는 단어도 자연스럽게 일상에 녹아들게 된 시대인만큼 가벼운 마음으로 코딩을 배워보는 것도 좋을 것 같네요. 인프런 (유료/무료) 인프런은 프로그래밍 강의 영상 중 질이 좋다고 생각되는 강의들을 다수 가지고 있는 프로그래밍 강의 사이트입니다. 최근 많은 기능들이 추가되면서 약간은 복잡해지고 있다고 생각하지만 여전히 잘 사용하고 있는 프로그래밍 강의 사이트입니다. 강의들은 유료/무료로 수강할 수..
개발자로 살면서 하고 싶은 몇 가지 버킷리스트가 있다. 바로 프로그래밍 개발 책을 출판해보는 것이다. 어떻게 보면 막연하게 느껴지기는 하지만 아무것도 모르면서 국비지원을 시작으로 개발자가 되었던 것처럼 1년 넘게 이 블로그를 운영하고 있는 것처럼 시작조차 하지 못하면 앞으로도 하지 못할 거라는 생각이 들어 조금은 용기를 내어 이 글을 시작으로 프로그래밍 서적 출판을 목표로 블로그 글을 써볼까 한다. 글의 주제 - 자바스크립트 프로그래밍 일단 글의 주제는 자바스크립트로 프로그래밍 세계에 입문하는 사람들을 대상으로 하려고 한다. 최근 코틀린과 안드로이드에 흥미가 생겨 안드로이드를 글의 재료로 써볼까도 생각해보았지만 아직은 누군가에게 이야기할 만큼 알지 못하기에 어느 정도는 알고 있다고 생각하는 자바스크립트를..
이번에는 Javascript의 Array가 가진 groupBy() 함수의 정의와 사용 방법에 대해 알아보겠습니다. groupBy() 함수는 알아두면 컬렉션(Collection)을 다룰 때 유용하게 쓸 수 있기 때문에 기본적인 사용 방법뿐만 아니라 알아두면 활용하는 부분도 예제 코드로 확인해보겠습니다. 그리고 자바의 스트림 API에서도 groupBy() 기능을 사용할 수 있어요. groupBy() 정의 Array.prototype.groupBy ( callbackfn[, thisArg] ) MDN에서 groupBy() 함수는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환한다고 정의합니다. 조금 말이 어렵다고 생각되는데요. groupBy() 함수가 주로 사용되는 용..
애플의 제품들을 사용하면서 느낀 점이 있다면 구매 비용도 높은 편이지만 유지 비용도 다른 전자 제품에 비해 높은 편입니다. 그래서인지 조금이라도 비용을 줄이기 위해 배터리 자가 교체를 고민하게 됩니다. 아이폰 배터리로 검색을 하면 배터리 자가 교체나 배터리 셀프 교체가 연관 검색어로 나오는 것을 보면 저뿐만 아니라 아이폰이나 기타 애플 제품들을 쓰는 사람들은 한 번씩 고민해보는 부분이라는 것을 알 수 있습니다. 금전적인 여유가 있다면 애플케어를 가입하는 것도 하나의 방법이 될 수 있습니다. 아이폰 배터리를 교체하는 이유 배터리는 소모품에 해당하는 전자 제품 부품입니다. 따라서 사용 시간이 지남에 따라 노후화되고, 새것으로 교체해야 하는 부품입니다. 사람마다 사용 빈도가 달라 차이가 있지만 배터리의 수명은..