이호영

    제어 역전(Inversion of Control, IoC)과 의존성 주입(Dependency Injection, DI)

    💡제어 역전(IoC) 스프링 프레임워크 없이 개발할 때는 객체의 생성, 설정, 초기화, 메소드 호출, 소멸 등 객체의 생명 주기 관리를 개발자가 직접 관리하지만 스프링 프레임워크를 사용하면 객체의 생명 주기를 스프링 컨테이너, IoC 컨테이너에 위임할 수 있다. 이렇듯 객체의 관리를 개발자가 직접 하지 않고 컨테이너에 맡겨서 외부로 제어권을 위임한 것을 제어 역전이라고 부른다 객체의 생명 주기를 프레임워크에 위임하면 외부 라이브러리가 프로그래머가 작성한 코드를 호출하고 흐름을 제어할 수 있게 된다. 이렇게 되면 개발자는 비즈니스 로직을 작성하는 데에 더 집중 할 수 있다. 💡의존성 주입(DI) 의존성 주입이란 제어 역전의 방법 중 하나로, 사용할 객체를 직접 생성하지 않고 외부 컨테이너가 생성한 객체를 ..

    [개발 블로그는 어떻게 써야할까?]를 읽고

    블로그는 남들에게 지식을 전달하는 매체이기 때문에 개인 공부 노트처럼 쓰면 안된다 개인 공부 노트처럼 사용하려면 노션이나 노트같은 개인적인 공간에 어울림 단순한 클래스 사용법 다른 블로그에서 본 내용을 재정리 책에 나온 개념을 옮겨 적기 등의 글은 열심히 했다는 평가를 받을 수는 있지만 잘한다는 평가를 받기는 어려움 더보기 생각해보니 나도 블로그 초반과는 다르게 현재 복학을 준비하는 시점에서 준비할 것도 많다고 느껴지고 시간도 부족하고 귀찮다는 이유로 이런 식으로 블로그를 쓰려고 했다는걸 느낌 개념 정리를 하더라도 깊게해서 아무나 쓸 수 없는 글을 만들고 나의 기술력도 향상 시키자 ex) 단순 개념 정리 및 소개 x, 개념을 이해하기 위한 장단점 및 비교 분석 글자만 있는 글보다는 글의 가독성을 높이기 ..

    [스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 후기

    이 책을 선택한 이유 군대에서 자기개발 비용으로 책을 주로 샀는데 springboot 공부를 위해 책을 찾아보던 중 이 책을 발견했다. 나는 군대 오기 전에 node.js와 AWS EC2, RDS, nginx를 이용하여 당근마켓 웹 서비스를 만들어봤었다. 하지만 군대 오기 전이라 오래돼서 기억도 잘 안날 뿐더러 웹 서비스 완성에만 초점을 두고, 이게 왜 이렇게 되는지에 대해서는 후순위였던 것 같다. 그래서 이 책을 통해 다시 하번 되새기고 싶었다. 물론 이 책이 2019년도에 나온 책이라 요즘 버전과는 많이 다른 점이 있었다. 하지만 실제 실무에서도 버전업을 하는 과정이 있기 때문에 이 과정에 대해 직접 경험해보고 싶어서 출판년도에 개의치 않고 이 책을 선택했다. springboot를 공부하고 싶어서, ..

    백준 2805번: 나무 자르기

    https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import sys input = sys.stdin.readline n, m = map(int, input().split()) height = list(map(int, input().split())) start = 1 end = max(height) while s..

    백준 1654번: 랜선 자르기

    https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import sys input = sys.stdin.readline k, n = map(int, input().split()) lan = [] for i in range(k): lan.append(int(input())) start = 1 end = max(lan..

    백준 1018번: 체스판 다시 칠하기

    https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 import sys input = sys.stdin.readline n, m = map(int, input().split()) wb = [] for i in range(4)..

    백준 1300번: K번째 수

    https://www.acmicpc.net/problem/1300 1300번: K번째 수 세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A[i][j] = i×j 이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다. B를 오름차순 정렬했을 때, B[k]를 구해보자. 배열 A와 B www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 n = int(input()) k = int(input()) start = 1 end = k answer = 0 while start

    백준 2343번: 기타 레슨

    https://www.acmicpc.net/problem/2343 2343번: 기타 레슨 강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경 www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 import sys input = sys.stdin.readline n, m = map(int, input().split()) a = list(map(int, input().split())) start = max(a) end = sum(a) while start mid: cou..

    백준 1167번: 트리의 지름

    https://www.acmicpc.net/problem/1167 1167번: 트리의 지름 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 from collections import deque import sys input = sys.stdin.readline n = int(input()) a = [[] for _ i..

    백준 2023번: 신기한 소수

    https://www.acmicpc.net/problem/2023 2023번: 신기한 소수 수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다. 7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수 www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 import sys sys.setrecursionlimit(10000) input = sys.stdin.readline n = int(input()) def isPrime(num): for i in range(2, int(num/2+1)): if num % i==0..