Window10 Maven 설치하기

안녕하세요 오늘은 Window10에 Maven을 설치하는 방법을 알아보겠습니다.

주의 하실 점은 java가 미리 설치되어 환경변수까지 마치셔야 합니다.

먼저 이곳에 들어가 아래 사진에 형광펜으로 칠해 놓은 파일을 받아주세요.


이 후 압축을 풀어 자신이 원하는 위치에 놓으면 되는데요 

저는 C:/ 에다 압축을 풀었습니다.



그 다음 단축키 window+ pause/break 버튼을 눌러 시스템 창을 띄운 후

고급 시스템 설정 > 고급 > 환경 변수 > 시스템 변수에 있는 새로만들기를 누릅니다.



이 후 아래와 같이 편집창이 뜰텐데요. 

변수 이름을 지정 해 주시고 변수 값엔 자신이 압축을 풀어놨던 메이븐 파일 경로를 입력하시면 됩니다.



그 다음 Path를 더블클릭하여 아래와 같이 %MAVEN_HOME%\bin을 만들어 주시면 끝입니다.



그리고 cmd 창이나 git bash를 열어 mvn -v 을 입력해 주고 아래와 같이 뜨신다면 설정이 완료되었습니다.



split 함수 사용법

split 함수는 보통 문자열 안에 들어있는 구분자 패턴을 이용해 문자열을 나누는 데 사용합니다.

이 함수는 여러분이 필요한 문자열을 뽑아 내는데 아주 쉽고 유용하게 쓰이므로 

배워두면 쓸 일이 많을 것 같습니다.

아래는 split 함수의 문법입니다.

첫번째 함수는 반환형은 String이며 인자는 정규 형식의 문자열로 모든 구분자를 나누게됩니다.

두번째 함수도 비슷하지만 인자 int limit을 받아 문자열을 모두 나누는 것이 아니라 

나눌 수 있는 횟수를 정하여 split을 적용시키게 됩니다.

public String split(String regex) public String split(String regex, int limit)


문자열 배열로 나누기


아래 소스는 간단하게 문자열을 split사용으로 구분해 놓았습니다.

"ABCD,EFG" 문자열 안에 있는 ','를 구분자 삼아 temp라는 배열 변수에 집어 넣었고

0번째 인덱스와 1번째 인덱스로 나누어 졌습니다.

결과 값은 result와 같습니다.


public class ParserTest {
		String str = "ABCD,EFG";
		String temp [];
	@Test
	public void Test() {
		// 구분자
		temp = str.split(",");
		System.out.println("0번 째 인덱스의 구분자 ::: "+temp[0]);
		System.out.println("1번 째 인덱스의 구분자 ::: "+temp[1]);
		/*
		 * result
		 * 0번 째 인덱스의 구분자 ::: ABCD
		 * 1번 째 인덱스의 구분자 ::: EFG
		 * */
	}
}

아래와 같이 for문을 사용해 뽑아 낼 수도 있습니다.

public class ParserTest {
		String str = "ABCD,EFG";
		String temp [];
	@Test
	public void Test() {
		// 구분자
		temp = str.split(",");
		for(String strTemp: temp) {
			System.out.println(strTemp);
		}
		/*
		 * result
		 * ABCD
		 * EFG
		 * */
	}
}

구분자를 사용해 원하는 문자열 가져오기


문자열 중 구분자를 통해 원하는 문자열을 잘라내 가져올 수 있습니다.

소스는 아래와 같습니다.

아래 소스는 띄어쓰기를 통하여 구분자를 지었습니다.

인덱스 구분은 0 = '가져오고', 1 = '싶은', 2 = '문자열은', 3 = '바로', 4 = '이것', 5 = '입니다.' 가 되겠습니다.

public class ParserTest {
		String str = "가져오고 싶은 문자열은 바로 이것 입니다.";
		String tempStr = "";
	@Test
	public void Test() {
		// 구분자
		tempStr = str.split("\\s")[4];
		System.out.println(tempStr);
		/*reuslt
		 * 이것
		 * */
	}
}


이렇게 split을 사용 하는 방법을 알아봤습니다.

split 함수는 사용자가 원하는 문자열을 파싱할 때 자주 쓰이는 함수입니다.

저도 자주 쓰는 편이구요. 

이 글이 도움이 되셨으면 좋겠습니다.

그리고 잘못된 점이 있다면 댓글에 남겨주시면 감사하겠습니다.


String을 JSONObject 파싱하는 방법

아래 소스는 String을 JSONObject로 파싱하는 방법입니다.

이와 같은 소스는 REST API로 JSON 형식의 텍스트를 불러 왔을 때 사용되며

더 좋은 방법이 있다면 댓글로 남겨주시면 감사하겠습니다.


		// json 형태로 바뀔 String 변수
		String json = "{\"result\":\"fail\",\"message\":\"account error :: reservation infomation empty\"}";
		// JSONParser로 객체 생성
		JSONParser parser = new JSONParser();
		// obj 객체에 String 형식을 JSONParser형식으로 바꿔 넣는다
		Object obj = parser.parse(json);
		// JSONObject로 변환
		JSONObject jsonObj = (JSONObject) obj;
		// 아래와 같이 key 안에 있는 key를 꺼내 쓸 쑤 있다.
		JSONObject market_data = (JSONObject) jsonObj.get("market_data");

'Java > source register' 카테고리의 다른 글

HttpsURLConnection을 사용하여 API 불러오기  (0) 2018.12.12

HttpsURLConnection을 사용하여 REST API 불러오는 방법

HttpsURLConnection을 사용하여 restful api를 불러오는 소스입니다.

HttpURLConnection도 이름과 import한 라이브러리를 변경 후 아래 소스와 동일 하게 사용 가능합니다.

아래 소스는 junit test로 만들어진 테스트용 소스이며 원하지 않는 라이브러리들은 빼셔도 좋습니다.


import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;



import javax.net.ssl.HttpsURLConnection;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.junit.Test;



public class UnitTest {

	static private String API_URL = "사용 할 API url";
        String str = "";

	@Test
	public void test() throws Exception{

		BufferedReader in = null;
		try {
			URL url = new URL(API_URL);

			// 호출할 url 

			HttpsURLConnection con = (HttpsURLConnection)url.openConnection(); 
			con.setRequestMethod("GET"); 
			in = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8")); 
			String line;
			while((line = in.readLine()) != null) { 

				// response를 차례대로 출력 
//				System.out.println(line); 
				str += line;

			}
		}catch (Exception e) {
			// TODO: handle exception
		}finally {
			if(in != null) try { in.close(); } catch(Exception e) { e.printStackTrace(); }
		} 

	}
}


'Java > source register' 카테고리의 다른 글

String을 JSONObject 파싱하는 방법  (0) 2018.12.13

Oracel 11g 설치하는 방법


안녕하세요 오늘은 오라클 설치하는 방법과 사용자를 생성하는 방법에 대해서 알아보겠습니다.

버전은 11g로 진행하겠습니다.


먼저 오라클 홈페이지에 접속을 합니다.

그 후 파일 1of2 파일과 2of2 파일 두개를 다 받습니다.



이 후 두 파일의 압축을 푼 후 2of2 내부에 있는 파일을 복사하여

1of2디렉토리에 Components에 붙여넣기로 파일을 복사 해줍니다.



다음 이 곳 링크로 들어가 튜토리얼대로 오라클을 설치합니다.


모든 설치가 끝났습니다. 이제 접속을 해볼텐데요

접속을 하기 위해 알아두어야 할 것들입니다.


1. 접속이름 : 원하는 아무 이름

2. 사용자 이름 : 생성한 사용자 이름

3. 비밀 번호 : 설정한 비밀번호

4. 호스트 이름 : window계정 or localhost

5. 서비스 이름 : 설치 시 설정 한 전역데이터베이스 이름





Oracle 사용자 생성하는 방법


이번엔 사용자를 생성해 보겠습니다.

win+R > cmd 로 접속하여 sqlplus로 접속합니다.

C:\User\PSJ> sqlplus "/as sysdba"

접속이 되었다면 새로운 유저를 생성해 보겠습니다.

구문은 아래와 같습니다.

SQL> create user [username] identified by [password];

계정을 생성 한 후 아래와 같이 권한을 부여 하겠습니다.

저는 계정을 admin으로 만들었습니다.

SQL> grent connect, resource, dba to admin;

아래 사진과 같이 unlock 후 계정을 전황하여 사용자를 확인하면 

마무리가 되었습니다.



이렇게 오라클을 설치하는 방법을 알아보았습니다.

저는 오라클을 사용하진 않지만 나중에 혹시라도 쓸 경우를 대비해 

미리 설치를 진행해 봤습니다. 


안녕하세요 오늘은 Java의 String문자열을 이용해서

equals()와 ==의 차이를 알아보겠습니다.

이 둘을 알기 전 메모리 관점에서 봐야하는데요

먼저 하나의 예시를 들어보겠습니다.


String을 생성하는 방법은 2가지가 있습니다.

String str1 = "sujin"; 
String str2 = new String("sujin");

System.out.println(str1); // result : sujin 
System.out.println(str2); // result : sujin

코드를 보시면 각각의 생성 방식이 다릅니다.


String str1 = "sujin";

위 구문의 경우 Heap내부의 String constant pool이란 곳에 저장을 합니다. 

만약 이미 존재하는 문자열이 있으면 이미 저장된 인덱스의 번호를 가리키게 되어있습니다.

String str2 = new String("sujin");

다음 위 구문은 말 그대로 객체를 생성합니다.

Heap내부의 레퍼런스 주소를 가지고 있습니다.


String str1 = "sujin"; 
String str2 = "sujin";

String str3 = new String("sujin"); 
String str4 = new String("sujin"); 

System.out.println(str1 == str2);	// result : true
System.out.println(str1 == str3);	// result : false
System.out.println(str3 == str4);	// result : false
System.out.println(str1.equals(str3)); // result : true

위 설명을 듣고 보니 이 소스가 이해가 되시나요?

==은 객체의 주소값을 비교하고 equals()는 객체의 값을 비교합니다.

이 것으로 조건문을 사용할 때 어떤 것을 사용해야 할지 더 명확하게 작성할 수 있습니다.

'Java > java' 카테고리의 다른 글

객체지향 프로그래밍이란? (Object Oriented Programming)  (0) 2018.06.27

SSH Key 생성하기


안녕하세요 오늘은 SSH Key를 생성하여 서버에 원격 접속하는 방법을 알려드리겠습니다.

일단 원격 접속을 하려면 서버가 필요하겠죠?

그 부분은 제가 포스팅을 해 놓았으니 이 포스팅을 먼저 보고 오시면 될 것 같습니다.


저는 현재 윈도우 10 환경이며 원격 접속할 환경은 ubuntu 16.04입니다.

먼저 저는 윈도우에서 리눅스 명령어를 지원해 주는 git bash를 사용하고 있습니다.

아래와 같이 명령어를 생성합니다.

ssh-keygen -t rsa

-t 란 어떤 암호화 방식을 사용하는지 정할 수 있는 옵션인데 

디폴트로는 rsa로 생성이 됩니다.

명령어 입력시 1. 파일위치 지정, 2. 비밀번호 3. 비밀번호 확인이 뜨는데

Enter로 모두 스킵하면 기본위치에 비밀번호 없이 key가 생성이 됩니다.

이후 

cd ~/.ssh

기본위치일 경우 위와같이 명령어를 치고 이동을 하면 

.ssh 디렉토리 아래에 id_rsa(개인키), id_rsa.pub(공개키),known_hosts 파일이 생성 되어 있습니다.


이렇게 간단하게 key가 생성이 되었습니다.

이 것을 가지고 서버에 id_rsa.pub 키를 넘겨주게 되면

간단하게 원격 접속을 할 수 있습니다.


서버에 원격 접속하기


이제 리눅스 서버에 접속 한 후 위와 같이

ssh-keygen -t rsa

명령어로 키를 생성 해 줍니다.

그리고 .ssh디렉토리 안에 파일을 하나 생성해 줄겁니다.

vi authorized_keys

이 파일 안에는 로컬에서 생성하였던 id_rsa.pub(공개키)를 집어 넣게 됩니다.

여기까지 완료하셨으면 이제 접속테스트만 남았습니다.

ssh 사용자계정@원격서버ip:포트

위와같은 커맨드로 간단하게 원격 서버에 접속하였습니다.

다음 포스팅은 Docker를 주제로 한 포스팅을 할 계획입니다.


AWS EC2 무료서버 만들기


안녕하세요 오늘은 aws에서 제공해 주는 무료서버를 만들어 보도록 하겠습니다.

진행 과정에 필요한 것은 아마존 계정과 public IP, 그리고 포트포워딩인데 

다음과 같이 천천히 따라오면 되겠습니다.


본 포스팅은 아마존 계정이 있다는 가정하에 포스팅을 진행하겠습니다.


먼저 계정에 접속하면 카테고리 > 서비스에 컴퓨팅 리스트가 있습니다

그 중 EC2를 선택합니다.



그 후 인스턴스 시작을 눌러 EC2 서버를 생성할 것입니다.



저는 Ubuntu 16.04 버전을 이용해 진행을 하겠습니다.

다른 ami를 원하시면 그걸 선택하셔도 좋습니다.



저는 1년동안 무료로 제공해 주는 t2.micro를 선택했습니다.



저는 이미 만들어진 key가 있어서 진행이 스킵 됐지만

이 후 Key Pair 및 다운로드를 해야합니다.

순서는 다음과 같습니다.

  • "Create a new key pair" 항목 선택
  • Key pair name 입력
  • [Download key Pair] 버튼 클릭 해 다운로드(*.pem 파일이 다운로드 됩니다.)

이 *.pem 파일을 통해 최초로 putty로 접속 할 수 있습니다.

절때 분실하면 안되기 때문에 따로 저장소에 백업을 해 놓는 편이 좋을 것 같습니다.


다음 인스턴스 구성을 마친 후 대쉬보드로 돌아와 public IP를 받고,

아래와 같이 원하는 포트로 포트포워딩을 합니다.

포트 포워딩은 이전 포스팅을 해 놓았기 때문에 따로 적진 않겠습니다.



이렇게 간단히 aws 무료 리눅스 서버를 생성해 봤습니다.


그리고 저는 putty로 접속하는 것을 굉장히 귀찮아 하기 때문에

최초 putty로 접속 후 로컬 ssh key를 서버 ssh에 등록하여 사용을 합니다.

다음 포스팅은 ssh-keygen을 이용하여 터미널로 간단히 접속하는 방법을 알아보겠습니다.










Crawling setting 


프로젝트를 진행 하다보면 테스트 할 데이터가 필요합니다.

데이터를 직접 만들기엔 전문성이 떨어져 비영리적으로 사용할 목적으로 

다른 사이트에서 데이터를 빌려(?) 오는 크롤링을 사용해야합니다.


사용할 프레임워크는 Spring.

아래는 메이븐pom.xml 을 이용하여 라이브러리를 받아왔습니다.



        
            org.jsoup
            jsoup
            1.11.2
        
        
            com.googlecode.json-simple
            json-simple
            1.1.1
        
        
        
            net.sourceforge.htmlunit
            htmlunit
            2.29
        
        
        
            org.seleniumhq.selenium
            selenium-java
            3.3.1
        
         
        
            io.github.bonigarcia
            webdrivermanager
            1.6.0
            
                
                    com.google.guava
                    guava
                
            
        


프로젝트에 코드 적용 전 테스트를 위해 JUnit을 이용하여 기능 작동 여부를 테스트 할 건데요

그 전에 자신에게 맞는 브라우저를 선택 하여 드라이버를 설치 한 후 test/resource에 넣어 경로를 복사해둡니다. 


 브라우저

 주소 

 Chrome 

 https://sites.google.com/a/chromium.org/chromedriver/downloads

 Egdge 

 https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

 Firefox

 https://github.com/mozilla/geckodriver/releases

 Safari

 https://webkit.org/blog/6900/webdriver-support-in-safari-10/


package org.yogiyo.app.crawling;

import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Before;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;



public class CrawlingTest {

    private WebDriver driver;

    @Before(value="mainTest")
    public void setUp()throws Exception{
        System.setProperty("webdriver.chrome.driver", "/Yogiyo/src/test/resources/driver/chromedriver");
        // 다운받은 ChromeDriver 위치를 넣어준다.
        driver = new ChromeDriver(); // Driver 생성
    }
    @After(value="mainTest")
    public void tearDown()throws Exception{
        driver.quit();  // Driver 종료
    }
    @Test
    public void mainTest() throws Exception{
        System.out.println("테스트");
    }
}

위와 같이 테스트를 완료 했습니다.

다음 포스팅은 크롤링을 하는 방법에 대해서 포스팅을 해보겠습니다.

객체지향 프로그래밍 (Object Oriented Programming)


현실세계의 객체를 필드와 메서드로 정의한 Class를 기반으로 실제 메모리가 잡힌 객체들을 조합해 전체 프로그램을 완성해 나가는 개발 기법

객체지향 프로그래밍의 장단점


1. 장점


  • 코드 재사용이 용이
  • 유지보수가 쉬움
  • 대형 프로젝트에 적합


2. 단점


  • 처리속도가 상대적으로 느림
  • 객체가 많으면 용량이 커질 수 있음
  • 설계 시 많은 시간과 노력이 필요


객체지향 프로그래밍의 특징


1. 캡슐화

  • 어떤 클래스를 사용함에 있어서 그 클래스가 제공하는 메서드 기능의 사용법만 알고 그 기능만을 사용할 뿐 실제로 그 메서드가 어떻게 움직이는지는 굳이 알 필요가 없음


2. 은닉화

  • 외부 객체에서 구현방식은 알 수 없도록 private으로 만들어 클래스를 숨기고 별도로 접근할 수 있는 getter/setter 메서드를 통해 접근하도록 하는 방식
  • 클래스를 사용함에 있어서 속성에 직접 접근하는 것은 데이터 무결성 오류에 치명적일 수 있기 때문에 접근을 제한함


3. 상속

  • 부모 클래스를 자식이 접근할 수 있도록 물려받는 방식


4. 다형성

  • 부모클래스 타입으로 해당 부모를 상속받는 여러 자식 클래스를 대입할 수 있는 성질
  • 단순히 하나의 행동을 여러 가지 형태로 구현하는 것임


'Java > java' 카테고리의 다른 글

[Java] String equals와 == 차이  (0) 2018.07.01

+ Recent posts