의존성 주입(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..
이번에는 Javascript의 Array가 가진 groupBy() 함수의 정의와 사용 방법에 대해 알아보겠습니다. groupBy() 함수는 알아두면 컬렉션(Collection)을 다룰 때 유용하게 쓸 수 있기 때문에 기본적인 사용 방법뿐만 아니라 알아두면 활용하는 부분도 예제 코드로 확인해보겠습니다. 그리고 자바의 스트림 API에서도 groupBy() 기능을 사용할 수 있어요. groupBy() 정의 Array.prototype.groupBy ( callbackfn[, thisArg] ) MDN에서 groupBy() 함수는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환한다고 정의합니다. 조금 말이 어렵다고 생각되는데요. groupBy() 함수가 주로 사용되는 용..
자바스크립트에서 JSON은 JavaScript Object Notation의 줄임말로 문자 기반의 표준 포맷을 말합니다. 그리고 자바스크립트에서 데이터를 다룰 때는 주로 JSON 형식을 취하기 때문에 JSON의 사용하는 방법에 대해 알아두는 것이 좋습니다. 특히 JSON을 다루기 위해 내장되어 있는 JSON.stringify(), JSON.parse() 사용 방법을 알아두면 JSON 객체를 다루기도 쉽고 개발의 생산성, 효율성도 좋아집니다. JSON은 무엇일까? JSON을 잘 사용하는 방법을 알아보기 전에 먼저 JSON에 대한 정의를 알아보겠습니다. JSON을 잘 사용하기 위해서는 JSON의 정의를 아는 것도 중요합니다. 서문에서는 JSON(JavaScript Object Notation)을 문자 기반의..
jQuery 라이브러리를 사용하게 되면 많이 이용하는 메서드가 바로 click()이나 change() 같은 이벤트를 다룰 때 사용하는 이벤트 핸들러 메서드입니다. 그런데 click(), change() 같은 이벤트 핸들러가 잘 동작하다가 특정 상황에서 동작하지 않는지 이유를 알고 계신가요? 그리고 click()나 change()가 동작하지 않을 때 on()을 사용하면 문제가 해결되는 걸까요? 오늘은 on()과 click()의 차이 그리고 그 차이점을 통해서 click() 대신 on()을 써야 하는지 알아보겠습니다. click()이 동작하지 않으면 on()을 쓰자 click()와 on()의 차이점을 알아보기 전에 click() 이벤트 핸들러가 정상적으로 동작하지 않는 경우 on()을 사용해서 이벤트를 처리..
프로그래밍에서 정규 표현식을 잘 사용하면 보다 간단하게 문제들을 해결할 수 있습니다. 대표적으로는 공백, 숫자, 한글과 같은 문자 유효성 검증을 이야기할 수 있겠네요. 정규 표현식(regular expression)을 사용하면 if문을 사용하지 않는 검증을 만들 수 있을 뿐만 아니라 코드의 가독성도 높일 수 있고 문자 탐색에서도 이점을 가질 수가 있습니다. 오늘은 자바스크립트를 이용해 유효성을 검증하는 정규표현식에 대해서 알아보겠습니다. 유효성 검증의 경우 대표적으로 사용하는 사례는 공백 확인, 영문자 혹은 한글 확인과 같이 사용자의 입력 값을 확인하는 경우입니다. 그럼 예제 코드를 통해서 정규 표현식에 대해 알아보겠습니다. 이 글에 예제 코드로 작성한 유효성 검증 코드는 공백 확인, 숫자 확인, 영문자..
스프링 시큐리티(Spring Security)를 사용할 때 적용되는 패스워드 암호화 부분은 PasswordEncoder를 이용하면 자유롭게 커스터마이징이 가능합니다. 예를 들어 MySQL의 암호화 기능인 Password()도 PasswordEncoder를 구현해서 사용하면 스프링 시큐리티에 적용할 수 있습니다. MySQL의 암호화 기능 Password() 스프링 시큐리티의 PasswordEncoder를 통해 구현하기 위해 먼저 MySQL의 Password()가 정의된 내용을 확인해보겠습니다. /* Generate binary hash from raw text string Used for Pre-4.1 password handling SYNOPSIS hash_password() result OUT stor..
jQuery를 사용할 수 있는 방법은 무엇이 있을까요? jQuery를 사용하기 위해서는 jQuery 모듈을 우리가 사용하는 프로젝트에 포함시켜야 합니다. jQuery뿐만 아니라 어떤 자바스크립트 라이브러리가 되었던 우리가 명시적으로 사용한다는 스크립트를 추가해야 사용이 가능해집니다. CDN 방식을 이용해서 jQuery를 사용하기 CDN(Content Delivery Network)은 콘텐츠 전송 네트워크라는 의미로 간단하게 설명하면 네트워크(인터넷)를 통해서 콘텐츠(jQuery 라이브러리 파일)를 배포하는 방식을 말해요. 즉 사용하는 사람 입장에서 쉽게 이용할 수 있도록 만들어진 방식이에요. jQuery의 CDN 주소는 공식 홈페이지를 통해서 확인할 수 있습니다. CDN 방식으로 배포되는 타입은 unco..
이번에는 삭제한 branch나 commit를 복구하는 방법에 대해서 알아보겠습니다. 개발을 하다 보면 생각지 못한 실수로 branch나 commit를 삭제하는 경우가 있습니다. 이런 경우 생각보다 어렵지 않은 방법으로 삭제한 기록을 되살릴 수 있는 방법이 있는데요. 바로 git이 제공하는 reflog를 사용하는 것입니다. reflog로 삭제한 기록을 복구해보자. reflog는 참조(ref)에 대한 이력을 볼 수 있는 방법이에요. git에서 사용되는 command는 참조를 포함해서 기록되고 있기 때문에 reflog를 이용하면 git을 이용해 작업한 모든 이력을 확인할 수 있어요. 1. git reflog를 사용해서 시점을 찾자. git reflog // 추가 명령어를 이용하게 세밀하게 기록을 찾는 방법 g..