바닐라 자바스크립트 (Vanilla Javascript)는 과연 무엇일까? 그리고 왜 필요한 걸까? 이 질문에 대해서 대답하기 위해서는 최근의 자바스크립트가 아니라 이전의 웹 생태계와 그 안에 있던 자바스크립트를 이해할 필요가 있다. 완전히 같다고는 이야기할 수 없지만 Java에 빗대어 보면 POJO (Plain Old Java Object)와 비슷한 맥락을 가지고 있다고 생각한다. 먼저 바닐라 스크립트가 어떤 것인지 알아보자 - Vanilla Javscript Vanilla JS is a fast, lightweight, cross-platform framework for building incredible, powerful JavaScript applications. 바닐라 JS는 빠르고 가벼운 크로..
이번에는 HTML5를 기준으로 간단하게 회원가입 양식 템플릿을 만들어보겠습니다. 이전에 부트스트랩을 사용해서 회원가입 화면을 만든 적이 있는데요. 부트스트랩을 사용하지 않고 순수하게 HTML5만 사용해서 화면을 만들어 보는 것도 좋을 것 같아 이 글을 작성하게 되었습니다. 일반적으로 회원가입 양식에는 , , , , , 등 여러 가지 태그를 이용합니다. 하지만 이 글은 기본편으로 처음 회원가입 화면 개발하는 분이 쉽게 개발을 해볼 수 있도록 간단하게 , 만 사용해보았습니다. 시작하기 HTML5라는 단어를 써서 말은 거창해 보이지만 HTM5라고 해서 HTML과 다른 부분은 거의 없습니다. ". html" 파일의 선언 부만 위와 같은 구문을 명시하면 됩니다. HTML과 HTML5의 자세한 면면을 살펴보면 선언..
이번 글에서는 자바를 이용해서 현재 디렉토리 경로를 확인하는 방법을 알아보도록 하겠습니다. 개발을 하다 보면 간혹 현재 작업하는 경로를 확인해야 하는 경우가 있습니다. 예를 들면 파일 업로드 폴더 위치를 확인하거나 환경설정 파일과 같은 특정한 파일들이 제 위치에 존재하는지 유무를 판별하기 위해서 말이죠. 때론 개발자의 작업 환경과 다른 서버 환경에서의 배포 이슈로 인해 자바가 인식하고 있는 현재 경로를 알아야 합니다. System.getProperty() 메서드를 사용한 현재 경로를 확인하는 방법 public class CheckDirectory { public static void main(String args[]) { String path = System.getProperty("user.dir"); ..
HTML(Hyper Text Markup Language)를 배울 때 가장 먼저 배우는 태그 중 하나가 바로 태그입니다. 태그는 anchor를 의미하는 태그로 한글로는 닻을 말합니다. 웹에서 태그 쉽게 쓰고 사용되지만, 가진 의미는 결코 가볍지 않은데요. 이번 글에서는 태그가 가지는 역할과 기능에 대해서 알아보도록 하겠습니다. 태그와 href 그리고 닻(anchor) HTML에서 태그가 가진 역할을 설명하기 위해 배와 닻(Anchor)의 그림을 만들어 보았습니다. 사람들은 본인의 상황에 따라 필요하거나 도움이 되는 정보를 찾기 위해 WWW(World Wide Web)라는 무수히 많은 서버가 연결된 네트워크를 돌아다닙니다. 이때 바다 위(네트워크)를 떠다니는 배(사용자)가 정박할 수 있도록 좌표(주소 혹은..
이번에는 HTML의 element 중에서 form에 대해 알아보려고 합니다. form은 화면을 개발할 때 div만큼 많이 사용하는 요소 중에 하나입니다. 바로 데이터를 전송하는 데에 있어서 form이 가진 역할이 있기 때문인데요. form이 가진 의미(Semantic)를 생각해본다면 당연한 이야기입니다. 그러면 본격적으로 form을 이해하고 사용하는 방법에 대해 알아보도록 하겠습니다. HTML의 일반 요소와 Form의 차이 Name: E-mail: Message: HTML의 form은 무엇일까요? 위에서 제시한 코드를 보았을 때 HTML에서 사용되는 기존 요소들과 form의 차이점은 없습니다. 오히려 사용법이 다르지 않기 때문에 차이를 알 수가 없습니다. HTML의 일반 요소와 form의 가장 큰 차이점..
스프링 부트(Spring Boot)로 프로젝트를 만들면서 JSP를 사용해야 하는 경우는 어떤 경우일까요? 바로 레거시 웹 프로젝트를 스프링 기반으로 업그레이드(변경) 해야 하는 경우입니다. 예전에 자바로 만들어진 웹 프로젝트들은 Thymeleaf, Velocity와 같은 템플릿 엔진을 사용하지 않고 JSP(Java Server Page)로 만든 경우도 흔합니다. 이러한 이유로 최신의 기술(스프링 혹은 스프링 부트)을 사용하려고 한다면 스프링 부트에 JSP를 사용할 수 있도록 설정을 해주어야 합니다. JSP를 사용하는 스프링 부트 (Spring Boot) 프로젝트 만들기 현재 스프링 부트에서 추천하는 템플릿 엔진은 Thymeleaf, Freemarker, Mustache 등입니다. 그래서 손쉽게 몇 번의 ..
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를 적용한 일을 수행하는 시점을 시각화한 내용입니다. 처리해야 할 일이 생..
자바스크립트 ES6에서 새롭게 추가된 내용 중 화살표 함수(arrow function)는 함수를 단축해서 사용하는 방법으로 유용한 문법입니다. 함수를 단축해서 사용하는 문법이 화살표 함수라고 말했지만, 사실 화살표 함수(arrow function)가 일반 함수(function)와는 결을 달리 합니다. 그럼 오늘은 자바스크립트 ES6에 새롭게 추가된 화살표 함수를 알아보도록 하겠습니다. 화살표 함수를 선언하는 방법 화살표 함수는 일반 함수와 다른 점이 몇 가지 있습니다. 대표적으로는 선언하는 방법과 this의 범위입니다. 오늘은 먼저 화살표 함수를 선언하는 방법을 알아보겠습니다. function fn1() { return 'Hello World!' } const arrowFn1 = () => 'Hello ..
화면을 개발할 때 자주 나오는 구성 요소 중 하나가 바로 모달(Modal) 창입니다. 팝업(Popup) 창과 약간 혼동해서 쓰는 경향이 있기는 한데 Modal과 Popup는 개념이 다릅니다. 팝업(Popup)은 현재 화면에 다른 화면을 하나의 창(Browser)으로 보여주는 기능이고, 모달(Modal)은 화면 위에 하나의 작은 화면을 더 만들어 부가적인 일들을 처리할 수 있게 만드는 기능입니다. 모달은 Winform에서 말하는 Dialog와 같은 개념이기도 합니다. 오늘은 자바스크립트를 사용해서 모달 창을 만드는 방법을 알아보도록 하겠습니다. 자바스크립트로 모달(Modal) 만들기 Modal Modal 띄우기 먼저 CSS를 사용해서 Modal이 되는 대상의 position을 absoulte로 설정하고, ..
자바스크립트에서 제공하는 기본 자료 구조(Struct) 중에 가장 많이 쓰이고 잘 사용하면 좋은 녀석은 배열(Array)입니다. 배열의 기능 중 꼭 알아야 할 몇 가지 기능이 있는데, 바로 map(), filter(), reduce()입니다. 이미 이전에 map(), filter(), reduce()의 정의와 활용 방법에 대해 글을 올렸지만, 다시 한번 더 정리해보려고 합니다. 자바스크립트의 발전이 있기 이전에 배열을 잘 사용하기 위해서는 lodash, underscore와 같은 라이브러리를 사용했습니다. map(), filter(), reduce()와 같은 기능을 포함해 자료 구조를 편리하게 사용하는 기능들을 제공해주었기 때문입니다. 지금의 모던한 자바스크립트는 인기 있는 여러 가지의 라이브러리의 장점..