본문 바로가기

분류 전체보기487

안드로이드 UI 만들기 ConstraintLayout 기본 사용법 화면내에 위젯을 배치하기 위해서 사용되는 것이 레이아웃 매니저 입니다. 전에는 Linear Layout, Relative Layout 등이 사용되었는데, 이제는 기본 레이아웃 매니저가 ConstraintLayout 입니다. 이러한 레이아웃 매니저가 사용되는 이유는 서로 다른 화면 크기를 가지는 기계들에서는 동일한 모양의 화면 구성을 유지하기 위하여 위젯들을 화면에서 상대적으로 배치하도록 해주는 것입니다. 안드로이드 스튜디오로 프로젝트를 생성하면 기본 레이아웃 매니저가 이제는 ConstraintLayout 입니다. 이번 글에서는 위젯의 크기를 지정하는 방법과 정렬하는 방법을 알아 보겠습니다. 1. 위젯의 크기 설정 - 리사이즈 핸들(Resize Handle) 이용하여 설정하기위젯을 클릭하면 네 모서리에 사.. 2018. 4. 20.
iPhone 5s iOS 11.2.1 업데이트 iOS11.2.1 업데이트가 나와서 업데이트 했습니다. iPhone 5s 에서는 용량이 57.6 MB 입니다. 수정된 내용을 홈앱에서 공유된 사용자의 원격 접근이 비활성화 되는 문제를 포함한 오류가 수정이 되었다고 합니다. 또한 iPhone X, iPhone 8, iPhone 8 Plus 사용자를 위한 카메라 흐림 버그 수정 사항이 포함되어 있다고 합니다. 애플 사이트에 나와 있는 보안 업데이트도 있는데 내용은 다음과 URL에서 확인할 수 있습니다. https://support.apple.com/ko-kr/HT208357 - 원격 공격자가 응용 프로그램 상태를 예기치 않게 변하끼 만들 수 있는 보안 취약점이 업데이트 되었다고 합니다. 자세한 내요을 설명이 없었습니다. 다른 사이트들을 보니까 공격자가 홈킷.. 2018. 4. 20.
Tomcat에 X-Frame-Options 헤더와 X-Content-Type-Options 헤더 적용하기 X-Frame-Options 헤더는 FrameSet이나 iframe 등에 의한 클릭재킹에 대한 보호를 제공하며 2009년에 IE8에서 추가되었고 얼마 후 다른 브라우저들에도 채택되었습니다. 이 헤더의 값은 DENY, SAMEORIGIN, ALLOW-FROM 중에 하나를 가지며 각각 외부 사이트에 대한 프레임 금지, 같은 사이트만 허용, 특정 사이트만 허용의 의미를 가집니다. "X-Content-Type-Options: nosniff" 응답 헤더를 보내면 브라우저는 script 및 style sheet요소의 MIME 형식이 잘못된 경우 응답을 거부합니다. 이는 MIME 형식 혼동을 기반으로 하는 공격을 차단하기 위한 보안 기능입니다. 보통 브라우저는 서버로부터 다운받은 이미지 등의 내용을 분석하여 MIME.. 2018. 4. 20.
오라클 문자열에서 숫자만 남기고 다른 문자 제거하기 오라클 데이터베이스에서 전화 번호와 같은 값에서 숫자만 남기고 ), - 등의 다른 문자는 제거하는 방법을 알아 봅니다. 1. 정규식을 사용하는 방법 REGEXP_REPLACE(source_char, pattern) 함수를 사용하는 방법 입니다. -- 전화번호에서 숫자외의 문자를 제거합니다.SELECT REGEXP_REPLACE('010-1234-5678', '[^0-9]+') FROM DUAL; -- 숫자를 자리수로 끊어서 분리합니다.SELECT REGEXP_REPLACE('01012345678','([[:digit:]]{3})\.([[:digit:]]{3})\.([[:digit:]]{4})','\1-\2-\3') FROM DUAL; 2. TRANSLATE(expr, from_string, to_stri.. 2018. 4. 20.
오라클 데이터베이스 링크 생성하기 오라클 데이터베이스는 서버들끼리 데이터베이스 링크를 만들어 하나의 데이터베이스 처럼 사용하는 것이 가능합니다. 데이터베이스 링크에는 모든 사용자가 사용할 수있는 PUBLIC 데이터베이스 링크와 링크를 만든 계정에서만 사용할 수 있는 PRIVATE 링크가 있습니다. 데이터베이스 링크를 만들고 사용하는 방법을 알아보겠습니다. 1. 데이터베이스 링크 생성 권한 SYSTEM 계정으로 로그인하여 권한을 줍니다. -- TESTDBADM 계정이 PRIVATE 데이터베이스 링크를 만들 수 있게 권한을 줌. -- PRIVATE 링크는 CREATE 권한만으로 생성과 삭제를 할 수 있습니다. GRANT CREATE DATABASE LINK TO TESTDBADM; -- TESTDBADM 계정이 PUBLIC 데이터베이스 링크.. 2018. 4. 20.
iPhone 5S 에 iOS 11.2 업데이트 iOS 11.2 를 업데이트했습니다. iPhone 8과 iPhone X 가 나오고 나서 iOS 업데이트가 아주 잦아진 느낌입니다. iPhone 5S에 iOS 11.2의 용량은 330.5MB 입니다. 업데이트 된 내용을 다음과 같다고 합니다. - Apple Pay Cash 기능이 추가되어 개인간 Apple Pay 로 결제가 가능하다고 하는데 미국에서만 되는 기능입니다.- 호환 가능한 타사 액세서리를 사용하여 iPhone8, iPhone 8 Plus 및 iPhone X에서 무선으로 빠르게 충전 가능- 3가지의 새로운 iPhone X용 Live 배경화면 출시- 비디오 카메라 안정성 향상- 팟캐스트에서 동일한 프로그램의 다음 에페소드를 자동 재생 가능- HealthKit에서 다운힐 스로 스포츠 거리를 데이터 유.. 2018. 4. 20.
애플워치 3 watchOS 4.2 업데이트 watchOS 4.2로 업데이트 했습니다. 구입하자마자 4.1로 업데이트하고 3주 만에 다시 업데이트 입니다. 용량은 149MB 이고 설치에 걸린시간은 1시간 20분 정도 걸린것 같습니다. 워치 충전시에 주의사항은 와치가 충전기에 연결되어 있어야하고, 최소 50% 이상 충전되어 있어야 한다고 합니다. 하지만 설치를 36%에서 충전기 연결해두고 진행했습니다. 다운받는 동안에 50%를 넘어가서 문제가 없었던것 같습니다. 이 업데이트에 포함된 새로운 기능, 기능 향상 및 오류 수정은 다음과 같습니다. - 홈 앱에 스프링클러 및 수도꼭지에 대한 HomeKit 지원을 추가함- Apple Watch Series 3에서 타사 앱의 새로운 운동 종류를 지원하여 다운힐 스노 스포츠를 실시할 때 거리, 평균 속도, 하강 .. 2018. 4. 20.
Apple Watch 3 GPS 42mm 스페이스 그레이 3주 사용기 3주전 Apple Watch 3 GPS 42mm 스페이스 그레이 알루미늄 케이스와 블랙 스포츠 밴드를 구입하게 되었습니다. 딱히 이걸 사려고 했던것은 아닌데, 정신을 차리고 보니 Apple Watch 가 손에 들려 있었습니다. 국내에는 아직 GPS 버전만 출시되고, CELLULAR 버전은 출시 되지 않았습니다. CELLULAR 버전의 오류 때문에 국내 통신사에서 아직 들이지 않기 때문이라는 예기들이 있더군요. 하지만 출시가 되었더라도 GPS 버전을 구입했을 것입니다. 사용하고 있는 폰이 iPhone 5s 인데, 여기서는 GPS 버전만 지원합니다. WATCH 3 CELLULAR 버전을 사용하려면 iPhone 6 이상이 있어야 합니다. 그래서 CELLULAR 버전은 줘도 못쓰는것 입니다. Stainless .. 2018. 4. 20.
자바스크립트 주기적인 실행(setInterval, setTimeout) 자바스크립트로 주기적인 작업을 실행하기 위해서 setInterval과 setTimeout 메소드를 사용할 수 있습니다. 두 가지는 비숫하지만 중요한 차이점을 가집니다. - setInterval 함수 : 일정한 시간 간격으로 작업을 수행하기 위해서 사용합니다.clearInterval 함수를 사용하여 중지할 수 있습니다. 주의할 점은 일정한 시간 간격으로 실행되는 작업이 그 시간 간격보다 오래걸릴 경우 문제가 발생할 수 있습니다. - setTimeout 함수 : 일정한 시간 후에 작업을 한번 실행합니다. 보통 재귀적 호출을 사용하여 작업을 반복합니다. 기본적으로 setInterval 과는 달리 지정된 시간을 기다린후 작업을 수행하고, 다시 일정한 시간을 기다린후 작업을 수행하는 방식입니다. 지정된 시간 사이.. 2018. 4. 20.
Oracle 테이블 및 프로시저 생성 스크립트 추출하기 데이터베이스를 다루는데 있어서 가끔 GUI 툴을 쓸 수 없는 경우가 있습니다. 또한 프로시저 같은 경우 아주 큰 용량의 경우 exp 를 통해서 덤프를 받은 파일로 복구를 할 때 제대로 생성이 안되는 경우도 있습니다. 이렇게 좋지 않은 환경이 겹칠 경우 부득이하게 SQL*Plus를 사용해서 필요한 곳을 부분적으로 덤프 하게 됩니다. 테이블이나 프로시저의 생성 스크립트를 추출하기 위해서 DBMS_METADATA 패키지의 GET_DDL 함수를 사용할 수 있습니다. 1. 생성 스크립트 확인 - 테이블명이 'TB_BOARD' 인 테이블의 생성 스크립트를 확인합니다. SELECT DBMS_METADATA.GET_DDL('TABLE','TB_BOARD') FROM DUAL; - 인덱스의 이름이 'IX_BOARD' 인.. 2018. 4. 20.
Oracle Sequence 만들기 (일련번호 생성하기) 데이터베이스에서 일련번호를 생성하는 것은 동시성 문제가 발생할 수 있어 간단한 작업이 아닙니다. 그래서 대부분의 데이터베이스에서는 일련번호 생성을 간단히 처리할 수 있는 기능들을 제공해 주고 있습니다. MS-SQL 서버에서는 컬럼에 identify 속성을 지정할 수 있고, MySQL 에서는 컬럼에 auto_increment 속성을 지정할 수 있습니다. Oracle에서는 테이블 속성으로 제공하지 않고 별도의 Sequence 객체를 생성해서 이용할 수 있습니다. 이러한 데이터베이스에서 제공하는 기능을 사용하면 동시성 문제에 신경을 쓰지 않고 간단히 처리할 수 있지만, 하나의 데이터베이스에 종속되는 단점도 있습니다. 오라클에서는 일련번호를 생성할 수 있는 Sequece 사용법을 알아보겠습니다. 1. 시퀀스 생.. 2018. 4. 20.
Oracle에서 테이블 복사하기 테이블 구조를 수정하거나 데이터의 조정이 필요해서 원본 테이블을 복사하여 작업하는 경우가 가끔 있습니다. 이럴 경우 사용할 수 있는 방법을 알아보겠습니다. 1. 임시 테이블 생성과 동시에 복사하기 TB_BOARD 라는 이름의 테이블을 TB_BOARD_TMP 라는 동일한 구조의 테이블을 만들고 데이터를 복사하는 방법입니다. CREATE TABLE TB_BOARD_TMP AS SELECT * FROM TB_BOARD; 이 명령으로 임시 테이블의 생성과 데이터의 복사를 동시에 할 수 있습니다. 이 때 키와 인덱스는 생성되어지지 않습니다. 필요하다면 별도로 생성하여야 합니다. 2. 임시 테이블을 따로 만들고 데이터를 복사하는 방법입니다. 2-1. 테이블 구조가 동일할 때 INSERT INTO TB_BOARD_T.. 2018. 4. 20.
Java 에서 난수(random number) 생성하기 Java에서 난수를 발생시키는 방법은 두 가지가 있습니다. java.lang.Math 클래스의 정적메소드인 random() 메소드를 사용하는 방법과 java.util.Random 클래스를 사용하는 방법 입니다. 발생되어지는 난수는 Pseudo Random Number(의사 난수) 입니다. 이상적인 난수에 가까운 난수 입니다. 난수를 발생시킬때는 seed값에 대한 이해가 필요합니다. seed 값이란 간단히 말해서 난수를 발생하는데 기준이 되는 값이라고 생각하면 될것 같습니다. 예로 난수를 발생하는 객체 두 개를 동일한 seed로 생성하면 두 객체가 발생하는 난수는 같은 값이 동일한 순서로 발생되어 집니다. 동일한 조건하의 반복되는 시뮬레이션 등에 사용되어질 수 있겠습니다. 대부분의 경우는 현재 시간등 계속.. 2018. 4. 20.
스프링 시큐리티에서 중복 로그인 방지 및 세션 고정 공격 방지 스프링 시큐리티를 사용하면 동일한 아이디로 중복 로그인 방지 하는것을 간단히 구현할 수 있습니다. 또한 세션 고정 공격을 기본적으로 방어하도록 되어 있습니다. 이 두 가지를 같이 이야기 하는 이유는 두 가지가 같은 태그로 설정이 되기 때문입니다. 먼저 중복 로그인을 방지하는 방법을 알아보겠습니다. 예제 소스는 글 하단에 첨부하여 두었습니다. 이 예제는 "스프링프레임웍 - Spring Security(1) : 기본 설정" 글의 예제를 기본으로 하여 테스트 하였습니다. 스프링 시큐리티 설정파일인 /src/main/webapp/WEB-INF/spring/security-context.xml 파일의 부분에 다음을 추가합니다. 태그를 이용해서 중복 로그인 방지를 설정합니다. 각 속성의 의미는 다음과 같습니다. -.. 2018. 4. 20.
jQuery .load() 메소드 - 페이지 내용 동적 교체 웹 페이지의 내용을 동적으로 교체하기 위해서 Ajax로 서버에서 데이터 json 형식으로 받아 HTML 요소를 생성하여 페이지내의 원하는 위치의 내용을 바꾸는 작업을 많이 합니다. jQuery의 .load() 메소드는 주어진 URL로부터 HTML 데이트를 받에서 jQuery 셀렉터로 선택된 위치에 넣어 줌으로써 동적으로 페이지의 내용을 교체하는 작업을 간단하게 처리할 수 있도록 해줍니다. 아래 코드는 간단한 사용법을 보여주고 있습니다. 페이지내에서 아이디(id)가 "result" 인 요소를 선택하고 그 요소의 내용을 "load/test.php" 페이지가 반환하는 내용으로 채웁니다. jQuery .load() 메소드 사용법은 다음과 같습니다. 세 가지 인자를 가질 수 있습니다. .load( url [, d.. 2018. 4. 20.