Java reflection과 객체구조탐색

Java reflection과 객체구조탐색
 복잡한 구조를 가진 객체에서 문자열을 찾아 치환해야 하는 문제상황을 Java에서 제공하는 리플랙션(reflection) API를 이용하여 해결해 보았다. 문제상황 고객사인 OO보험은 소프트웨어 품질과 관련된 활동이 비교적 엄격한 편인데, 품질 기준을 통과해야만 운영서버로의 이관이 허용된다. 시스템 개발이 마무리 단계에 이를 무렵 시스템의 보안심의를 통과하라는 요청이 왔다. 지적된 사항은 XSS(cross-site scripting) 취약점 보완이었다. 사용자 입력 값에 악성 스크립트를 동작시킬 수 있는 문자가 포함된 경우 안전한 문자로...
read more

설계 노하우: UI 컴포넌트

설계 노하우: UI 컴포넌트
들어가며… UI를 개발해 본 모든 개발자들이 느끼겠지만 UI 개발은 다른 분야의 개발보다 복잡하고 까다롭습니다. 수년간 여러 어플리케이션을 개발하며 이러한 문제를 접하였고 많은 생각을 가지게 되었습니다. UI 분야의 개발이 왜 까다로운지 또한 그 해결방안은 무엇인지에 대해 논하고자 합니다. 이 문제는 최근에 참여한 프로젝트의 예를 들어 설명하겠습니다. 최근 POI를 관리하는 관리툴 개발에 참여하였습니다. POI(Point Of Interest)란 GPS상의 좌표를 의미하는데 우리말로는 ’흥미있는 지점’ 으로 해석할...
read more

AngularJS: Scope와 데이터 바인딩[ $apply, $watch ]

AngularJS: Scope와 데이터 바인딩[ $apply, $watch ]
오늘의 주제는 AngularJS에서 가장 기초가 되고 중요한 scope입니다. 앞선 사용자정의 디렉티브 생성시에도 scope 옵션을 설정하는것을 볼 수 있듯이 AngularJS를 접하게 되면 가장 많이 접하게되는것이 scope입니다. 그리고 scope와 깊은 관계가 있으며 AngularJS를 강력한 도구로 만들어주는 양방향 데이터바인딩에 대해 알아봅니다.   1. Scope AngularJS에서 Scope는 컨트롤러나 디렉티브의 유효범위내의 저장공간이라고 해석하는것이 이해하기 쉽습니다. 뷰는 scope를 통해  컨트롤러 내부에 정의된...
read more

CSS : float 속성

CSS : float 속성
CSS float 속성은 웹 디자이너들이 웹 페이지 레이아웃을 설계하는 과정에서 많이 사용하는 속성입니다. 하지만 속성을 구현하고 사용하는 방식이 다양해 많은 웹 디자이너들이 어려움을 겪고, 브라우저마다 지원하는 방식이 달라 문제가 생기는 경우도 많았습니다. 그래서 float 속성을 정확히 이해하고 사용할 수 있게 float 속성과 clear 속성에 대해서 살펴보겠습니다.   float 속성이란? 복잡한 형태의 레이아웃을 구성하는 데 필요한 핵심 속성인 float 속성은 특정 요소를 떠 있게 하는 것입니다. 여기서 떠 있다 는 의미는...
read more

CSS : 반응형 웹(Responsive Web)

CSS : 반응형 웹(Responsive Web)
태블릿 PC, 스마트 폰 등 모바일 기기의 이용이 늘어나면서 모바일 웹에 대한 관심이 많아 지고 있습니다. 사용자들은 같은 웹 컨텐츠를 이용 하더라도 PC와 모바일 기기에서 동등한 서비스를 제공 받기를 원합니다. 이에따라 화면 크기의 제약사항과 단말기의 기능 속성에 따른 고려사항이 생겼지만 그렇다고 여러 종류의 웹(url)을 만들 수 없습니다. 그에 대한 대응 방안으로 반응형 웹이 뜨고있습니다.   반응형 웹(Responsive Web) 그렇다면 반응형 웹이란 무엇일까요? 쉽게 말해 디바이스 종류에 따라 웹페이지의 크기가 자동적으로...
read more

CSS: 선택자(Selector) 이해

CSS: 선택자(Selector) 이해
웹 표준은 이제 더 이상 무시할 수 없는 키워드입니다. World Wide Web(WWW)의 의미대로 가능한 많은 사람이 웹을 이용하기 위해서는, 모든 브라우저에서 ‘똑같이 보이는 것’이 아니라 ‘각 브라우저에 알맞게 보이는 것’이 중요하기 때문입니다. 그래서 웹 표준에서는 구조(Constructure)와 표현(Presentation)과 행위(Behavior)를 각각 분리해서 개발하기를 권유합니다. 이렇게 하면, 각 사용자는 구조화 된 마크업에 따라 다양한 디자인을 제공받을 수 있기 때문입니다. 뿐만 아니라 사이트의 로딩속도도 빨라지고 개발과...
read more

HTML : 폼(form) 이해

HTML : 폼(form) 이해
폼은 알게 모르게 웹에서 많이 사용합니다. 사용자 의견이나 정보를 알기 위해 입력할 큰 틀을 만드는 데 사용되기 때문입니다. 폼은 입력된 데이터를 한 번에 서버로 전송합니다. 전송한 데이터는 웹 서버가 처리하고, 결과에 따른 또 다른 웹 페이지를 보여줍니다. 이번 글에서 우리가 잘 모르는 폼의 내부적인 동작과정부터 폼의 큰 틀을 구성하는 엘리먼트에 대해 알아보겠습니다.   1. 폼 태그 동작방법 폼이 있는 웹 페이지를 방문합니다. 폼 내용을 입력합니다. 폼 안에 있는 모든 데이터를 웹 서버로 보냅니다. 웹 서버는 받은 폼 데이터를...
read more

Node.js: Hello로 시작하는 Web 애플리케이션

Node.js: Hello로 시작하는 Web 애플리케이션
2009년 Ryan Dahl이 발표한 Node.js 는 자바스크립트로 서버 애플리케이션을 구현할 수 있게 해 주는 서버 플랫폼입니다. C나 Java 언어가 주도하던 기존의 기업형 서버 환경에서 이제 자바스크립트가 하나의 영역으로 자리 잡아가고 있습니다. Node.js 덕분에 자바스크립트를 잘 구사하는 UI 개발자들도 서버 영역에 진입할 수 있게 된 것이죠. 그러나 자바스크립트 언어만 능숙하다고 당장 Node 애플리케이션을 구현할 수는 없습니다. Node.js 개발자는 이벤트 기반의 비동기 프로그램을 이해해야 하며 Node.js 및 주변 인프라에서...
read more

JavaScript: 네임스페이스 패턴(Namespace Pattern) 바로 알기

JavaScript: 네임스페이스 패턴(Namespace Pattern) 바로 알기
프로그래밍 언어의 장점을 활용해서 사용하는 것만큼, 단점을 보완하는 것도 중요한 일입니다. 단점을 무시한 채 장점만을 활용한 코드는 효율성과 안정성을 보장하기 힘들기 때문입니다. 전역변수를 기초로 하는 JavaScript의 단점 때문에, 전역 네임스페이스(Global Namespace)의 오염 문제는 많이 신경쓰이는 부분입니다. 여러 스크립트가 한 페이지 안에 함께 있는 소스코드에서는 전역 변수가 많아질 수록 이름이 겹칠 우려가 있습니다. 뿐만 아니라 어느 곳에서든 접근할 수 있으므로 소스코드의 신뢰성을 떨어뜨릴 수 있습니다. 이런 단점을...
read more

JavaScript : 프로토타입(prototype) 이해

JavaScript : 프로토타입(prototype) 이해
JavaScript는 클래스라는 개념이 없습니다. 그래서 기존의 객체를 복사하여(cloning) 새로운 객체를 생성하는 프로토타입 기반의 언어입니다. 프로토타입 기반 언어는 객체 원형인 프로토타입을 이용하여 새로운 객체를 만들어냅니다. 이렇게 생성된 객체 역시 또 다른 객체의 원형이 될 수 있습니다. 프로토타입은 객체를 확장하고 객체 지향적인 프로그래밍을 할 수 있게 해줍니다. 프로토타입은 크게 두 가지로 해석됩니다. 프로토타입 객체를 참조하는 prototype 속성과 객체 멤버인 __proto__ 속성이 참조하는 숨은 링크가 있습니다. 이 둘의...
read more

« 이전글