본문 바로가기

오픈소스

[Spring] 스프링 트렌젝션 사용 중 에러 해결 - TroubleShooting org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from URL location [classpath:/config/mybatis-context.xml] Offending resource: ServletContext resource [/WEB-INF/spring/appServlet/servlet-context.xml]; nested exception is org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem.. 더보기
[Spring] JNDI 설정법 및 테스트 JNDI를 통해 Spring에서 데이터베이스의 연결을 외부 리소스인 톰캣으로 바인딩 시키는 방법에 대해 설명하도록 하겠습니다. JNDI 는 자바 네이밍 / 디렉토리 인터페이스인데 J2EE 의 가장 중요한 스펙 중 하나입니다. JNDI 를 사용하는 이유는 시스템에 대해 배포후에 , 만약 데이터베이스 정보가 변경해야할 필요가 있을 경우 톰캣에 설정파일만 변경할 수 있습니다. 또한 쿼리문 조차 소스코드를 바꿀 필요없이 외부의 리소스가 존재하기 때문에 외부 리소스를 수정할 수 있어서 아주 편하고 유용한 라이브러리 입니다. 또한 JNDI 를 이용하면 하나의 웹 어플리케이션에서 여러개의 데이터 베이스를 관리할 수 있고 그로 인해 이중화 작업이 가능한 편입니다. 데이터의 손상을 막게 해주는 이중화 작업을 지원함으로써.. 더보기
[Node] 05. Promise 그리고 Async/Await 본 문서는 Node.js 디자인 패턴 바이블 을 읽고 리뷰를 남기고 있습니다. 문고들은 이 책의 일부분을 인용한 것임을 밝힙니다. Node.js 에서 콜백은 비동기 프로그래밍의 기본적인 방식이지만 개발자 친화적인 것과는 거리가 멀어 보입니다. 실제로 이전 장에서 콜백을 사용하여 다양한 제어 프름을 구현하기 위한 기술을 배웠습니다. 그리고 그것들은 우리가 해결하려는 문제에 비해서 매우 복잡하고 장황하다고 볼 수 있었습니다. 특히, 우리가 작성하는 대부분의 제어 흐름 구조는 순차적인 함수의 실행인데 이에 익숙하지 않은 개발자들에게 콜백 지옥이라는 문제를 일으키게 만듭니다. 게다가, 제대로 구현된 경우라 해도 콜백을 통한 순차적인 실행 흐름은 불필요하게 복잡하고 오류가 발생하기 쉽습니다. 또한 콜백을 사용한 .. 더보기
[Node] React regeneratorRuntime is not defined 에러 해결 - TroubleShooting 리액트 프로젝트를 진행 하던 도중 regeneratorRuntime is not defined 오류가 발생하였고 이로 인해 웹팩 전체 프로젝트가 렌더링 되지 않았습니다. es6 이상의 문법들이 es5로 문법 변환해주는 babel 을 이용하여 프로젝트가 구성 되어 있었는데 async/await 문법을 해당 regenerator를 제공하지 않아서 발생한 에러입니다. 해결 방안은 바벨의 플러그인을 설치 한 후 환경 설정 파일에 플러그인을 등록하는 것입니다. # Contents 해결 방안 # 해결 방안 먼저 아래 명령어를 이용하여 바벨 플러그인을 설치하도록 합니다. npm install @babel/plugin-transform-runtime -D 바벨 설정 파일에 아래 코드를 넣습니다. "plugins": [.. 더보기
[Node] Babel Preset, Babelrc 리액트를 공부하는 도중에 설치된 Babel 은 리액트 프로젝트를 이용할 때 자연스럽게 라이브러리가 추가되었습니다. 이 라이브러리가 무엇인지 부터 파악하는 것이 급했었던 저는 Babel은 es6 버전을 사용하는 리액트의 경우 브라우저 별로 지원하지 않는 함수들이 존재하기 때문 에 Babel을 사용한다고 파악하였습니다. 그러면 Babel을 적용하는 방법 이 궁금했었습니다. 그래서 간단하게 Babel을 파악하고 리액트에서 사용했던 Babel-preset-env와 babelrc에 대해 간략하게 소개하도록 하겠습니다. 본 문서는 웹팩을 이용한 Babel 사용법을 나타내고 있습니다. # Contents 바벨 적용 Babel-preset-env 및 babelrc # 바벨 적용 바벨을 웹팩으로 적용시키는 방법은 아주 .. 더보기
[Node] React 프로젝트를 직접 만들어보기 with Babel, Webpack 리액트는 Facebook에서 만들고 유지 관리하는 인기있는 JavaScript 라이브러리 입니다. 리액트는 웹 애플리케이션에서 뷰 레이어를 만들기 위한 포괄적인 도구들을 제공하는데 중점 을 둡니다. 리액트는 컴포넌트 개념에 초점을 맞추어 뷰의 추상화를 제공합니다. 컴포넌트는 버튼, 입력 폼, HTML div 와 같은 간단한 컨테이너 혹은 사용자 인터페이스의 다른 요소 일 수 있습니다. 개념은 특정 책임이 있는 재사용성이 높은 컴포넌트를 정의하고 구성하여 애플리케이션의 사용자 인터페이스를 구성할 수 있어야 한다는 것입니다. 이러한 리액트를 사용하기 위해서는 프로젝트를 생성하는 것이 당연지사입니다. 맨 처음 리액트 프로젝트를 생성할 때 많은 사람들은 아래의 명령어를 입력하여 간단하게 프로젝트를 생성하곤 합니.. 더보기
[Node] Webpack 쓸만한 Plugins 웹팩에서 쓸만한 플러그인을 정리해보았습니다. 웹팩을 사용하는 방법을 이해하고, config 파일을 수정하는 방법에 대한 이해가 필요합니다. 현 문서는 플러그인의 종류와 사용방법에만 알려드릴 뿐 웹팩에 사용법을 정의하지 않았습니다. 웹팩에 사용법은 다른 문서를 참고해주시기 바랍니다. 이 문서는 항시 업데이트 할 수 있음을 알려드립니다. # Contents 변수 정의 및 사용 - DefinePlugin 환경변수 정의 및 사용 - EnvironmentPlugin 최적화 - TerserPlugin # 변수 정의 및 사용 웹팩에서의 변수를 선언하여 선언된 변수를 의존된 자바스크립트 코드 에서 사용할 수 있습니다. 웹팩에서 제공하는 DefinePlugin 은 모든 자바스크립트 코드에서 접근 가능한 변수 를 선언하기.. 더보기
[Node] Webpack 설치 및 사용법 JavaScript는 웹 개발자에게 브라우저에서 직접 코드를 실행하고 동적인 대화형 웹 사이트를 구축할 수 있는 능력을 제공한다는 목표 로 탄생하였습니다. 지금까지 JavaScript는 많은 성장을 하였습니다. 처음 JavaScript가 매우 간단하고 제한된 언어 였다면 오늘날에는 거의 모든 종류의 애플리케이션을 빌드하기 위해 브라우저 외부에서도 사용할 수 있는 완전한 범용 언어 로 간주될 수 있습니다. 실제로 JavaScript는 이제 프론트엔드 애플리케이션, 엡 서버 및 모바일 애플리케이션은 물론 웨어러블 장치, 온도 조절기, 비행드론과 같은 임베디드 장치를 지원하고 있습니다. 새로운 추세에 JavaScript 개발자들은 동일한 프로젝트의 여러 환경에서 코드를 재사용하고 단순화 시킬 필요 가 있다고 .. 더보기