이번 글에서는 자바를 이용해서 현재 디렉토리 경로를 확인하는 방법을 알아보도록 하겠습니다. 개발을 하다 보면 간혹 현재 작업하는 경로를 확인해야 하는 경우가 있습니다. 예를 들면 파일 업로드 폴더 위치를 확인하거나 환경설정 파일과 같은 특정한 파일들이 제 위치에 존재하는지 유무를 판별하기 위해서 말이죠. 때론 개발자의 작업 환경과 다른 서버 환경에서의 배포 이슈로 인해 자바가 인식하고 있는 현재 경로를 알아야 합니다. System.getProperty() 메서드를 사용한 현재 경로를 확인하는 방법 public class CheckDirectory { public static void main(String args[]) { String path = System.getProperty("user.dir"); ..
무슨 트랙볼 마우스를 사용해보신 적이 있으신가요? 이전에 우연한 계기로 트랙볼 마우스를 사용하게 되었는데 그때부터 지금까지 트랙볼 마우스의 편안함에 익숙해져 일반 마우스는 잘 사용하지 않게 되었습니다. 처음에 트랙볼 마우스로 접한 제품은 로지텍의 M570 제품인데 현재까지도 잘 사용 중인 제품입니다. 다만, M570의 경우 리시버를 사용하다 보니 USB 사용이 제한되는 경우 이용하기 힘들다는 제약이 있습니다. 일반적이지는 않을 수 있지만 맥북 제품들은 연결 포트 개수가 제한이 있어 허브가 필수인 것처럼 리시버를 사용해야 하는 M570은 사용에 제한이 있습니다. 사실 이건 새로운 마우스를 구매하기 위한 핑계 일뿐, 5년 이상 사용하다 보니 새로운 마우스가 가지고 싶은 마음에 켄싱턴 에르고 버티컬 트랙볼 마..
HTML(Hyper Text Markup Language)를 배울 때 가장 먼저 배우는 태그 중 하나가 바로 태그입니다. 태그는 anchor를 의미하는 태그로 한글로는 닻을 말합니다. 웹에서 태그 쉽게 쓰고 사용되지만, 가진 의미는 결코 가볍지 않은데요. 이번 글에서는 태그가 가지는 역할과 기능에 대해서 알아보도록 하겠습니다. 태그와 href 그리고 닻(anchor) HTML에서 태그가 가진 역할을 설명하기 위해 배와 닻(Anchor)의 그림을 만들어 보았습니다. 사람들은 본인의 상황에 따라 필요하거나 도움이 되는 정보를 찾기 위해 WWW(World Wide Web)라는 무수히 많은 서버가 연결된 네트워크를 돌아다닙니다. 이때 바다 위(네트워크)를 떠다니는 배(사용자)가 정박할 수 있도록 좌표(주소 혹은..
웹 프로그래밍을 하다 보면 자연스럽게 서버와 클라이언트라는 단어를 자주 접합니다. HTML - Form을 이해하고 사용하자라는 글에서도 클라이언트와 서버 간의 통신에 대해서 언급을 했었는데요. 이번 글에서는 웹 서버와 클라이언트를 주제로 이야기해보려고 합니다. 서버는 무슨 일을 할까? 간단하게 말하면 서버가 하는 일은 클라이언트로부터 요청을 받아, 요청한 일을 처리해 넘겨주는 일을 합니다. 예를 들어 사람들은 몇 번의 클릭 혹은 터치만으로 쉽게 인터넷을 이용합니다. 이 과정에서 사용자는 알 수 없지만 클라이언트와 서버 간의 통신이 이루어집니다. 먼저 사용자가 웹 브라우저를 통해 서버에 있는 자원(Resource)을 요청하는 것이 시작점이 됩니다. 요청(Request)은 서버로 전달이 되고, 서버는 사용자..
이번에는 HTML의 element 중에서 form에 대해 알아보려고 합니다. form은 화면을 개발할 때 div만큼 많이 사용하는 요소 중에 하나입니다. 바로 데이터를 전송하는 데에 있어서 form이 가진 역할이 있기 때문인데요. form이 가진 의미(Semantic)를 생각해본다면 당연한 이야기입니다. 그러면 본격적으로 form을 이해하고 사용하는 방법에 대해 알아보도록 하겠습니다. HTML의 일반 요소와 Form의 차이 Name: E-mail: Message: HTML의 form은 무엇일까요? 위에서 제시한 코드를 보았을 때 HTML에서 사용되는 기존 요소들과 form의 차이점은 없습니다. 오히려 사용법이 다르지 않기 때문에 차이를 알 수가 없습니다. HTML의 일반 요소와 form의 가장 큰 차이점..
맥북 프로 사용하면서 구입한 물건 중 가장 효용가치가 높은 한 가지를 말하라면 단연코 노트북 스탠드입니다. 정확히는 노트북 스탠드 중에 마제스탠드라는 접착형 노트북 받침대입니다. 만족도가 매우 높아 개인적으로 사용하는 맥북 프로 노트북뿐만 아니라 회사에서 사용하는 맥북 프로 m1 노트북에도 사용하는 제품입니다. 직업도 프로그래머이다 보니 맥북과 같은 노트북의 사용 빈도가 높아, 노트북을 편리하게 쓰기 위해 노트북 주변 기기들을 눈여겨보고 구매해서 사용하는 편입니다. 맥북만이 아니라 일반적으로 노트북은 노트북 스탠드와 같은 눈높이 보조 제품을 같이 사용하지 않으면, 이용하는 데에 불편함이 따릅니다. 때론 목이나 어깨가 결리거나 혹은 구부정하게 등을 굽히거나 말이죠 노트북 스탠드를 구매하면서 고려했던 점 노..
스프링 부트(Spring Boot)로 프로젝트를 만들면서 JSP를 사용해야 하는 경우는 어떤 경우일까요? 바로 레거시 웹 프로젝트를 스프링 기반으로 업그레이드(변경) 해야 하는 경우입니다. 예전에 자바로 만들어진 웹 프로젝트들은 Thymeleaf, Velocity와 같은 템플릿 엔진을 사용하지 않고 JSP(Java Server Page)로 만든 경우도 흔합니다. 이러한 이유로 최신의 기술(스프링 혹은 스프링 부트)을 사용하려고 한다면 스프링 부트에 JSP를 사용할 수 있도록 설정을 해주어야 합니다. JSP를 사용하는 스프링 부트 (Spring Boot) 프로젝트 만들기 현재 스프링 부트에서 추천하는 템플릿 엔진은 Thymeleaf, Freemarker, Mustache 등입니다. 그래서 손쉽게 몇 번의 ..
지난 2021.05월에 이어 2021년 06월의 기술 블로그지표와 애드센스 수익을 확인해보겠습니다. 6월 같은 경우에는 개인적인 사정이 생겨 약 3주간의 공백기간을 가지게 되었습니다. 그래서 어떤 지표를 가지게 될지 개인적으로는 매우 궁금했습니다. 그럼 지난 6월의 블로그 지표와 애드센스 수익을 확인해보도록 하겠습니다. 6월 블로그 방문자 유입 분석 지난 5월에 블로그 방문객은 총 4,421명이고 6월의 블로그 방문객 수는 총 6,358명입니다. 5월과 6월을 비교하면 방문객이 1,937명 늘어났습니다. 5월에 늘어난 유입량 1,533명과 대비해서 많이 늘어나지는 않았지만, 3주라는 공백기를 감안한다면 좋은 수치라고 생각됩니다. 실제 6월의 운영 공백기가 반영될 7월달의 수치가 어떨지 궁금합니다. 이전에..
CSS(Cascading Style Sheets)는 워드 프로세서에서 사용하는 스타일 기능을 웹으로 가져온 것입니다. CSS를 사용하면 DOM(Document Object Model)에 스타일(Style)을 적용할 수 있습니다. 정확히는 CSS를 사용하면 HTML 문서에 디자인을 적용할 수 있습니다. CSS는 HTML과 같이 사용되며, HTML에 정의된 태그(Tag)가 보여주는 디자인을 재정의해서 HTML의 시각적 요소를 담당하는 언어입니다. 예를 들어 주제롤 표현하는 이라는 태그를 보여주는 방법은 브라우저(Chrome, Safari, Firefox)가 정의하지만, CSS를 사용하면 이 표현되는 시각적인 정의를 바꿀 수 있습니다. CSS는 태그의 특성을 원하는 대로 변경이 가능합니다. h1 { margi..
반응형으로 웹 화면을 개발하다 보면 모바일에서만 hover 스타일이 적용되지 않게 해야 하는 경우가 발생합니다. 모바일 기기에서 특정 이나 를 터치(클릭)를 했는데 해당 요소를 누르고 있는 것처럼 hover 스타일이 적용되어 있기 때문입니다. hover 스타일이 적용되는 이유 :hover 스타일이 해제되지 않고 지속적으로 적용되는 이슈는 모바일 화면이 아닌 모바일 기기 화면에서 발생하는 문제입니다. 모바일 기기에서만 이런 현상이 일어나는 이유는 모바일 기기가 상호작용 하는 방식 때문입니다. 마우스 커서와 같은 포인터가 DOM의 element 요소 위에 위치하면 적용되는 스타일이 바로 의사(Pseudo) 클래스인 :hover인데, 모바일 기기는 터치(Touch)가 포인터의 역할을 합니다. 즉 모바일 기기 ..
이번에는 디바운스(debounce) 혹은 디바운싱(debouncing)이라고 불리는 개념을 알아보도록 하겠습니다. 이 글에서는 debounce라는 단어를 사용하여 개념을 설명합니다. Debounce의 개념 debounce는 한 문장으로 요약정리하면 처리해야 하는 일들을 미루어두었다가 한 번에 실행하는 방법을 말합니다. 의미 그대로 하나의 방법이기 때문에 표현하는 방법이나 설명하는 방식은 여러 형태로 존재하지만, 단순히 이벤트 핸들러 혹은 이벤트 처리하는 기술에 국한되는 것이 아니라 포괄적인 개념으로 실행해야 하는 일련의 일들을 한 번에 처리한다고 이해하시면 좋을 것 같습니다. 위 그림은 일반적인 일을 수행하는 시점과 debounce를 적용한 일을 수행하는 시점을 시각화한 내용입니다. 처리해야 할 일이 생..
Node.js 디자인 패턴 바이블 책은 어떤 책일까요? 책 제목으로 Node.js 디자인 패턴 바이블의 내용은 Node.js와 디자인 패턴을 이야기한다는 것을 알 수 있습니다. 일반적으로 Node.js는 자바의 JVM처럼 Javasciprt의 런타임 환경이고, 디자인 패턴은 프로그래밍을 통해 문제 해결을 위한 형식화된 일종의 설계 구조를 의미합니다. 사실 그런 부분에 있어 Node.js와 디자인 패턴이라는 주제가 각 각 개별적으로는 이해가 가지만 조합된 내용은 쉽게 머릿속에 그려지지 않습니다. 그럼 Node.js 디자인 패턴 바이블이라는 책은 어떻게 이 내용을 다루었는지 이야기해보도록 하겠습니다. Node.js 디자인 패턴 바이블의 개요와 독자 대상 Node.js 디자인 패턴 바이블 책은 기본적으로 No..