이전 글에서 추가된 Icon Feature를 Drag and Drop 하는 예제입니다. [OpenLayers] Custom Icon Feature 추가 이전 글 [OpenLayers] Static Image 에서 설정한 Static Image 위에 주어진 위치의 아이콘을 표시하는 예제입니다. OpenLayers 3 버전을 사용하였습니다. Script 기존 코드에서 addVectorLayer 함수와 styles 객체가 추 hgko-dev.tistory.com Script ol.interaction.Modify 을 이용해서 Drag and Drop 기능을 구현합니다. modifystart, modifyend 이벤트를 등록하여 Icon을 선택하거나 이동 시 커서가 변경되도록 하였습니다. const styles..
이전 글에서 설정한 Static Image 위에 주어진 위치의 아이콘을 표시하는 예제입니다. [OpenLayers] Static Image OpenLayers 사용하여 OSM(OpenStreetMap)으로 지도를 가시화하는 것이 아닌 Static Image를 Layer Source로 사용하여 이미지를 가시화하는 예제입니다. OpenLayers 3 버전을 사용하였습니다. HTML Script // main.js // 지 hgko-dev.tistory.com OpenLayers 3 버전을 사용하였습니다. Script 기존 코드에서 addVectorLayer 함수와 styles 객체가 추가되었습니다. 먼저 ol.style.Icon 을 이용해서 아이콘 경로를 설정합니다. const styles = { icon:..
OpenLayers 사용하여 OSM(OpenStreetMap)으로 지도를 가시화하는 것이 아닌 Static Image를 Layer Source로 사용하여 이미지를 가시화하는 예제입니다. OpenLayers 3 버전을 사용하였습니다. HTML Script // main.js // 지도 정보 const mapInfo = { map: null, extent: null, projection: null, setProjection: function (w, h) { this.extent = [0, 0, w, h]; this.projection = new ol.proj.Projection({ code: 'pixel', units: 'pixels', extent: this.extent, }); }, init: funct..
Iteration 람다(Lambda)의 forEach 함수를 사용하는 예제입니다. 사용 예 List friends = Arrays.asList("Brian", "Nate", "Neal", "Raju", "Sara", "Scott"); 기존 for 문 for (int i = 0; i < friends.size(); i++) { System.out.println(friends.get(i)); } for (String name : friends) { System.out.println(name); } # 결과 Brian Nate Neal Raju Sara Scott forEach 사용 forEach 함수를 사용한 예제입니다. 첫 번째부터 마지막까지 점점 코드가 간략해지는 것을 볼 수 있습니다. // 1) fri..
스트림(stream) Java 8 버전부터 추가되었고 특정 요소 형식으로 이루어진 연속된 값에 대한 집합 인터페이스를 제공합니다. filter, map, reduce, sort, find 등의 함수들을 제공합니다. 사용 예 @Data @NoArgsConstructor @AllArgsConstructor public class Person { private String name; private String age; } List people = Arrays.asList( new Person("Eden", 20), new Person("Ko", 21), new Person("Lee", 21), new Person("Kang", 25) ); Mutable 21살 이상의 사람을 찾는 코드입니다. filter를 사..
람다(Lamdba) 란 람다식, 또는 람다 함수라 부른다. 프로그래밍 언어에서 사용되는 개념으로, 익명 함수(Anonymous functions)를 지칭하는 용어이다. 나무위키 예제 Map에서 특정한 값을 가지는 entry에 대해서 삭제하는 코드입니다. Map map = new HashMap(); map.put("XXX", "111"); map.put("YYY", "222"); map.put("ZZZ", "333"); map.put("AAA", "444"); map.put("BBB", "555"); map.entrySet().stream() .filter(entry -> entry.getValue().equals("111")) .map(entry -> entry.getKey()) .collect(Coll..
for 문 int startIndex = 0; long endIndex = 2000000000L; long startTime = System.currentTimeMillis(); long sum = 0; for (long i = startIndex; i < endIndex; i++) { sum += i; } long processTime = System.currentTimeMillis() - startTime; System.out.println("sum : " + sum); System.out.println("process time : " + processTime + "ms"); 실행 결과입니다. sum : 1999999999000000000 process time : 11919ms Stream 사용 i..
JavaScript 에서 주민등록번호 유효성 검사 방법에 대해 알아보겠습니다. 주민등록번호란 주민등록번호는 “주민의 거주관계를 파악하고 상시로 인구의 동태를 명확히 하여 행정사무의 적정하고 간이 한 처리를 도모함”(1962년 주민등록법) 등을 목적으로 만든 일련번호로서, 개개인의 신원을 명확하게 구분하는 역할을 한다. 나무위키 내국인과 외국인 주민등록번호 유효성을 검사하는 소스코드입니다. 내국인 주민등록번호와 달리 외국인 등록번호는 뒤 7자리 숫자의 첫 숫자가 2000년 이전 출생 외국인에게는 남자는 5, 여자는 6, 2000년 이후 출생 외국인에게는 남자는 7, 여자는 8로 부여하고 있습니다. 내국인 주민등록번호 숫자는 1, 2, 3, 4 로 시작됩니다. 주민등록번호 입력 : - 검증 const Com..
Python에서 OpenCV를 사용하여 Sharpening 하는 방법에 대해 알아보겠습니다. Sharpening Sharpening 기법은 Bluring과 반대되는 개념으로, 초점이 잘 맞은 사진처럼 사물의 윤곽이 뚜렷하고 선명한 느낌이 나도록 하는 것이다. 설치 Python 에서 OpenCV 를 사용하기 위해 패키지를 설치합니다. $ pip install opencv-python 예제 원본 이미지에 여러가지의 커널을 적용하여 선명하게 표현하였습니다. import cv2 import numpy as np import matplotlib.pyplot as plt image = cv2.imread('images/lenna.png', cv2.IMREAD_GRAYSCALE) # 커널 생성(대상이 있는 픽셀을 강..
이미지를 Jcrop 라이브러리를 사용하여 자르고 Canvas 영역을 blob 형식으로 바꿔서 a Tag를 생성하여 다운로드를 시도하였습니다. 크롬에서는 잘 동작하였지만 IE에서는 동작하지 않고 에러를 발생하였습니다. 아래 코드처럼 작성하였더니 둘 다 동작하였습니다. 소스 코드 function downloadURI(blob, name) { if (window.navigator && window.navigator.msSaveOrOpenBlob) { // IE에서 동작 window.navigator.msSaveBlob(blob, name); } else { // 크롬에서 동작 var link = document.createElement('a'); link.download = name; link.href = U..