반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

 

지금까지 파이썬 위주로 포스팅을 해왔는데, 제가 업무에서 자바를 다루게 되어서 급하게 자바를 공부하게 되었습니다.

 

저도 자바 왕초보인 만큼 글에 부족함이 많을 수 있으니 미리 양해부탁드립니다!

 

 


1. 자바의 자료형

 

지난 시간에 이어서 배열 자료형들을 공부해보겠습니다. 오늘도 자주 쓸만한 자료형들만 알아보고 넘어가도록 하겠습니다.

 

1) 숫자 (byte, short, long, int, float, double)
2) 문자 (char, String, StringBuffer)
3) 불 (boolean)
4) 배열 (Array)
5) 리스트 (ArrayList)
6) 맵 (Map)
7) 집합 (Set)
8) 상수집합 (Enum)

 

4) 배열 (Array)

 

자바의 배열은 아래와 같이 지난 시간 배웠던 자료형에 대괄호 [ ]를 붙여서 표현합니다.

 

즉, int[ ]는 int 객체들을 꾸러미로 가질 수 있는 Array 객체이며, String[ ]는 String 객체들을 꾸러미로 가질 수 있는 Array 객체입니다. (객체의 개념은 아직 어려운 개념일 수 있으니, 코드가 이렇게 생겼구나라고 생각하고 넘어가셔도 좋습니다.)

 

public class Datatype {

	public static void main(String[] args) {
				
		int[] numbers = {1,2,3,4,5};
		String[] strings = {"월","화","수","목","금","토","일"};
		
		System.out.println(numbers);
		System.out.println(strings);
	}
}

 

위의 String[] strings = {"월","화","수","목","금","토","일"} 코드는 아래와 같이 먼저 Array 객체를 생성해주고 그 값들을 하나씩 대입해주는 방식으로도 표현 가능합니다.

String[] strings = new String[7];
strings[0] = "월";
strings[1] = "화";
strings[2] = "수";
strings[3] = "목";
strings[4] = "금";
strings[5] = "토";
strings[6] = "일";

 

여기서 String[7]이라고 표현해준 부분을 보시면, Array 객체는 필요한 공간의 갯수를 딱 정해놓고 내용을 채워넣는 다는 것을 알 수 있습니다. 이러한 특징은 C언어와 같고 파이썬과는 다른 부분이네요.

 

참고로 "금"이라는 문자열을 출력하고 싶다면, 아래와 같이 코딩 하시면 됩니다.

// 인덱싱 개념
System.out.println(strings[4]);

 

 

5) 리스트 (ArrayList)

 

리스트는 배열과 비슷하면서도 편리한 점이 많은 자료형입니다. 앞서 공부했던 배열은 공간의 크기가 정해져서 변하지 않았다면 리스트는 그 크기가 정해져있지 않고 변한다는 것이 가장 큰 특징입니다.

 

쉽게 말해서 무언가 담는 그릇이 있는데, 배열은 딱딱한 그릇이고, 리스트는 늘어나는 소재의 그릇이라고 할 수 있겠네요.

 

// ArrayList를 사용하려면 아래의 클래스를 import 해주어야 함
import java.util.ArrayList;

public class Datatype {
    public static void main(String[] args) {
    	
        ArrayList season = new ArrayList();
        
        season.add("Spring");
        season.add("Autumn");
        season.add("Winter");
        
        System.out.println(season);
    }
}

 

<실행 결과>

[Spring, Autumn, Winter]

 

add

자, 여기서 제가 실수로 Summer를 빠트렸다고 해봅시다. 이럴 때 두번째, 즉 Spring과 Autumn 사이에 Summer를 넣고 싶다면 어떻게 해야 할까요?

 

season을 출력해보기 전에 아래의 코드를 Winter 아래에 넣어보세요.

season.add(1,"Summer");

 

<실행 결과>

[Spring, Summer, Autumn, Winter]

 

get, size, remove

만약  리스트 내에서 요소 하나만 출력하고 싶을 때, 리스트 내의 요소 갯수를 출력하고 싶을 때, 요소 하나를 없애고 싶을 땐 다음과 같이 하시면 됩니다.

// 하나만 선택해서 출력
System.out.println(season.get(3));

// 리스트 안에 담긴 요소들의 갯수 출력
System.out.println(season.size());

// 하나만 선택해서 삭제 (둘다 모두 삭제되지만 return 결과가 조금씩 다름)
System.out.println(season.remove("Autumn"));
System.out.println(season.remove(2));

 

하나씩 실행 시켜보면서 확인해보시면 이해하시는데에 도움이 되실거예요.

 

 

6) 맵 (map)

 

 

자바의 맵 자료형은 아래 표와 같이 Key와 Value 한 쌍으로 이루어진 요소들을 객체로 가지는 자료형입니다.

파이썬에서의 dictionary 자료형과 같은 개념입니다.

 

자바에서 map은 아래와 같이 만들 수 있습니다. 참고로 HashMap 객체를 사용해서 map을 만들어줄 때, 지금까지 못보던 <>가 들어가는 것을 볼 수 있는데 이는 "제네릭스" 문법으로 추후에 시간을 내서 공부해보겠습니다.

import java.util.HashMap;

public class Datatype {
    public static void main(String[] args) {
    	
        HashMap<String, String> map = new HashMap<>();
        map.put("남자", "Male");
        map.put("여자", "Female");
        
        System.out.println(map);
    }
}

 

<실행 결과>

{여자=Female, 남자=Male}

순서는 나중에 추가해주는 요소가 앞으로 오네요.

 

get, size, remove

map 역시 list와 마찬가지로 get, size, remove 메소드를 사용할 수 있습니다.

// key를 선택해서 value값을 출력
System.out.println(map.get("남자"));    //"Male" 출력

// 맵 안에 담긴 요소들의 갯수 출력
System.out.println(map.size());        // 2 출력

// key를 선택해서 key,value 세트를 삭제  --> 삭제 후 value값 리턴
System.out.println(map.remove("여자"));    // "Female" 출력

 


<참고 자료>

 

1. 점프 투 자바_위키독스

https://wikidocs.net/276

반응형
반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

 

지금까지 파이썬 위주로 포스팅을 해왔는데, 제가 업무에서 자바를 다루게 되어서 급하게 자바를 공부하게 되었습니다.

 

저도 자바 왕초보인 만큼 글에 부족함이 많을 수 있으니 미리 양해부탁드립니다!

 

 


1. 프로그래밍에서 자료형의 의미

 

지난 시간까지 자바로 프로그래밍을 할 개발환경을 구축해보았다면, 이제부터는 제대로 자바 언어를 공부할 차례입니다.

 

그전에 프로그래밍이 정확히 무엇인지 알고 갈 필요가 있습니다.

 

우리에게 TV 프로그램이란 단어로 익숙한 프로그램의 사전적 의미는 지시 사항들이 나열된 순서를 의미합니다.

즉, 프로그래밍이란 특정 작업을 수행하는 일련의 명령들을 만드는 행위를 뜻합니다.

 

출처. 프로그래머가 필요한 수학 (brunch)


위의 그림에서 프로그램은 f(x)입니다. 빵 만드는 기계를 일종의 빵을 만드는 프로그램으로 볼 수 있죠.

 

프로그래밍(Programing)을 한마디로 f(x)를 구현하는 것입니다. 참고로 코딩(Coding)은 이러한 f(x)를 컴퓨터가 알아들을 수 있는 코드로 작성하는 행위를 뜻하죠.

 

이때, f(x)를 설계하면서 반드시 고려해야할 부분은 '어떤 입력값 a를 함수에 넣어 어떤 출력값 f(a)를 받을 것인지'입니다.

여기서 입력값과 출력값의 형태를 자료형이라고 설명 드릴 수 있습니다. 그 형태가 숫자면 숫자 자료형, 문자열이면 문자열 자료형이죠.

 

우리는 자료형에 대해 파악하고, 우리가 혹은 남이 만들어 놓은 함수 f(x)에 적절한 자료형을 넣어줄 필요가 있습니다. 물론 처리된 자료형을 다시 어떤 함수로 넣어주어야 하니 어떤 자료형이 나오는지도 잘 파악해야하죠.

 

위의 그림에서 만약 빵 만드는 기계에 밀가루 대신에 시멘트 가루를 넣으면 기계가 망가지겠죠?

그래서 우리는 무엇보다 먼저 자료형에 대해 공부할 필요가 있습니다.

 

 

2. 자바의 자료형

 

자바에는 다음과 같이 많은 종류의 자료형들이 있습니다. 하지만 이 많은 것들을 처음부터 하나하나 자세히 다루기엔 너무 재미가 없으니 필수적인 것들만 알아보고 넘어가도록 하겠습니다.

 

1) 숫자 (byte, short, long, int, float, double)
2) 문자 (char, String, StringBuffer)
3) 불 (boolean)
4) 배열 (Array)
5) 리스트 (ArrayList)
6) 맵 (Map)
7) 집합 (Set)
8) 상수집합 (Enum)

 

1) 숫자

 

숫자 자료형에서 가장 많이 사용하는 것은 int와 double 두 가지 입니다. int는 정수, double은 실수를 표현할 때 사용합니다.

일단 다른 문법은 신경쓰지 마시고 자료형의 생김새와 출력 결과만 봐주세요.

 

public class Datatype {

	public static void main(String[] args) {
				
		int num1 = 10;
		double num2 = 1.0;
		
		System.out.println(num1);
		System.out.println(num2);
	}
}

 

<실행 결과>

10
1.0

 

 

<참고> 각 자료형의 메모리 크기와 데이터 표현 범위

출처. TCP 스쿨

 

2) 문자

 

문자 자료형은 크게 문자 하나만 나타내는 char와 문자 여러개를 나타내는 String으로 나뉩니다. (StringBuffe는 일단 생략)

 

여기서 주의하실 점은 2가지입니다.

 

하나. char는 작은따옴표(' ')로 표현하고, String은 큰따옴표(" ")로 표현

둘. 자료형 String의 가장 첫글자는 꼭 대문자로 표현

 

public class Datatype {

	public static void main(String[] args) {
				
		char a = 'x';
		String b = "yyyyyy";
		
		System.out.println(a);
		System.out.println(b);
	}
}

 

<실행 결과>

x
yyyyyy

 

3) 불 (Boolean)

 

참(true) 또는 거짓(false)의 값을 갖는 자료형을 불 자료형이라고 하며, boolean이라고 표기합니다.

불 자료형은 아래와 같이 비교연산을 통해 참/거짓의 판단 결과값을 대입 받습니다.

 

public class Datatype {

	public static void main(String[] args) {
				
		boolean a = 2>1;
		boolean b = 1==2;
		
		System.out.println(a);
		System.out.println(b);
	}
}

 

<실행 결과>

true
false

 

다음 시간에 이어서 남은 자료형에 대해서 공부해보겠습니다.

 

감사합니다.


<참고 자료>

 

1. 점프 투 자바_위키독스

https://wikidocs.net/276

 

2. JAVA 기본타입 강의_TCP스쿨

http://www.tcpschool.com/java/java_datatype_basic

 

반응형
반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

 

지금까지 파이썬 위주로 포스팅을 해왔는데, 제가 업무에서 자바를 다루게 되어서 급하게 자바를 공부하게 되었습니다.

 

저도 자바 왕초보인 만큼 글에 부족함이 많을 수 있으니 미리 양해부탁드립니다!

 

 


이번 시간에는 워크스페이스, 프로젝트를 생성하고, HelloWorld를 출력하는 자바 소스 코드 파일, 클래스 등을 다루어 보도록 하겠습니다.

 

1. 이클립스 인터페이스 구성

 

먼저 이클립스의 화면 구성은 다음과 같습니다. 가장 처음 실행하면 패키지 탐색기, 코드 작성 영역, Outline, 콘솔창으로 나뉘어 있습니다.

 

패키지 탐색기 : 프로젝트, 패키지, 클래스 등을 관리하는 영역

코딩 작성 영역 : 소스 코드(.java)를 작성할 수 있는 영역

콘솔 : 코드 실행 결과를 보여주는 영역

Outline : 소스 코드의 문법적 요소를 시각적으로 보여주는 영역

 

저는 여기다가 디렉토리를 관리해주는 Navigator 창을 추가해서 사용하기로 하였습니다.

 

네이게이터를 처음 추가하면 아래와 같은 모습은 아닐거예요. 그럴 땐 창을 드래그 해서 패키지 탐색기 아래에 놓아주면 아래와 같은 모습이 됩니다.

 

 

2. 자바 프로젝트 생성

 

자바 코딩을 위해서 가장 먼저 해줄 것은 프로젝트를 생성하는 것입니다.

 

1) 아래 그림과 같이 File-New-Java Project를 클릭해주세요.

 

2) 클릭하시면 아래와 같은 창이 나옵니다. 설명을 따라서 워크스페이스를 설정하고, 프로젝트 이름과 형태를 설정해주시면 됩니다.

 

저는 아래와 같은 프로젝트 이름과 워크스페이스 경로를 설정해주었습니다. 

 

프로젝트 레이아웃은 두번째 옵션을 선택하였더니, 아래와 같은 형태로 프로젝트 폴더가 생성되었습니다.

네비게이터 창에서 확인 가능

 

3. 자바 클래스 생성

 

다음으로 해줄 일은 자바 클래스를 생성해주는 일입니다. 클래스(.class) 파일을 생성하면 자바 소스 코드 파일(.java)도 생성됩니다.

 

1) 방금 생성한 프로젝트 폴더를 우클릭해서 아래 그림과 같이 'Class'를 클릭해줍니다.

 

2) 클래스명을 입력해주고, 'public static void main(String[ ] args) 옵션을 체크 후, 'Finish'를 클릭해줍니다.

 

저의 경우엔 'HelloWorld'라는 이름으로 클래스를 생성해 주었고, 그 결과는 아래와 같습니다.

코드 작성 영역

 

4. Hello World 출력하기

 

마지막으로 "Hello World!!"를 출력해보겠습니다.

 

1) 일단 코드의 의미는 몰라도 아래와 같이 코드를 입력해봅시다.

public class HelloWorld {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("Hello World!!");
	}
}

 

2) Run 버튼을 눌러서 실행시켜봅시다.

 

아래와 같은 창이 뜰 수 있는데 'OK'를 눌러줍니다.

 

<콘솔창 출력 결과>

 

오늘 준비한 내용은 여기까지입니다.

 

감사합니다.


<참고 자료>

 

1. 네이버 부스트코스 강의_쉽게 배우는 자바1

 

 

반응형
반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

 

지금까지 파이썬 위주로 포스팅을 해왔는데, 제가 업무에서 자바를 다루게 되어서 급하게 자바를 공부하게 되었습니다.

 

저도 자바 왕초보인 만큼 글에 부족함이 많을 수 있으니 미리 양해부탁드립니다!

 

 


이번 시간에는 자바를 처음 접하면 자주 듣는 용어들의 개념을 명확히 이해하는 시간을 가져보겠습니다. 용어들을 공부하면서 자바의 구조에 대해서도 이해하실 수 있을거예요.

 

 

1. JVM이란?

 

가장 첫 시간에 자바의 장점에 대해서 이야기 할 때, 자바 가상 머신(JVM, Java Virtual Machine)을 사용하여, 운영체제와는 독립적으로 동작할 수 있다고 말씀드렸었습니다.

 

이 JVM을 설명 드리려면 그 전에 소스 코드와 바이트 코드의 차이에 대해서 이해하셔야 하는데요.

바이트 코드는 바이너리 코드라고도 부름

 

우리가 앞으로 배울 자바 문법을 이용해서 작성할 코드를 자바 소스 코드라고 합니다. 그 코드가 저장된 파일의 확장자는 .java이구요.

 

우리가 지난 시간에 선택했던 eclipse IDE에서는 코드를 작성하고 저장을 하면, 자동으로 자바 바이트 코드(.class) 파일이 생성되어 저장되는데요. 이 과정을 컴파일(Compile)이라 부르며 사람이 짠 코드를 컴퓨터가 알아들을 수 있는 코드로 변환되는 과정입니다.

 

정확히는 JVM이 알아들을 수 있는 코드이며, JVM은 이를 해석해서 실행시켜 주는 것입니다.

(참고로 Windows, Linux, Mac OS 마다 각각의 JVM이 있으며,  class 파일만 같다면 동일한 결과를 출력하게 됩니다.)

 

 

2. JRE와 JDK란?

 

JRE란 Java Runtime Environment의 약자로 자바 실행환경을 의미합니다. 아래 그림에서 보시는 것과 같이 방금 전 배웠던 JVM과 JVM이 동작하는데에 필요한 각종 자바 라이브러리를 의미합니다.

JVM, JRE, JDK의 관계 (출처.programiz.com)

 

마지막으로 가장 JRE에 컴파일러, 디버거, JavaDoc 등을 포함하는 개념이 가장 첫 시간에 설치했던 JDK(Java Development Kit)입니다.

 

 

3. 워크스페이스, 프로젝트, 패키지, 클래스의 관계

 

처음에 이클립스를 실행해서 강의를 따라서 Hello World가 출력되는 코드를 작성해보니, 좌측 Package Explorer에 많은 것들이 계층을 이루며 표현되어 있었습니다.

 

앞으로 코딩을 하기 위해서는 이런 구조들이 어떤 의미와 관계를 가지는지 파악해놓는게 좋겠다고 생각하여 좀 더 자세히 공부해보았습니다.

HelloWorld 프로젝트

 

이에 대한 내용이 아주 잘 정리된 블로그가 있어서 참고하였습니다. 너무 잘 정리해두셔서 별다른 설명이 필요 없을 것 같네요.

 

출처. https://codevang.tistory.com/76

 

원래는 이번 시간에 워크스페이스, 프로젝트를 생성하고, HelloWorld를 출력하는 자바 소스 코드 파일, 클래스 등을 다루어보려 했으나, 글이 길어질 듯해서 다음 글에서 다루어 보도록 하겠습니다.


<참고 자료>

 

1. 자바의 이식성-"바이트 코드"에서 "가상머신"까지_네이버 블로그(행복을 주는 공간)

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=web4click&logNo=110159692556 

 

2. 워크스페이스/프로젝트/패키지/클래스의 개념 및 명명규칙_티스토리 블로그(codevang)

https://codevang.tistory.com/76

 

반응형
반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

 

지금까지 파이썬 위주로 포스팅을 해왔는데, 제가 업무에서 자바를 다루게 되어서 급하게 자바를 공부하게 되었습니다.

 

저도 자바 왕초보인 만큼 글에 부족함이 많을 수 있으니 미리 양해부탁드립니다!

 

 


 

1. IDE란?

 

파이썬을 공부할 때 IDE 관련 내용을 포스팅 한 적이 있는데, 그 내용을 다시 가져와 보았습니다.

 

IDE [Integrated Development Environment]

효율적으로 소프트웨어를 개발하기 위한 통합개발환경 소프트웨어 어플리케이션 인터페이스이다.

코드 편집기, 디버거, 컴파일러, 인터프리터 등을 포함하고 개발자에게 제공한다.

 

위의 설명을 저의 얕은 지식으로 보충 설명 하자면 아래와 같습니다.

 

코드 편집기

코드를 알록달록 예쁘게, 자동 완성, 자동 들여쓰기, 맞춤법 검사 등의 기능으로 코드 편집을 쉽게 해주는 역할

 

디버거

코딩을 할 때, 코드가 잘 돌아가는지, 변수에는 어떤 값이 들어가 있는지 모니터링 해주는 역할

 

컴파일러

작성된 코드 전체를 컴퓨터가 알아먹기 쉬운 언어(기계어)로 번역해서 작동시켜주는 역할

 

인터프리터

코드를 한 줄 한 줄 실핼시켜주는 역할

 

 

2. 자바용 IDE

 

파이썬용 IDE에도 여러가지(VS CODE, Pycharm, JupyterNotebook 등등)가 있듯이 자바용 IDE에도 여러가지가 있습니다.

보통 IDE를 한번 선정하면 익숙한 것을 계속 사용하려는 본능 때문에 쉽게 바꾸기가 어렵습니다. 그래서 저는 무엇을 사용할지 신중히 알아보았는데요.

 

아래의 글들을 참고해서 선정한 IDE는 Eclipse였습니다. 위의 말과는 조금 모순적일 수는 있지만 일단 기초문법을 모두 공부하고 제대로 자바를 다루기 전까지는 Eclipse를 사용해보고 추후에 다시 생각하기로 했습니다.

 

그 이유는 아래와 같습니다.

 

1) 무료다. (IntelliJ는 개인용은 2022년 기준. 연 149달러, 기업용은 499달러이며, 무료버전이 있지만 기능이 제한적)

2) 참고하고 있는 강의(네이버부스트코스- 쉽게 배우는 자바1)에서 Eclipse를 사용

 

https://ko.myservername.com/top-10-best-java-ides-online-java-compilers

 

상위 10 개 이상의 최고의 Java IDE 및 온라인 Java 컴파일러 [2021 순위] - 다른

가격 및 기능이 포함 된 상위 Java IDE 및 온라인 Java 컴파일러의 종합 목록 및 Compariosn. 이 목록에서 최상의 Java IDE 및 컴파일러를 선택하십시오.

ko.myservername.com

 

https://devuna.tistory.com/76

 

[IDE] 이클립스 인텔리제이 장단점 비교(eclipse/IntelliJ)

[IDE] 이클립스 인텔리제이 장단점 비교(eclipse/intelliJ) 1. 이클립스(eclipse) 역사가 오래되어 잘 작성된 문서, 수 많은 플러그인들이 존재하며 가장 대중적으로 사용되고 있는 IDE이다. 가장 큰 강

devuna.tistory.com

 

https://velog.io/@composite/Eclipse-VS-Intellij-IDEA-%EB%85%BC%EB%9E%80-%EC%A2%85%EA%B2%B0

 

Eclipse VS Intellij IDEA 논란 종결

반박시 국비.

velog.io

 

 

3. Eclipse 설치하기 (윈도우 기준)

 

1) 먼저 아래의 링크에 들어가줍니다.

 

https://www.eclipse.org/downloads/

 

Eclipse Downloads | The Eclipse Foundation

The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 415 open source projects, including runtimes, tools and frameworks.

www.eclipse.org

 

2) 아래의 주황색 다운로드 버튼을 눌러줍니다.

 

3) 무슨 의도인지 모르겠지만 한번더 다운로드 버튼이 있는 화면이 나옵니다. 다시 다운로드 버튼을 눌러주세요.

 

4) 좌측 하단에 다운로드 완료된 설치파일을 클릭해줍니다.

 

5) 아래와 같은 창이 뜨면, 가장 상단의 "Eclipse IDE for Java Developers"를 클릭해줍니다.

 

6) 설치 경로를 정해주는 차례인데, 아무것도 건드리지 않고 "INSTALL" 버튼을 클릭해주세요.

 

7) 라이선스 관련 동의하는 부분입니다. "Accept Now"를 눌러주세요.

 

8) 설치가 시작됩니다. 잠시 기다려주세요.

 

9) 설치가 완료되면, "LAUNCH" 버튼을 클릭해서 Eclipse를 실행시켜주세요.

 

10) 기본 작업경로를 설정하는 부분인데, 기본으로 입력되어 있는 경로 그대로 "Launch" 버튼을 클릭해주세요. (나중에 변경할 수도 있는 것으로 보입니다.)

 

11) 아래와 같은 창이 잠시 떴다가 "eclipse-workspace - Eclipse IDE" 창이 뜨면 제대로 설치가 완료된 것입니다.

 

오늘은 자바용 IDE는 무엇이 있는지 알아보고, 그 중에서 Eclipse를 선택해서 설치까지 해보았습니다.

 

다음 시간에는 프로그래밍 언어를 배울 때 가장 기본중의 기본인 "Hello World"를 출력해보면서 자바의 실행 메커니즘에 대해서 공부해보겠습니다.


 

반응형
반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

 

지금까지 파이썬 위주로 포스팅을 해왔는데, 제가 업무에서 자바를 다루게 되어서 급하게 자바를 공부하게 되었습니다.

 

저도 자바 왕초보인 만큼 글에 부족함이 많을 수 있으니 미리 양해부탁드립니다!

 

 


 

1. 자바란?

자바(Java)는 C언어에 객체 지향적 기능을 추가하여 만든 C++과는 달리, 처음부터 객체 지향 언어로 개발된 프로그래밍 언어입니다. 비슷한 언어로는 MS에서 개발한 C#이 있다고 합니다. 여담이지만 C++에서 ++을 두개 더 붙여서 #이 되었다고 하네요.

 

자바의 가장 큰 특징은 자바 가상 머신(JVM, Java Virtual Machine)을 사용하여, 운영체제와는 독립적으로 동작할 수 있다는 것입니다. 즉, Windows, Linux, Mac 어느 운영체제에서도 동일한 코드로 실행이 가능하다는 것입니다.

 

바로 이러한 점 때문에 자바는 2022년 현재 가장 인기있는 언어 Top3에 랭크하고 있습니다.

 

출처. TIOBE

 

2. JDK 설치

JDK는 Java Development Kit로 자바 소프트웨어 개발을 위한 여러 도구의 구성을 의미하며, 자바를 설치한다는 것은 JDK를 설치하는 것과 동일합니다.

 

자바는 2022년 기준 18버전까지 나와 있으며 저는 LTS(장기 지원) 릴리스인 17버전을 설치하였습니다.

 

설치방법

1) 구글에서 java download를 검색해서 가장 상단의 "자바 다운로드 | 오라클"을 클릭합니다. 

 

2) 아래의 사진에 빨간색 사각형으로 표시한 부분을 순서대로 클릭하여, exe 파일을 다운로드 해줍니다. (Windows 기준)

 

3) 다운로드가 완료되면 클릭하여 설치파일을 실행합니다.

 

4) 그림을 따라서 버튼들을 클릭해줍니다.

 

3. JDK 설치 여부 확인

필수는 아니지만 자바가 잘 설치되었는지 확인해보겠습니다.

 

1) 윈도우키와 R키를 함께 누르면 아래와 같은 실행 창이 뜹니다. 입력창에 cmd라고 입력하고 확인을 눌러줍니다.

 

2) java -version을 입력고 엔터를 누르면 아래와 같이 java의 버전 정보가 출력됩니다.

 


<참고 자료>

 

1. 네이버 부스트코스 강의_쉽게 배우는 자바1

 

2. 자바의 정석_3rd Edition

반응형
반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

 

2022.03.11 - [파이썬 패키지/라이브러리&패키지 소개] - 파이썬 주요 라이브러리 정리


업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART) 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

 

 

지난 시간에 파이썬 코드를 이용해서 Gmail에 메일을 보내는 방법에 대해서 공부해 보았다면, 이번 시간에는 받은 메일을 읽는 방법을 공부해보겠습니다.

 

이번 시간 역시 Gmail을 파이썬으로 사용하기 위해서는 '앱 비밀번호'가 필요합니다.

 

만약 구글에서 '2단계 인증'과 '앱 비밀번호' 설정을 함께 진행하지 않으셨다면 지난 글을 보시고 설정을 마치신 후에 이번 강의를 따라와 주세요!

 

2022.03.17 - [파이썬 패키지/이메일] - [python/smtplib] 파이썬으로 구글 Gmail 보내기 1편. SMTP의 개념과 구글 앱 비밀번호 발급받기

 

 


1.  imaplib 모듈 불러오기

 

가장 먼저 해줄 일은 imaplib 모듈을 import 해주는 것입니다. imaplib 역시 smtplib 모듈과 같이 파이썬 내장 라이브러리에 포함된 모듈로 별도의 설치가 필요 없답니다.

import imaplib

 

2.  imap 객체 생성

 

다음으로는 Gmail 메일의 imap 서버의 url 정보를 입력하고 server라는 이름의 변수에 담아줍니다.

imap = imaplib.IMAP4_SSL('imap.gmail.com')

 

3.  imap 서버에 로그인

 

이제 메일 정보를 입력해줍시다. 여기서 지난 시간에 발급받은 "앱 비밀번호"가 필요해요. 만약 error: b'[ALERT] Application-specific password required 라는 오류가 출력된다면 그건 평소 사용하시던 비밀번호를 입력하셨기 때문일거예요.

# imap.login('메일 주소', '비밀번호')
imap.login('xxxxx@gmail.com', '지난 시간 받았던 16자리 앱 비밀번호')

 

4.  사서함 선택

 

전체편지함을 선택하기 위해서는 아래의 코드가 필요합니다. 사서함을 선택하는 코드라고 하는데, 만약 사서함을 여러개로 분류해서 사용한다면 해당 사서함의 이름을 'INBOX' 대신 입력하면 되지 않을까 생각됩니다. (실제로 해보진 않았답니다!) 

# 사서함 선택, 반환 데이터는 mailbox에 있는 메시지 수
imap.select("INBOX")

 

5.  이메일 선택

 

사서함에서 가장 최신에 받은 메일을 참조하기 위해서는 아래와 같은 코드를 실행해줍니다. 이때 uid라는 함수를 사용해서 각 메일에 고유의 번호를 부여해서 인덱싱 할 수 있습니다. 세부적으로 코드가 어떻게 작동하는지 알고 싶으신 분들은 코드를 한줄 한줄 실행하면서 print( ) 함수로 출력해 보시는 걸 추천드립니다.

# 사서함의 모든 메일의 uid 정보 가져오기
# 만약 특정 발신 메일만 선택하고 싶다면 'ALL' 대신에 '(FROM "xxxxx@naver.com")' 입력
status, messages = imap.uid('search', None, 'ALL')

messages = messages[0].split()

# 0이 가장 마지막 메일, -1이 가장 최신 메일
recent_email = messages[-1]

 

저는 저의 네이버 메일을 이용해서 아래와 같이 '코딩유치원 화이팅!'이라는 제목으로 메일을 보냈고, 이 메일이 최신 메일인 상태입니다.

 

6.  선택한 메일의 내용 가져오기

 

선택한 메일(여기서는 가장 최신의 메일)의 내용을 사람이 읽을 수 있는 형태로 바꾸어 줍니다. decode하기 전의 내용이 궁금하시다면 raw를 print( ) 함수로 출력해보세요.

# fetch 명령어로 메일 가져오기
res, msg = imap.uid('fetch', recent_email, "(RFC822)")

# 사람이 읽을 수 있는 없는 상태의 이메일
raw = msg[0][1]

# 사람이 읽을 수 있는 형태로 변환
raw_readable = msg[0][1].decode('utf-8')

 

7.  선택한 메일의 내용 파싱하기

 

파싱이란 복잡하게 흩어진 정보에서 원하는 정보만 추출하는 것을 말합니다. 이때는 지난 시간에 메일을 보낼 때 사용했던 email 모듈을 여기서도 사용합니다. 메일 내용을 확인 하는 부분이 조금 복잡한데 이에 대한 내용은 여기서는 자세히 다루지 않겠습니다.

 

궁금 하신 분들은 글 마지막의 점프 투 파이썬 - 라이브러리 예제 편 (POP3) 링크를 참조하시면 설명이 잘 되어 있습니다.

 

import email

# raw_readable에서 원하는 부분만 파싱하기 위해 email 모듈을 이용해 변환
email_message = email.message_from_string(raw_readable)

from email.header import decode_header, make_header

# 보낸사람
fr = make_header(decode_header(email_message.get('From')))
print(fr)

# 메일 제목
subject = make_header(decode_header(email_message.get('Subject')))
print(subject)

# 메일 내용
if email_message.is_multipart():
    for part in email_message.walk():
        ctype = part.get_content_type()
        cdispo = str(part.get('Content-Disposition'))
        if ctype == 'text/plain' and 'attachment' not in cdispo:
            body = part.get_payload(decode=True)  # decode
            break
else:
    body = email_message.get_payload(decode=True)
    
body = body.decode('utf-8')
print(body)

 

<최종 실행 결과>

<실제 메일>

 

 

오늘 준비한 내용은 여기까지입니다.

 

감사합니다.

 


<참고 자료>

 

1. imaplib 공식 문서

https://docs.python.org/ko/3/library/imaplib.html

 

2. 점프 투 파이썬 - 라이브러리 예제 편 (imaplib)

https://wikidocs.net/130371

 

3. 점프 투 파이썬 - 라이브러리 예제 편 (pop3)

https://wikidocs.net/130215

 

반응형
반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

 

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

 

업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART)나 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

 

 


이번 시간에는 아주 간단히 MS 워드 문서(.docx)를 PDF로 변환할 수 있게 해주는 패키지에 대해 공부해보겠습니다.

 

참고로 저는 쥬피터 노트북 환경에서 해당 프로젝트를 진행하였으나, 그냥 파이썬 파일로 코딩하고 실행시키셔도 무방합니다.

 

편하신 방법으로 따라와 주세요.

 

1. docx2pdf 설치

 

먼저 이름에서 그 목적이 확실히 느껴지는 docx2pdf 패키지를 설치해줍니다.

 

쥬피터 노트북의 경우 항상 새로운 패키지나 모듈을 설치한 후에는 완전히 껐다가 새로 실행시켜 주셔야하는 점 주의 바랍니다.

 

쥬피터 노트북이 아닌 파이썬 인터프리터의 경우 커맨드 창에서 아래의 코드를 입력하고 실행시켜주세요.

 

pip install docx2pdf

 

 

2. MS Word 문서를 PDF로 변환하기

 

docx2pdf는 그 사용법이 매우 간단하고 기능이 한정적이라서 아래의 코드면 더 배울게 없습니다.

 

너무 간단해서 주석도 따로 달지 않았습니다.

 

from docx2pdf import convert

inputFile = "변환시킬 워드 문서.docx"
outputFile = "PDF로 변환된 워드 문서.pdf"

convert(inputFile, outputFile)

 

<실행이 완료 된 코드>

 

 

3. MS Word 문서를 PDF로 변환하기 (실습)

 

이대로 글을 끝내기엔 조금 짧은감이 있어서 실제로 워드 파일을 하나 만들어서 변환해보는 것을 보여드리겠습니다.

 

MS Word에서 새문서를 만들어서 아래와 같이 글을 입력하고 저장해줍니다.

 

 

자 이제 저장된 워드 파일(.docx)을 변환시켜 볼까요? 따로 코드는 넣지 않겠습니다.

 

코드를 실행시키니 아래와 같은 PDF문서가 생성되었습니다.

 

 

참고로 저는 맥북을 사용하는데 가장 처음 docx2pdf로 변환을 실행하니 아래와 같은 팝업창이 나와서 추가적인 설정을 해주었답니다.

 

처음 한번만 설정해주면 그 다음부터는 안해줘도 되는 것 같네요.

 

1) 아래와 같이 창이 뜨면 확인을 눌러줍니다.

 

2) 확인을 눌러주었더니 추가 권한을 요구합니다. 선택을 눌러주세요.

 

3) 엑세스 허가를 눌러줍니다.

참고로 제가 처음 변환을 시도했던 파일명이 학업계획서였으니 오해 없으시길 바랍니다.

 

오늘 준비한 내용은 여기까지입니다.

 

다음에 기회가 되면 윈도우 환경에서 어떻게 작동하는지 테스트 해보고, 초기 설정을 하는 부분이 있는지 확인해보겠습니다.

 


<참고 자료>

 

1. Python에서 Docx를 PDF로 변환_DelftStack

https://www.delftstack.com/ko/howto/python/python-convert-docx-to-pdf/

반응형
반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART) 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

 

 


혹시 'Garbage in, garbage out'라는 말을 들어보셨나요?  

 

직역하면 쓰레기가 들어가면 쓰레기가 나온다라는 말로, 아무리 좋은 컴퓨터와 알고리즘이라도 잘못된 입력값이 들어가면 잘못된 출력값이 나온다는 말입니다.

 

제가 예전에 데이터 분석 프로세스를 요리하는 과정에 비유했었는데요.

 

2021.07.21 - [파이썬 패키지/데이터분석] - [코딩유치원] 비전공자도 쉽게 이해하는 데이터 분석 프로세스 (ft. 수집, EDA, 전처리, 모델링)

 

데이터 수집 과정을 요리 재료를 준비하는 과정이라면, 잘못된 데이터란 상한 음식에 비유할 수 있겠죠.

 

상한 재료로 요리한 음식을 먹은 손님은 아마 다시는 식당을 찾아 오지 않을 것이기 때문에 요리사는 재료를 준비하는데에 가장 많은 신경을 써야할 것입니다. 요리사가 직접 재료를 준비하지 않고 다른 사람에게 일을 맡기더라도 재료의 상태를 체크할 수도 있어야겠죠?

 

마찬가지로 데이터 분석가는 데이터를 준비하는데에 가장 많은 신경을 써야합니다. 앞서 말씀드렸듯이 가장 근본이 되는 데이터가 신뢰를 잃으면 그 데이터 분석 결과는 아무도 믿을 수가 없기 때문입니다.

 

그래서 오늘은 일반적인 데이터 준비 과정에 대해서 알아보려 합니다.

 

1. 데이터 수집

 

가장 첫 단계는 분석에 사용할 데이터를 분석 DB(데이터 베이스)로 가져 오는 것입니다.

 

회사 내부의 DB에 프로젝트에 사용할 데이터가 있다면 그곳에서 가져오고, 없다면 외부에서 데이터를 사거나 크롤링을 통해서 수집해야합니다.

 

이때 주의할 점은 메타 데이터를 함께 수집해야한다는 것입니다. 메타 데이터는 데이터에 대한 정보로, 데이터의 정의, 기본키(Primary Key), 생성 기준, 생성 시점, 연관된 데이터 정보 등이 있습니다. 이러한 메타 데이터는 추후 단계들에서 데이터를 다룰 때에 중요한 참고 자료가 됩니다.

 

2. 데이터 품질 확인

 

두번째 단계는 수집한 데이터를 얼마나 믿을 수 있는지 확인하는 단계입니다.

 

데이터의 품질은 크게 7가지 지표로 평가합니다.

 

 

3. 데이터 정제

 

세번째 단계는 위의 단계에서 확인된 부족한 데이터 품질을 향상시키기 위해 데이터를 정제하는 단계입니다. 

 

1단계에서 언급했던 메타 데이터를 참고해서 누락된 값(결측치)과 오류 값을 적절히 전처리 해줍니다.

 

만약 메타 데이터가 부족하여 전처리할 근거가 부족할 때엔, 해당 변수의 평균값이나 최빈값으로 대체하기도 하며, 해당 변수에 집중적으로 오류값이나 결측치가 발생할 때엔 해당 변수를 통째로 제거해주기도 합니다.

 

4. 데이터 변환

 

네번째 단계는 수집한 데이터의 형태나 스케일 등을 변환 처리하는 단계입니다.

 

데이터 변환을 해주는 이유는 더 나은 데이터 분석 결과를 얻기 위해서입니다.

 

데이터 변환 방법에는 여러가지가 있지만, 가장 널리 사용하는 방법은 정규화(Normalization), 범주화(Categorisation)가 있습니다.

 

정규화는 예를 들어 신장과 몸무게의 스케일이 달라서 어느 한가지 변수가 해석 결과에 크게 영향을 끼치는 것을 방지하기 위해서 0~1 사이의 값으로 변환시키는 것을 말합니다.

 

범주화는 연속되는 값을 어느 구간으로 나누어서 분류하고 싶을 때 사용합니다. 예를 들어 평균 60점 이상은 1, 미만은 0으로 변환하는 것이죠.

 

5. 데이터 특성 추출

 

다섯번째 단계는 '피처 엔지니어링'이라고도 불리는 단계로, 분석을 위하여 변수(혹은 피처)를 새로 만드는 것을 말합니다.

 

이 과정에서는 해당 분야에 대한 전문적 지식과 분석 경험이 필요합니다. 데이터 분석 대회 플랫폼으로 유명한 Kaggle의 순위를 가르는 요인 중에 '피처 엔지니어링'이 중요한 역할을 한다고 합니다.

 

마치 원석을 가공해서 보석을 만들어 내는 것과 비슷한 과정이라고 이해하시면 좋을 것 같습니다.

 

 

6. 데이터 준비  과정 기록

 

마지막 단계는 1~5단계에서 수행한 작업을 문서화 하는 단계입니다. 데이터 준비에 사용한 코드와 각각의 과정을 설명하고 기록하는 것입니다.

 

데이터 분석이 한 번에 끝난다면 이 과정이 필요 없겠지만, 대부분의 데이터 분석은 일정한 주기로 새롭게 생성되는 데이터를 다시 분석하고 결과를 점검합니다.

 

그렇기 때문에 반복되는 데이터 분석 작업을 효율적으로 수행하고, 이전의 데이터 분석과 동일한 관점을 유지하기 위해서는 데이터 준비에 사용한 코드와 각 단계에서 수행한 작업에 대한 설명을 잘 정리해야합니다.

 

 


<참고 자료>

 

1. 빅데이터 커리어 가이드북 (도서)

 

2. 데이터 품질 지표

https://charstring.tistory.com/144

반응형
반응형

안녕하세요, 코린이를 위한 코딩유치원을 운영중인 손생입니다.

 

오늘은 사내강사 교육 수강 중에 알게 된 꿀정보를 공유드리려고 해요.

 

가끔 PPT 자료를 만들거나 영상 편집을 할 때면, 배경이 제거된 인물이나 사물의 이미지를 얻고 싶을 때가 있죠?

 

그럴 때 사용하면 정말 좋을 것 같습니다. 파워포인트에서 실행하는 배경 제거 기능보다 성능이 훨씬 좋더라구요! 

 

https://www.remove.bg/ko

 

이미지에서 배경 제거 – remove.bg

한 번의 클릭으로 5 초 안에 이미지 배경을 자동으로 제거합니다. 수동으로 픽셀을 선택하는 데 시간을 소비하지 마십시오. 지금 사진을 업로드하고 마법을 확인하세요.

www.remove.bg

 

간략히 사용법을 설명드리면,

 

1) 이미지를 직접 드래그 해서 아래의 위치에 올려놓거나

 

2) 이미지를 단축키(Ctrl + C)로 복사한 후, 해당 페이지의 빈곳이나 창을 클릭하고 붙여넣기(Ctrl + V) 해주시면 됩니다.

 

위의 방법으로 이미지를 업로드 하면 아래와 같이 배경이 제거된 사진이 나오며, 다운로드 눌러주시면 브라우저 창 아래에 다운로드된 이미지 파일이 표시됩니다.

 

 

그리고 이 사이트는 어떤 방식으로 돈을 벌까 생각 했었는데, 큰 해상도의 사진을 얻고 싶으면 추가 결제가 필요합니다.

 

저는 딱히 고해상도 이미지가 필요 없을 것 같지만, 혹시 필요하신 분들을 위해서 고해상도의 기준과 요금제에 대해서도 알아보았습니다.

 

<해상도 기준>

 

<요금제 정책>

 


 

종종 유용한 팁 알게되면 오늘처럼 공유드리도록 하겠습니다.

 

감사합니다.

반응형
반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

 

2022.03.11 - [파이썬 패키지/라이브러리&패키지 소개] - 파이썬 주요 라이브러리 정리


업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART) 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

 

 

오늘은 지난 시간에 이어서 파이썬 코드를 이용해서 Gmail에 메일을 보내는 방법에 대해서 공부해보겠습니다.

 

만약 구글에서 '2단계 인증'과 '앱 비밀번호' 설정을 함께 진행하지 않으셨다면 지난 글을 보시고 설정을 마치신 후에 이번 강의를 따라와 주세요!

 

2022.03.17 - [파이썬 패키지/이메일] - [python/smtplib] 파이썬으로 구글 Gmail 보내기 1편. SMTP의 개념과 구글 앱 비밀번호 발급받기


1.  smtplib 모듈 불러오기

 

가장 먼저 해줄 일은 smtplib 모듈을 import 해주는 것입니다. 지난 시간에 말씀드렸 듯이 smtplib 모듈은 파이썬 내장 라이브러리에 포함된 모듈로 별도의 설치가 필요 없답니다.

 

import smtplib

 

2.  smtp 객체 생성

 

다음으로는 사용할 메일의 smtp 서버의 url과 포트(port) 정보를 입력하고 변수에 담아줍니다. 저는 gmail을 사용하기 위해서 위의 코드를 이용했습니다.

# smtplib.SMTP('사용할 SMTP 서버의 URL', PORT)
smtp = smtplib.SMTP('smtp.gmail.com', 587)

# TLS 암호화 (TLS 사용할 때에만 해당코드 입력)
smtp.starttls()

 

만약 네이버, 다음, 아웃룩 메일 등을 이용하시려면 아래의 smtp 정보를 참고하셔서 괄호 안의 정보만 바꿔주시면 됩니다.

# SMTP 서버 정보

smtp_info = {
    'gmail.com': ('smtp.gmail.com', 587),
    'naver.com': ('smtp.naver.com', 587),
    'outlook.com': ('smtp-mail.outlook.com', 587),
    'hotmail.com': ('smtp-mail.outlook.com', 587),
    'yahoo.com': ('smtp.mail.yahoo.com', 587),
    }

 

참고로 SMTP 서버의 암호화 방식에 따라 TLS(Transport Layer Security) 혹은 SSL(Secure Socket Layers)을 사용합니다.

TLS는 포트 587을, SSL은 465를 사용하는데 SSL 방식을 사용하기 위해서는 위와는 조금 다른 코드를 사용해야하니 주의해주세요.

 

smtp = smtplib.SMTP_SSL('smtp.daum.net',465)
# SMTP 서버 정보

smtp_info = {
    'daum.net': ('smtp.daum.net', 465),
    'hanmail.net': ('smtp.daum.net', 465),
    'nate.com': ('smtp.mail.nate.com', 465),
    }

 

 

3.  smtp에 메일주소와 비밀번호 입력

 

이제 메일 정보를 입력해줍시다. 여기서 지난 시간에 발급받은 "앱 비밀번호"가 필요해요.

 

# smtp.login('메일 주소', '비밀번호')
smtp.login('xxxxx@gmail.com', '지난 시간 받았던 16자리 앱 비밀번호')

 

 

4.  email 모듈의 MIMEText 클래스로 메일 내용 입력

 

간단한 메일을 보내는 경우에는 email 모듈의 MIMEText 클래스를, 좀 더 복잡한 메일은 MIMEMultipart 클래스를 사용합니다.

이번 시간에는 메일을 보내는 것이 목표이므로 MIMEText 클래스를 이용해서 메세지를 보내보겠습니다.

 

# email 모듈의 MIMEText 클래스 import
from email.mime.text import MIMEText

# 메일 내용 입력
msg = MIMEText('본문')

# 메일 제목 입력
msg['Subject'] = '제목'

 

 

5.  메일 보내기

 

마지막으로 해줄 일은 발신 메일과 수신 메일 주소를 입력해주는 일입니다.

 

smtp.sendmail('발신 할 메일 주소', '수신 받을 메일 주소', msg.as_string())

 

코드를 실행하였더니 아래와 같이 정상적으로 메일이 온 것을 확인할 수 있었습니다.

 

6.  smtp 종료

 

메일을 더 보낼 일이 없다면, 잘 사용했던 smtp 객체를 종료하여 SMTP 서버와의 연결을 끊어줍니다.

 

smtp.quit()

 

 


<참고 자료>

 

1. SSL과 TLS의 차이

http://www.ktword.co.kr/test/view/view.php?m_temp1=1957 

 

2. 예제로 배우는 파이썬 프로그래밍_메일 보내기(SMTP)

http://pythonstudy.xyz/python/article/508-%EB%A9%94%EC%9D%BC-%EB%B3%B4%EB%82%B4%EA%B8%B0-SMTP

 

반응형
반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

 

2022.03.11 - [파이썬 패키지/라이브러리&패키지 소개] - 파이썬 주요 라이브러리 정리


업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART) 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

 

 

오늘은 파이썬으로 구글의 Gmail을 사용하는 방법에 대해서 공부해보겠습니다.

 

구글의 보안이 철저해서 별도의 설정 없이는 오늘 배울 smtplib 모듈을 제대로 다룰 수 없으므로,

간단하게 SMTP의 개념을 알아본 후, 구글에서 '2단계 인증'과 '앱 비밀번호' 설정을 함께 진행해보겠습니다.

 


1. SMTP의 개념과 smtplib 모듈 소개

 

파이썬에서 이메일을 보내기 위해서는 파이썬 내장 라이브러리(PIL)의 smtplib와 email 모듈을 사용합니다.

 

 

여기서 smtplib의 SMTP(Simple Mail Transfer Protocol)는 메일을 보내는데 사용되는 프로토콜입니다.

 

출처. 네이버 블로그_Life in Hong Kong

*프로토콜(Protocol)이란?
정보기기 사이에서 통신을 통한 정보 교환이 필요한 경우 이러한 통신을 원활하게 하기 위해 사전에 정의한 여러 통신 규칙과 방법에 대한 약속인 통신 규약을 의미합니다. 

 

이 SMTP 사용법만 익힌다면, 우리가 자주 사용하는 구글, 네이버, 다음, 아웃룩 등의 메일을 자동화 할 수 있답니다.

 

# SMTP 서버 정보

smtp_info = {      
    'gmail.com': ('smtp.gmail.com', 587),
    'naver.com': ('smtp.naver.com', 587),
    'daum.net': ('smtp.daum.net', 465),
    'hanmail.net': ('smtp.daum.net', 465),
    'nate.com': ('smtp.mail.nate.com', 465),
    'outlook.com': ('smtp.outlook.com', 587),
    }

 

참고로 SMTP 서버의 암호화 방식에 따라 TLS 혹은 SSL을 사용하는데, TLS는 포트 587을, SSL은 465를 사용합니다.

(이 부분은 추후에 다시 자세히 다루겠습니다)

 

SMTP에 대한 개념 설명은 여기까지 하고, 앞서 언급했던 Gmail 설정을 함께 진행해보겠습니다.

 

2. Gmail 계정 설정

 

당연한 이야기겠지만 Gmail을 사용하기 위해서는 구글 계정이 있으셔야 합니다. 구글 계정을 로그인 한 후, 아래의 그림을 따라서 순서대로 클릭 및 입력을 해주세요.

 

 

3. 메일 보내기 기초

 

설정이 잘 되었다면 아래의 코드를 실행했을 때, 메일이 자동으로 보내지는 것을 확인 하실 수 있답니다.

 

자세한 내용은 다음 시간에 이어서 설명 드리겠습니다.

 

import smtplib
from email.mime.text import MIMEText

smtp = smtplib.SMTP('smtp.gmail.com', 587)

smtp.ehlo()

smtp.starttls()

smtp.login('xxx@gmail.com', '발급받은 앱 비밀번호')

msg = MIMEText('내용 : 본문 내용')
msg['Subject'] = '제목: 파이썬으로 gmail 보내기'

smtp.sendmail('발신 할 메일 주소', '수신 받을 메일 주소', msg.as_string())

smtp.quit()

 

감사합니다.


<참고 문서>

 

1. SMTP, IMAP, POP3의 개념

https://m.blog.naver.com/ijoos/221742035684

 

2. 파이썬으로 이메일 보내기

https://coblin.xyz/23

반응형
반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART) 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

 

 

오늘은 파이썬의 가장 큰 장점인 다양한 라이브러리(혹은 패키지)라고 하는데, 어떤 라이브러리들이 있는지 보기 쉽게 정리해보았습니다.

 

추후 공부를 해가면서 더 추가할 것이 있다면 추가반영 하도록 하겠습니다.


1. 데이터 분석 및 AI 관련 라이브러리

 

2. 업무자동화 관련 라이브러리


 

반응형
반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART) 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

 

 

오늘은 코딩을 하다보면 필요한 시간 정보를 다룰 수 있게 해주는 time 모듈에 대해서 공부해보겠습니다.


 

1. 시간의 개념

 

1) UTC (Universial Time Cordinated): 협정 세계시

1972년부터 세계 표준시로 정해짐

GMT와 UTC 사이의 시차는 없고, UTC가 오차가 더 적음

 

2) GMT (Greenwich Mean Time): 그리니치 평균시

- 영국 그리니치 천문대 위치를 기준으로 정한 표준시

- 1925년부터 1972년까지 표준시

 

3) KST (Korea Standard Time): 한국 표준시, UTC +9

 

 

2. time 모듈 기초 - time( ), gmtime( ), localtime( )

 

우선 time 모듈을 불러와 줍니다. time 모듈은 파이썬 내장 라이브러리(PIL)이므로 따로 설치하지 않으셔도 됩니다.

import time

 

1) time( )

#현재시각을 1970-01-01 00:00:00(UTC)를 기준으로 초단위로 나타낸 시간
time.time()

 

<실행 결과>

 

이런 시간 표시 방식은 우리가 잘 사용할 일이 없겠죠? 그래서 time.time( ) 함수는 자주 사용되진 않고 아래와 같이 '어느 시점부터 몇 초가 지났는지'를 산출하기 위해서 아래와 같이 사용되기도 합니다. (쥬피터 노트북을 사용하면 위의 그림에서 보시듯이 그냥 자동으로 실행시간이 측정되니 쓸 일이 없겠죠?ㅎㅎ)

# 측정 시작
start = time.time()

# 실행 시간을 알고싶은 코드 (여기서는 단순히 1.5초 delay를 줌) 
time.sleep(3)

# 측정 종료
end = time.time()

print('코드 실행 시간:', end - start)

 

 

2) gmtime( )

# GMT 기준으로 struct_time을 반환
time.gmtime()

 

<실행 결과>

 

실행결과를 보시면 tm_xxxx로 표현된 변수에 값들이 들어간 것이 보이실텐데요.  아래와 같이 변수명을 참조해서 따로 사용하실 수 있습니다. (차례대로, 연, 월, 일, 시, 분, 초, 요일, 연중 경과일, 썸머타임 적용 여부_0:미적용 1:적용 -1:모름)

# 연도 가져오기 예시
t = time.gmtime()
t.tm_year

 

 

3) localtime( )

 

앞에서 배운 gmtime( )이 세계의 기준 시간이라면 localtime( )은 현재 코드를 실행한 사람이 위치한 지역 기준의 시간이 struct_time으로 출력됩니다. 저는 주로 이 함수를 자주 사용한답니다.

# 한국에서 실행한다면 GMT+9가 출력
time.localtime()

 

<실행 결과>

 

3.  struct_time을 문자열로 / 문자열을 struct_time로 변환하는 법- strftime( ), strptime( )

 

1) strftime( )

tm = time.localtime()
str_tm = time.strftime("%Y-%m-%d %I:%M:%S %p", tm)
print(str_tm)

 

<실행 결과>

 

 

2) strptime( )

str_tm = "2022-02-24 11:10:08 PM"
tm = time.strptime(str_tm, "%Y-%m-%d %I:%M:%S %p")
print(tm)

 

<실행 결과>

 

위에서 보라색으로 표현된 문자열들은 아래의 표를 참고하셔서 여러분들이 원하시는 시간 표현 방식을 선택하실 수 있습니다.

 

4.  코드를 실행할 때 delay를 주는 법 - time.sleep( )

 

스크립트 언어인 파이썬 코드를 한줄씩 실행하다보면, 코드가 명령한 내용이 완전히 실행될 때 까지 기다려줘야 할 때가 있습니다.

 

이미 많이 보셨겠지만 이럴 때는 아래의 코드를 사용하며, 단위는 초(sec)입니다.

 

# 괄호 안에 delay 시키고 싶은 초를 입력
time.sleep()

 

 


 

<참고 자료>

 

1. 네이버 블로그_사진속의 풍경여행

https://blog.naver.com/gooddayvic/222110630554

 

 

2. 티스토리 블로그_잡동사니 저장중

https://responding.tistory.com/60

 

3. 파이썬 공식 문서_time 모듈

https://docs.python.org/3/library/time.html

반응형
반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART) 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

 

 

오늘은 pandas를 공부하다가 새롭게 알게된 내용을 간단히 정리하고 공유하려고 합니다.

 

바로 엑셀 파일(.xlsx)을 판다스의 Data frame으로 불러올 때, 시트를 선택해서 불러오는 방법인데요.

 

지금까지 sheet_name을 별도로 설정 안 해줘도 잘 동작했던 이유는 sheet_name 파라미터의 기본값이 가장 첫 시트였기 때문이었습니다.

 

만약 한 엑셀 파일에 여러 시트가 있고, 각각의 시트를 차례대로 참조해야할 때는 오늘 내용이 도움이 될 것 같습니다.

 


시작하기에 앞서 테스트를 위해, 아래와 같이 시트가 2개인 엑셀 문서를 만들어 보았습니다. 

실습에 사용 할 엑셀

1. 시트 이름으로 불러오기

 

먼저 시트 이름으로 "2반" 시트의 데이터를 불러와 보겠습니다. 

 

import pandas as pd

# df = pd.read_excel("엑셀 파일 경로", sheet_name = "불러올 시트 이름")
df = pd.read_excel("Test.xlsx", sheet_name="2반")
df

 

<실행 결과>

 

아주 잘 불러와 졌네요!

 

 

2. 시트 인덱스로 불러오기

 

다음으로는 시트의 인덱스를 이용해서 "2반" 시트의 데이터를 불러와 보겠습니다. 인덱스는 0부터 시작하므로 첫번째 시트가 0, 두번째 시트가 1입니다.

 

import pandas as pd

# df = pd.read_excel("엑셀 파일 경로", sheet_name = 불러올 시트의 인덱스)
df = pd.read_excel("Test.xlsx", sheet_name=1)
df

 

<실행 결과>


<참고 자료>

 

엑셀과 비교하며 배우는 파이썬 데이터 분석_장쥔홍 지음

 

 

반응형

+ Recent posts