본문 바로가기

프로그래밍458

Kotlin - 관용구(Idioms) 프래그래밍에서 관용구(idioms)는 자주 사용하는 코딩 형태나 패턴이 되겠습니다. 보통 같은 결과를 내는 프로그램을 다른 모양으로 작성할 수 있는데, 관용구는 주로 사용되는 형태를 말합니다. 여기에는 Kotlin에서 자주 사용되어지는 관용구(idioms)를 무작위로 모아둔 내용 입니다. 1. DTO(Data Transfer Object)s 객체 만들기 data class Customer(val name: String, val email: String) 이 간단하게 선언한 Customer 클래스는 다음 기능들을 제공합니다. 코틀린의 Data class에 대해서는 다음에 자세히 알아보겠습니다. - 모든 속성에 대한 getters (var로 선언 되었을 경우 setters 도 제공) 제공합니다. - equa.. 2019. 5. 6.
Kotlin - Basic Syntax(기본 구문) (2/2) Kotlin - Basic Syntax(기본 구문) (1/2) 에서 이어집니다. 기본 구문(Syntax)에 대한 글은 말 그대로 구문(Syntax)에 대해 설명합니다. 프로그램에서 구문(Syntax)는 문법(Grammar)에 의해 정의된 프로그램의 형태, 구조 등을 말합니다. 그러므로 설명 코드내의 자세한 연산자, 예약어, 예외 등에 대한 설명은 없습니다. 이러한 자세한 내용은 나중에 알아보게 되겠습니다. 9. null이 가능한 값의 사용과 null 체크하기 null 값이 가능한 참조(reference)는 null사용 가능하다는 표시를 반드시 해야 합니다(반환 타입 뒤에 ? 를 붙입니다). 다음 함수는 문자열 str이 정수가 아닐경우 null을 반환합니다. fun parseInt(str: String):.. 2019. 4. 30.
Kotlin - Basic Syntax(기본 구문) (1/2) 이 글에서는 Kotlin(코틀린) 언어의 기본 구문에 대해서 알아봅니다. 다음글을 번역한 내용 입니다. https://kotlinlang.org/docs/reference/basic-syntax.html 1. 문장 끝의 세미콜론 Kotlin은 문장 끝에 세미콜론을 붙이지 않아도 됩니다(붙여도 됩니다). 2. 패키지 정의는 소스파일의 제일 위에 적습니다. package my.demo import java.util.* // ... 소스 파일의 위치는 패키지명의 구조와 같을 필요는 없습니다(같아도 됩니다). 컴파일된 class파일은 패키지와 같은 디렉토리 구조 내에 생성 됩니다. 3. 함수의 정의하기 다음 함수는 두 개의 Int 파라미터를 가지고, Int 타입을 반환하는 함수 입니다. fun sum(a: In.. 2019. 4. 25.
안드로이드 스튜디오 Kotlin 프로젝트 만들기 안드로이드 앱을 Kotlin 언어로 만들기 위해서 안드로이드 스튜디오 프로젝트를 만드는 방법입니다. 사용된 안드로이드 스튜디오의 버전은 3.3.2 입니다. 이 버전에서는 언어를 Java와 Kotlin 중에서 선택할 수 있도록 되어 있습니다. 1. Start a new Android Studio project를 선택합니다. 2. Phone and Table -> Empty Activity를 선택합니다. 3. 프로젝트 정보를 입력합니다.언어를 자바와 코틀린중에서 선택할 수 있습니다. - Name : HelloKotlin- Package name : com.tistory.offbyone.hellokotlin- Language : Kotlin 4. 프로젝트가 만들어 졌습니다.자동으로 만들어진 MainActivi.. 2019. 4. 6.
Visual Studio Community 2017 제거하기 오랜만에 Visual Studio Community 2017을 실행해 봤더니, 라이선스가 만료되었습니다. 라고 뜨고 "업데이트된 라이선스 확인"을 눌러도 "라이선스를 다운로드 하지 못했습니다. 네트워크 연결 상태나 프록시 설정을 확인하세요." 라고만 뜨고 실행을 할 수 없습니다. 해결할 방법을 찾지 못해서 삭제를 하려고 하니까 프로그램 추가/제거에 제거 항목이 없었습니다. 이전에 제거하려다 실패한건지도 모르겠는데, 기억이 나지 않네요. 수동으로 제거하는 방법을 찾아 봤습니다. - 다음 파일이 존재하는지 확인해 봅니다 : "%programfiles(x86)%\Microsoft Visual Studio\Installer\resources\app\layout\InstallCleanup.exe" - 만약 존재한.. 2019. 3. 30.
Eclipse에 Kotlin(코틀린) 플러그인 설치 및 간단한 프로그램 실행해보기 요즘 Kotlin(코틀린)이라는 언어가 인기가 있다고 하네요. 한번 배워보기로 했습니다. Kotlin은 IntelliJ IDE를 개발한 JetBrains에서 2011년에 공개한 프로그래밍 언어라고 합니다. 특이한 점이 JVM 기반의 언어이고, Java와 100% 상호운영이 된다고 하네요. 2017년 구글이 안드로이드의 공식언어로 Kotlin을 추가하여서 더욱 인기가 높아진것 같습니다. 일단 JVM이 있어야 하므로 JDK가 설치되어 있어야 하고, Eclipse도 설치되어 있어야 합니다. 각각 "윈도우에 JDK 8 설치하기"와 "Eclipse 설치하기"를 참고 하세요. 1. Eclipse Kotlin plugin 을 설치합니다. Eclipse를 실행하고, Help -> Eclispe Marketplace.... 2019. 3. 28.
Java Config로 Exception Resolver 설정하기 스프링프레임워크에서 Exception Resolver는 예외가 발생했을때 특정 에러페이지를 보여주고, 예외에 대해서 원하는 HTTP 응답코드를 지정할 수 있습니다. 이 예제는 "스프링프레임워크 에러페이지 만들기"에서의 xml 설정을 Java 설정으로 다시 구현해본 것입니다. 스프링프레임워크에서의 예외처리에 대한 앞의 글을 참조하세요. 글 하단에 전체 예제소스를 추가해 두었습니다. 1. Exception Resolver 설정 입니다. 웹 컨텍스트(WebContextConfiguration.java) 설정에 추가 했습니다./** * 웹 컨텍스트 설정파일 */@Configuration@EnableWebMvc@ComponentScan(basePackages = {"com.tistory.offbyone.web"}.. 2019. 3. 23.
Java Config로 메세지소스(MessageSource) 설정하기(다국어 지원) 스프링프레임워크에서 다국어지 지원을 위한 메세지소스 설정을 Java Config로 해 봅니다. 이번 예제는 "Spring Framework 메세지 국제화(다국어 지원) 사용하기" 에서의 xml 설정을 Java 클래스를 사용한 설정으로 변경한 것입니다. MessageSource의 사용법은 이글을 참조 하세요. 전체 예제소스는 글의 끝에 첨부해 두었습니다. 1. 메세지소스를 생성하는 설정 클래스를 작성합니다. MessageSource 와 언어 변경에 사용될 Locale Resolver를 생성합니다. 여기서는 언어정보를 세션에 저장하도록 SessionResolver를 생성합니다. package com.tistory.offbyone.init; import org.springframework.context.ann.. 2019. 3. 19.
스프링프레임워크 Java config로 MyBatis 사용하기 스프링프레임워크에 MyBatis + MySQL(MairaDB) 환경을 Java Config로 구성해 봅니다. 앞의 글 "Maven 웹 프로젝트에 스프링프레임워크 적용하기"에 추가하여 구성합니다. "스프링 프레임웍에서 MyBatis, Oracle 사용하기"에서의 xml 설정을 Java Config로 옮겨본 것입니다. 데이터베이스는 Oracle 대신에 MariaDB를 사용했습니다. 전체 소스는 글 하단에 첨부 했습니다. 1. pom.xml 파일에 필요한 의존성을 추가합니다. org.springframework spring-jdbc ${org.springframework-version} javax.servlet jstl 1.2 org.apache.commons commons-dbcp2 2.6.0 mysql m.. 2019. 3. 17.
Maven 웹 프로젝트에 스프링프레임워크 적용하기 Maven 웹 프로젝트에 스프링프레임워크를 적용해 보기로 했습니다. 혼자 해보는거니 될 수 있는 한 최신 버전으로 올려봅니다. 스프링프레임워크를 설정하고 시작하는 방법은 xml 을 사용하는 방법과 Java 클래스를 사용하는 방법이 있습니다. 여기서는 클래스를 사용하는 방법으로 적용해봅니다. "스프링프레임웍의 시동" 을 읽어보시면 도움이 되실것입니다. 앞의 "Maven 웹 프로젝트 서블릿 3.1로 업그레이드 하기" 에서 만든 예제에 추가해서 작성합니다. 전체소스는 글 하단에 추가해 두었으니 참고하시가 바랍니다. 1. pom.xml 파일에 프로퍼티를 추가합니다. 프로퍼티는 자주 사용하는 값을 미리 정의해두는 방법입니다. Java 버전은 1.8을 사용하고, 스프링프레임워크 5.1.5.RELEASE 버전을 사용.. 2019. 3. 13.
Maven 웹 프로젝트 서블릿 3.1로 업그레이드 하기 앞에서 작성한 "Eclipse에서 Maven 웹 프로젝트 만들기"는 기본 Maven 템플릿을 사용하는데 JDK 1.5와 서블릿 2.3으로 작성이 됩니다. 이것을 JDK 1.8에 서블릿 3.1 로 올려 봅니다. 1. JDK를 1.8로 변경합니다. 기존의 JDK 1.5를 제거하고 JDK 1.8을 추가합니다. JDK의 추가는 Preferences의 Installed JREs에서 추가해 두면 됩니다. 여러 버전의 JDK를 설치해 둘 수 있습니다. 컴파일러 설정을 1.8로 변경합니다. 프로젝트의 Preferences의 Java Compiler에서 "Enable project specific settings" 를 체크하고 "Use compliance from execution environment 'JavaSE-1.. 2019. 3. 10.
Eclipse에서 Maven 웹 프로젝트 만들기 Eclipse에서 Maven 템플릿을 이용해서 웹 프로젝트를 만드는 방법을 알아 봅니다. 만들어보면 스프링프레임웍을 사용하는 STS 나 전자정부프레임웍의 프로젝트 구조가 Maven 웹 프로젝트 구조와 유사하다는 것을 알 수 있을 것입니다. 1. 메뉴의 File -> New -> Project... 에서 Maven Project를 선택합니다. 2. 프로젝트의 저장위치는 기본값을 사용합니다.- Use default Workspace location 을 체크합니다. 3. 메이븐 템플릿중에서 maven-archetype-webapp을 선택합니다. 4. Maven 기본정보를 입력합니다.자신에게 맞는 정보를 입력하면 됩니다. 보통 Group Id는 도메인을 사용하고, Artifact Id는 프로젝트명을 사용합니다... 2019. 3. 6.
이클립스가 자꾸 멈춘다. AppXray와 "populate auto detected configs" AppXray 검사 와 "populate auto detected configs" 도중에 이클립스가 멈춰 버리는 현상이 자주 발생합니다. 이 기능을 사용하지 않도록 설정하는 방법을 알아봅니다. 1. 이클립스가 AppXray 검사에서 자꾸 멈춰버립니다. AppXray는 OEPE(Oracle Enterprise Pack for Eclipse)에서 제공하는 웹 애플리케이션에서 jsp 파일, java 소스, 리소스번들 파일, 웹 설정 파일들을 분석하는 기술입니다. 이러한 분석 정보를 이용해서 웹 애플리케이션의 많은 레이어들에 걸쳐 파일들의 Validation, 일관성 검증 기능을 제공합니다. AppXray를 사용하지 않도록 설정하는 방법입니다. - Windows -> Preferences 창을 엽니다.- Ora.. 2019. 2. 28.
엑셀 오늘날짜 가져오기 TODAY() 함수 엑셀에서 TODAY() 함수를 사용하여 오늘 날짜를 가져올 수 있습니다. TODAY() 함수가 반환하는 값은 엑셀에서 날짜를 계산 하는데 사용되는 일련번호로 1900년 1월 1일이 일련번호 1이 되고, 매일 1씩 증가하는 값입니다. 이 값을 가진셀이 날짜서식이 되면 날짜 형식으로 표시됩니다. 사용법은 엑셀의 수식입력방법인 = 로 시작하는 식을 작성하면 됩니다. 1. 오늘날짜 가져오기 =TODAY() 결과)2019-02-26 2. 날짜를 더하거나 뺄 수 있습니다. =TODAY() + 5 결과)2019-03-3 3. 년도만 가져오기 =YEAR(TODAY()) 4. 월 만 가져오기 =MONTH(TODAY()) 5. 일자 만 가져오기 =DAY(TODAY()) 6. 문자열로 주어진 특정 날짜와의 차이 일수 구하기.. 2019. 2. 26.
Jsoup을 사용한 화이트 리스트 방식의 XSS(Cross-Site Script)공격 방어 웹 페이지에서 CKEditor 와 같은 HTML에디터를 이용해서 데이터를 입력받아 보여줄때 고려해야 할것으로 XSS(Cross-Site Script)공격이 있습니다. 글을 작성하는 사용자가 HTML을 사용할 수 있도록 허용하게 되면 자바스크립트도 사용할 수 있게 되므로 XSS공격을 쉽게 할 수 있는 환경이 됩니다. HTML코드에서 자바스크립트를 실행할 수 있는 방법은 수도 없이 많으므로 "+ ""; String safeDoc = Jsoup.clean(htmlDoc, Whitelist.basic()); System.out.println(safeDoc); 결과)TEST 화이트 리스트의 basic() 메소드에서는 다음 태그와 속성을 허용합니다. public static Whitelist basic() { re.. 2019. 2. 26.