1. try-catch-resources

 - try (...) 안에 선언된 입출력 스트림 등의 리소스 객체의 'close()' 메소드를 호출해줌. 자원관리를 잘 해줌.

 - java 7 에서 추가된 기능.


2. 소스 비교

 1) 1.6 이전

FileInputStream fs = null;
try {
fs = new FileInputStream("file.txt");

} catch (IOException e) {
System.out.println(e.getMessage());
} finally {
if (fs != null) {
try {
fs.close();
} catch (IOException e1) {
System.out.println(e1.getMessage());
}
}
}

 2) 1.7 이상

  - 단, 인터페이스인 java.lang.AutoCloseable를 구현해야 사용가능함.

  - 귀찮은 finally 안에 소스를 안만들어도 된다. 

try (FileInputStream fs = new FileInputStream("file.txt");) {

} catch (IOException e) {
System.out.println(e.getMessage());
}

 - 커스텀하게 구현할 수도 있다.

public class CustomFileInputStream implements AutoCloseable {

@Override
public void close() throws Exception {

}
}

3. Close 동작 확인

 1) 정상 동작시에 Close 메소드 호출 여부 확인

(1) 샘플 소스 확인

 - 실행 시킬 Main Class

public class Sample {

public static void main(String[] args) throws Exception {

try (CustomFileInputStream cfs = new CustomFileInputStream()) {
System.out.println("Try 안에 호출 잘 됩니다.");

} catch (Exception e) {
System.out.println("에외가 발생했습니다.");

}

System.out.println("완료!");
}

}


 - Custom한 Class

/**
* Custom 메소드
*
* @author akageun
*/
public class CustomFileInputStream implements AutoCloseable {

@Override
public void close() throws Exception {
System.out.println("Close 메소드가 호출 되었습니다.");
}
}

(2) 결과



 2) 예외가 발생 했을 때 Close 메소드 호출 여부 확인

(1) 샘플 소스 확인

 - 실행 시킬 Main Class

public class Sample {

public static void main(String[] args) throws Exception {

try (CustomFileInputStream cfs = new CustomFileInputStream()) {
System.out.println("Try 안에 호출 잘 됩니다.");
throw new RuntimeException("테스트 예외 호출 ");


} catch (Exception e) {
System.out.println("에외가 발생했습니다. " + e.getMessage());

}

System.out.println("완료!");
}

}

 - Custom한 Class는 위에 Class와 동일한걸로 사용

(2) 결과

 

1. Twitter

 1) input 소스

input {  

    twitter {

        consumer_key => "CONSUMER_KEY_GOES_HERE"

        consumer_secret => "CONSUMER_SECRET_GOES_HERE"

        oauth_token => "ACCESS_TOKEN_GOES_HERE"

        oauth_token_secret => "ACCESS_TOKEN_SECRET_GOES_HERE"

        keywords => ["test","sample"]

        full_tweet => true

    }

}


 2) 참고링크

 - https://www.elastic.co/guide/en/logstash/current/plugins-inputs-twitter.html


2. Json_Line

 1) 설치

bin/logstash-plugin list json_line

./bin/logstash-plugin install logstash-codec-json_lines


 2) 소스

output {

  stdout { codec => json_lines }

}


 3) 참고링크

  - https://www.elastic.co/guide/en/logstash/current/plugins-codecs-json_lines.html#plugins-codecs-json_lines

  - https://github.com/logstash-plugins/logstash-codec-json_lines


3. RSS

 1) 설치

./logstash-plugin install logstash-input-rss


 2) 소스

input {

        rss {

                interval => 300

                url => "https://rss.itunes.apple.com/api/v1/kr/ios-apps/top-grossing/all/100/explicit.rss"

        }

}









 


1. Atom(https://atom.io/) 이란?

 - Github에서 기여한 오픈소스

 - 텍스트 에디터


2. Atom 장점

 - 오픈소스다.

 - package가 많아 확장성이 좋다. 또 package 개발이 쉽다.

 - github과 연동하기가 쉽다.

 - 여러 프로그래밍 언어 편집이 참! 쉽다.(텍스트 에디터니까??)

 - 여러 플랫폼에서(Osx, Linux, Windows) 설치가 가능하다.


 등등등~


3. windows에서 설치

 - https://atom.io/ 에서 "윈도우즈용 다운로드" 

 - 다운 받은 파일을 실행시키면 바로 설치 후 실행된다.


4. OSX에서 설치

 - https://atom.io/ 에서 "Mac용 다운로드" 

 - dmg 파일이 아닌 zip파일로 다운로드 됨.

 - 압축 풀면 Atom.app을 응용프로그램 디렉토리에 넣으면 됨.



'OpenSource > Others' 카테고리의 다른 글

[Atom] 사용해보기. part. 1 : 설치(win, mac)  (0) 2018.04.10
[Readmine] 1. 설치하기(linux)  (0) 2017.01.26
[Ghost] 1. Ghost Blog 소개 및 설치  (0) 2016.08.06

1. Filter Mutate??

 - 데이터 변환


2. 기능

 - remove_field : 해당 필드 값들을 제거한다.

 - rename : 필드명을 변경한다.

 - 기타 여러 기능들이 있다. 아래 참고링크를 참고하면 좋다.


3. 예제

filter {

mutate {

remove_field => [

"@timestamp",

"@version"

]

rename => {

"TEST_VALUE" => "testValue"

}

}

}


* 참고 링크

 - https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html#plugins-filters-mutate-rename

1. 프로젝트 세팅하기

 1) 참고

  - Maven 버전이 3버전 이상이여야 합니다.

  - IntelliJ 로 개발할 예정입니다.

 2) 세팅

     (1) maven-archetype-mojo 를 선택한다.




(2) 관련 정보를 입력한다.

      - GroupId : 그룹 아이디로 패키지와 일치시켜서 입력한다.

  - ArtifactId : 플러그인 이름으로 규칙이있다.

* maven-${name}-plugin : Maven에서 자체 개발한 플로그인 이름으로, 사용할 수 없다.

* ${name}-maven-plugin : Custom Plugin 명칭으로 해당 룰에 맞춰서 플러그인 이름을 만들면 된다.


(3) 관련 정보 확인.



(4) 생성된 패키지 확인



(5) pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>kr.geun.o</groupId>
<artifactId>sample-maven-plugin</artifactId>
<packaging>maven-plugin</packaging>
<version>1.0-SNAPSHOT</version>
<name>sample Maven Mojo</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>3.5.1</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>


(6) MyMojo.java <-- 클래스명은 변경해도 됩니다.

 - 아래에 있는 @Mojo(name = "sample") 은 Maven plugin의 Goal 입니다.

import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.Mojo;

@Mojo(name = "sample")
public class MyMojo extends AbstractMojo {

public void execute() throws MojoExecutionException {
getLog().info("Hello, World!!");
}
}

 3) 빌드하기

mvn clean install


2. 테스트용 프로젝트 세팅

 1) 신규로 프로젝트를 Maven 프로젝트를 세팅한다. 

  


 2) pom.xml 내에 추가

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>kr.geun.mvn.test</groupId>
<artifactId>sample-mvn-plugin-test</artifactId>
<version>1.0-SNAPSHOT</version>

<build>
<plugins>
<plugin>
<groupId>kr.geun.mvn.plgn</groupId>
<artifactId>sample-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
</plugin>
</plugins>
</build>
</project>


 3) 실행

 - mvn {groupId}:{artifactId}:{version}:{plugin Goal}

mvn kr.geun.mvn.plgn:sample-maven-plugin:1.0-SNAPSHOT:sample


or

 - mvn {artifactId} 내에 있는 prefix값 (예를들어 위 내용에서는 sample이다):{plugin Goal}

mvn sample:sample



 4) 결과



* 참고 링크

 - http://maven.apache.org/guides/plugin/guide-java-plugin-development.html


'프로그래밍 > Maven' 카테고리의 다른 글

Maven Test Skip 하는 법  (0) 2018.04.17
[Maven] Plugin 개발하기.  (0) 2018.04.09
Maven Central에 Library Upload하기!!  (0) 2017.02.21
[MAVEN] Exec Maven Plugin 사용하기  (0) 2016.12.01

1. HTML 기본구조

<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>

</body>
</html>


2. <html lang="en"> ??

 - HTML 이 어떤 언어로 작성되어 있는지를 알려주는 값이다.

 - ISO 639-1 Language Codes  : 링크

 - 번역하기 등의 옵션은 해당 lang값을 참고하여 동작함.



1. 최대 접속자 수

show variables like '%max_connect%';


2. 현재 접속자 수

show global status like 'threads_connected';


3. 현재 존재하는 데이터베이스 목록

show databases;


4. 특정 데이타베이스를 사용

use {databases_name};


5. 현재 사용중인 데이터베이스 테이블 목록

show tables;


6. 테이블 생성 쿼리 보기

show create table {table_name};


7. 테이블 컬럼 목록 보기

select column_name from information_schema.columns where table_name = '{table_name}' and table_schema='{database_name}'


8. 테이블 index 목록 보기

show index from {table_name}


9. 현재 사용중인 데이터베이스 인덱스 목록

select distinct table_name, index_name from information_schema.statistics where table_schema = '{database_name}';


10. TABLE Comment 확인

select 

table_name, table_comment 

from information_schema.tables

where 

table_schema = '{database_name}'


11. TABLE 내 Column Comment 확인

select 

table_name, column_name,column_comment 

from information_schema.columns

where 

table_schema = '{database_name}'


'DataBase > Mysql & MariaDB' 카테고리의 다른 글

[Mysql] Create Table like  (0) 2018.04.13
[Mysql] 기억하면 좋은 쿼리 모음  (0) 2018.04.03
[Mysql] 데이터의 암호화, 복호화  (0) 2016.11.17
[Mysql]ERROR 1045 (28000)  (0) 2016.08.23

1. public static void main(String[] args){} ????

 - java로 처음 "Hello, World!"를 쓸 때 써본거.

 - java application의 시작점


2. 소스

 1) 전체보기

/**
* Java Entry Class
*
* @author geunspage
*/
public class MainTest {

public static void main(String[] args) {
System.out.print("Hello, World!");
}
}


 2) public

  (1) 접근 제어자(Access Modifier)

- defualt, private, protected, public

- private -> default -> protected -> public 순으로 보다 많은 접근이 가능하다.

  (2) 해당 값 변경 또는 제거 할 경우

/**
* Java Entry Class
*
* @author geunspage
*/
public class MainTest {

private static void main(String... args) {
System.out.print("Hello, World!");
}
}

 - 찾지 못함.

오류: MainTest 클래스에서 기본 메소드를 찾을 수 없습니다. 다음 형식으로 기본 메소드를 정의하십시오.

   public static void main(String[] args)

또는 JavaFX 애플리케이션 클래스는 javafx.application.Application을(를) 확장해야 합니다.


 3) static

  (1) 설명

- java가 처음 실행되면 클래스의 객체가 없기 때문에, 해당 메소드는 static(인스턴스를 생성하지 않고도 호출이 가능해짐)이어야 접근이 가능하다.


  (2) 해당 값 변경 또는 제거 할 경우

/**
* Java Entry Class
*
* @author geunspage
*/
public class MainTest {

public void main(String... args) {
System.out.print("Hello, World!");
}
}

 - 찾지 못함.

오류: MainTest 클래스에서 기본 메소드가 static이(가) 아닙니다. 다음 형식으로 기본 메소드를 정의하십시오.

   public static void main(String[] args)


 4) void 

  (1) 설명

- Method의 리턴 유형

- void는 아무것도 돌려주지 않겠다는 내용.

- Main Method의 실행이 끝나면 프로그램이 종료되기 때문에, 아무것도 돌려줄 필요가 없다.


  (2) return 0 추가


  (3) 중간에 종료하기

- 아래 "Hello, World! 2" 는 실행되지 않는다.

- 아래와 같이 작성할 경우, 대부분의 툴에서는 Dead Code라고 뜬다.



 5) main

  (1) java application 실행시 main 으로 실행한다는 약속된 값.

  (2) 변경시

/**
* Java Entry Class
*
* @author geunspage
*/
public class MainTest {

public static void mainTest(String... args) {
System.out.print("Hello, World!");
}
}

  - 찾지 못한다.

오류: MainTest 클래스에서 기본 메소드를 찾을 수 없습니다. 다음 형식으로 기본 메소드를 정의하십시오.

   public static void main(String[] args)

또는 JavaFX 애플리케이션 클래스는 javafx.application.Application을(를) 확장해야 합니다.


 6) String[] args or String... args

  (1) command line arguments 

  (2) 예제

/**
* Java Entry Class
*
* @author geunspage
*/
public class MainTest {

public static void main(String... args) {
for (String arg : args) {
System.out.println("arg : " + arg);
}

}
}

 - 실행(intellij)


 - 실행 Command Line

javac MainTest.java

java MainTest 1 2 3


 - 결과



'프로그래밍 > JAVA' 카테고리의 다른 글

Java에서 Tuple 사용하기.  (0) 2018.04.11
try-catch-resources  (0) 2018.04.11
public static void main(String[] args){}  (0) 2018.04.03
javax.net.ssl.SSLHandshakeException에 대한 해결방법  (0) 2017.02.14
websocket 사용 간단 채팅  (0) 2016.08.23
URL Image DownLoad  (0) 2016.08.14

1. banner.txt??


 - 위 이미지를 이쁘게 꾸며보자!.

2. 변경할 파일

 1) src/main/resources/banner.txt 

 

  - banner.txt 내에 원하는 텍스트를 넣으면 된다.


 2) 파일 위치도 변경하기

  (1) 기본 설정(application.yml or application.propertioes)

banner.location=classpath:banner.txt # Banner file location.


- 원하는 경로로 변경하면 된다.


3. 이쁜 text 만들기

 1) https://devops.datenkollektiv.de/banner.txt/index.html 


 2) http://patorjk.com/software/taag/#p=display&f=Ogre&t=Memorynotfound.com




4. 결과

 - 위에서 만든 텍스트를 banner.txt 파일에 넣으면 아래와 같이 볼 수 있다.



5. 좀더 이쁘게

 1) 컬러도 적용 가능하다.

 2) 아래 링크를 들어가면 Spring version 등의 값들을 노출 시킬 수 있다.

- 링크

 3) 이미지를 넣을 수도 있다.

banner.image.location=classpath:banner.gif # Banner image file location (jpg/png can also be used).

banner.image.width= # Width of the banner image in chars (default 76)

banner.image.height= # Height of the banner image in chars (default based on image height)

banner.image.margin= # Left hand image margin in chars (default 2)

banner.image.invert= # If images should be inverted for dark terminal themes (default false)


 4) 이미지를 ancii 로 변경할 수 있다.

- 링크


1. 소스코드

server

{

 ....

 

  location / 

  {

    valid_referers none blocked server_names *.example.com;


    if ($invalid_referer) {

            return   403;

    }


    ....

  }


}


* 참고페이지

http://nginx.org/en/docs/http/ngx_http_referer_module.html

+ Recent posts