Backend 46

파이썬 이메일 전송 활용 예제

파이썬으로 간단하게 네이버 이메일을 보내보려고 한다. 이번 포스팅에서는 네이버 메일로 테스트를 진행하지만, 타메일에서도 환경설정만 한다면 이메일 전송할 수 있다. 최종 목표 사전 준비 1. 파이썬과 주피터가 설치되어 있지 않다면 파이썬 3.11 설치와 주피터 노트북 사용법 포스팅을 참고하여 설치한다. 2. 이메일을 전송하기 위해 아래 라이브러리가 필요하다. 파이썬 설치 시 기본 제공되므로 import로 가져다 쓰면 된다. 이메일 전송하기 위해, smtplib 라이브러리 사용 이메일 메시지를 관리하고 파일 첨부를 할 수 있는 email 라이브러리 사용 자세한 사용법은 라이브러리 문서를 참고하자. smtplib 라이브러리 문서 email 라이브러리 문서 email 라이브러리 email 예제 3. 아래 라이브..

Backend/Python 2023.02.15

파이썬 웹크롤링으로 주식 정보 가져와서 엑셀 저장하기

지난번 포스팅에서는 OpenAPI를 이용하여 이미지를 수집해보았다. 이번에는 크롤링을 이용하여 웹 페이지의 데이터를 수집해 보려고 한다. 크롤링 대상은 KOSPI 일별 체결가로 정했지만, 만약 주식에 관심이 있다면 네이버 금융 주식거래 데이터를 크롤링할 수 있고, 부동산에 관심 있다면 KB시세 데이터를 크롤링하는 등 본인이 원하는 사이트를 대상으로 선택해도 된다. 웹사이트의 데이터를 수집해서 아래와 같이 엑셀 파일로 저장하는 것이 이번 포스팅의 목표이다. 최종 목표 사전 준비 1. 파이썬과 주피터가 설치되어 있지 않다면 파이썬 3.11 설치와 주피터 노트북 사용법 포스팅을 참고하여 설치한다. 2. 크롤링을 하기 위해 아래 라이브러리가 필요함을 숙지한다. 웹 페이지 정보를 가져오기 위해, requests ..

Backend/Python 2023.02.10

파이썬에서 OpenAPI를 통해 이미지 수집하기

파이썬으로 간단한 예제를 만들어보려고 한다. OpenAPI를 통해 고독한 박명수 이미지를 수집할 것이다. 웹 크롤링으로 이미지를 가져올 수도 있지만 간단히 OpenAPI를 사용하겠다. OpenAPI는 카카오나 네이버 등에서 벡엔드를 미리 구축해 놓고, 사용자에게 그 벡엔드를 이용하는 방법을 제공한다. 즉, 사용자는 이미 만들어진 백엔드를 사용법만 알면 백엔드 자원을 사용할 수 있다. 즉, 프런트엔드만 신경쓰고 개발하면 되는 것이다. 이번 포스팅에서는 파이썬과 주피터 노트북을 이용하여, 카카오, 네이버에서 제공한 OpenAPI로 고독한 박명수 짤을 수집해 볼 것이며, 최종 목표는 아래와 같다. 최종 목표 사전 준비 1. 파이썬과 주피터가 설치되어 있지 않다면 파이썬 3.11 설치와 주피터 노트북 사용법 포..

Backend/Python 2023.02.05

절차지향과 객체지향에 관한 고찰

누군가 내게 "자바의 특징이 무엇인가?" 라고 묻는다면 반사적으로 객체지향 언어라고 말할 것이다. 그만큼 '자바는 객체지향 언어'라는 인식이 강하게 박혔기 때문이다. 그러나 남에게 핵심을 간추려 설명할 만큼 제대로 알고 있지는 못했다. 스파게티코드님이 절차지향과 객체지향을 비교하여 깔끔하게 설명한 글을 토대로 포스팅 하였다. 설명이 꽤 길지만 읽을 만한 가치가 있는 글이라고 생각한다. 절차지향 이 말에 한 번쯤 의구심을 품어본 적이 없는가? 위 사진은 절차지향과 객체지향의 차이점을 설명하는 단순화된 사례이다. 이를 바탕으로 실제로 자판기 프로그램을 구현한다고 생각해보자.​ 먼저 절차지향 방식을 보면, 차근차근 순서대로 따라가는 전형적인 절차식 프로그램임에 틀림이 없다. 그렇다면 객체지향 방식을 살펴보자...

Backend/Java 2022.10.09

문자열은 불변한다(String is Immutable)

자바에서 문자열을 만들 때 아래처럼 2가지 방법을 이용할 수 있다. String str1 = "개발새발"; // ""을 이용하여 문자열 생성 (String literal) String str2 = new String("개발새발"); // new 연산자로 문자열 생성 (String Object) 위의 출력결과는 동일하며, 사람들은 흔히 첫번째 방법으로 많이 쓴다. 그런데 메모리에 저장되는 공간은 엄연히 다르다는 것을 알고 있는가? 첫번째 방식인 String literal으로 생성하면 문자열은 힙영역의 String Pool에 저장되어 문자열이 동일하면 저장소를 공유할 수 있다. 반면 두번째 방식인 new 연산자로 생성하면 문자열은 힙영역에 저장되어 문자열이 같더라도 저장소 공유가 불가능하다. 이 차이점을 기..

Backend/Java 2022.08.14

자바의 데이터 타입(Primitive type, Reference type)

타입(Data type)이란 해당 데이터가 메모리에 어떻게 저장되고, 프로그램에서 어떻게 처리되어야 하는지를 명시적으로 알려주는 것이다. 자바에서 타입은 크게 기본형 타입과 참조형 타입이 있다. 기본형 타입(Primitive type) 기본형 타입은 아래 표와 같이 총 8개의 타입들이 존재한다. 자바에서 미리 형식을 정의하여 제공하고 있으며, 기본값이 존재하기 때문에 Null 개념이 존재하지 않으므로 만약 기본형 타입에 Null을 넣고 싶다면 래퍼 클래스를 활용하면 된다. 기본형 타입은 실제 값을 저장하는 공간으로, 스택(Stack) 메모리에 저장된다. 주로 문법상의 에러(예를 들어 ;을 안붙였다든지)로 빨간 줄이 쳐지는 경우처럼 컴파일 시점에 담을 수 있는 크기를 벗어나면 에러를 발생시키는 컴파일 에러..

Backend/Java 2022.01.31

자바의 구동 원리와 JVM(Java Virtual Machine)

자바 프로그램의 구동 원리 소스코드를 작성한다. (.java 확장자의 소스 파일) 컴파일러(javac.exe)가 바이트코드로 변환한다. (.class 확장자의 클래스 파일) 런처(java.exe)로 자바 가상 머신을 구동시킨다. 자바 가상 머신이 바이트코드를 해석하여 자바 프로그램이 실행된다. 위 순서에서 바이트코드(bytecode)는 자바 가상 머신이 이해할 수 있는 언어로 변환된 코드다. 자바 가상 머신만 설치되어 있다면 바이트코드는 어떤 운영체제에서라도 실행될 수 있다. 자바 가상 머신(JVM) 일반 프로그램은 "운영체제"가 프로그램을 실행시킨다. 반면 자바 프로그램은 운영체제가 JVM을 실행시키면 "JVM"이 프로그램(클래스 파일)을 실행시킨다. 즉, 자바 프로그램의 클래스 파일들은 운영체제에서 ..

Backend/Java 2022.01.26

Spring MVC 프로젝트의 기본 구조와 실행 순서

Spring MVC 프로젝트의 기본 구조 Spring의 전체적인 실행 순서 요청 -> DispatcherServlet -> HandlerMapping -> 요청 처리하기 (Controller Service DAO DB) -> DispatcherServlet -> ViewResolver -> View -> DispatcherServlet -> 응답 예시 1. 일반적인 기본 동작 순서 예시 2. 위 예시에서 Controller 뒷부분의 과정을 생략함 단계별 스프링 실행 순서 1. 클라이언트가 요청을 보낸다. 예를 들어, 사용자가 블로그 포스팅을 읽기 위해 http://localhost:8080/post/view 라는 블로그 글 조회 요청을 보냈다고 가정해보자. 2. 클라이언트의 요청을 DispatcherSe..

스프링 개발환경 구성하기 (7) STS 플러그인 설치 및 스프링 프로젝트 생성

📢 2022년 1월 기준으로 포스팅을 새로 반영하였습니다. 스프링을 개발할 때, 보통 2가지 방법으로 개발 도구를 설정하곤 한다. 스프링 전용의 STS 툴을 이용하거나 Eclipse 또는 IntelliJ에서 플러그인 형태로 사용하거나 개인적으로 2번째 방법인 Eclipse에서 STS 플러그인을 다운받아서 사용하고 있으므로 이 방법을 포스팅하려고 한다. 만약 1번째 방법으로 스프링 개발을 하려면 Spring Tool을 참고하자. 1. STS 플러그인 설치 이클립스에서 [Help] - [Eclipse Marketplace]을 누르면 아래의 창이 뜬다. Find 란에 'sts'를 검색하면 다양한 플러그인이 검색된다. 2022년 1월 기준으로 대표적으로 아래 3개 항목이 보일 것이다. Spring Tools 3..

스프링 개발환경 구성하기 (6) MySQL Workbench 이용하기

📢 2022년 1월 기준으로 포스팅을 새로 반영하였습니다. 이전 포스팅에서 MySQL 8 버전을 설치해보았다. 개인적으로 Oracle을 선호하기 때문에 MySQL로는 개발할 일이 없지만 MySQL을 설치했으므로 기본적인 Workbench 사용법을 가볍게 다뤄보려고 한다. 커넥션 생성하여 계정 연결하기 MySQL Workbench를 실행하면 최초 화면에서는 아래의 사진처럼 root 계정의 커넥션이 만들어져 있다. root 계정은 최상위 관리자 계정이므로 프로젝트 개발에는 사용하지 않는 것이 좋다. 그래서 [+] 버튼을 눌러서 설치할 때 MySQL을 설치할 때 만들어둔 계정으로 연결하려고 한다. 만약 사용자 계정을 안 만들었다면, root로 접속한 뒤 [Users and Privileges] 항목에서 사용자..