분류 전체보기
[커피일기]커피의 전설
커피의 전설 커피의 발견에는 여러가지 전설이 있다고 합니다. 물론, 커피나무는 본래 에티오피아 고산진대 숲속 키가 큰 나무 아래서 자생하던 식물이었으나 실질적인 해당 커피의 사용방법(?)에 대해서 특정 시기가 있을 거기 때문이다. 그러한 시기를 알 수 있는 여러 전설중 다음 3전설이 그나마 잘 알려진 전설이다. 칼디(Kaldi)의 전설 오마르(Omar)의 전설 모하메드(Mohammed)의 전설 칼디의 전설 '칼디의 전설'은 커피의 발견에 대한 전설중 가장 널리 알려져있는 전설이다. 해당 전설은 기원절 6세기경의 전설 내용을 살펴보면 다음과 같습니다. 에티오피아 고산지역에 살던 '칼디'라는 목동은 염소들이 밤에 잠을 자지 않고 흥분해 있는 것을 보고 이상하게 생각하다가 염소들이 낮에 수풀 근처에 있던 빨간..
GoF::추상 팩토리 패턴(Abstract Factory Pattern)
이 글은 '백기선의 코딩으로 학습하는 GoF의 디자인 패턴' 강좌를 듣고 해당 내용을 공부하며 정리한 글입니다. 추상 팩토리 패턴(Abstract Factory Pattern) 추상 팩토리 패턴은 다양한 구성 요소 별로 ' 객체의 집합'을 생성해야 할 때 유용하다. 이 패턴을 사용하여 상황에 알맞은 객체를 생성할 수 있다. - 위키백과 팩토리 메소드와 비슷하지만 조금 다른... 어떻게 보면 팩토리 메서드 패턴을 좀 더 캡슐화한 방식으로 볼 수 있는 디자인 패턴이다. 물론, 추상 팩토리 패턴이 팩토리 메소드 패턴을 개선시킨 디자인 패턴은 아니다. 즉, 상황에 맞게 잘 적용시키면 되는 문제인 것이다. 그렇다면 추상 팩토리는 무엇일까? 그 내용에 대해서 알아보도록 하겠습니다. 정의(Definition)
[Spring Boot]JaCoCo 적용하기
이 글은 '백기선의 더 자바, 코드를 조작하는 다양한 방법' 강좌를 듣고 해당 내용을 추가로 공부하며 정리한 글입니다. JaCoCo 적용하기 코드커버리지를 측정하기 위해 여러가지 툴(?) 라이브러리(?)를 찾던 JaCoCo라는 것을 찾아서 쓰임새를 비교해보고자 적용해보았다. JaCoCo가 무엇인지 알아보고 Spring boot 프로젝트에 한번 적용해보는 과정을 기록해보려고 합니다. JaCoCo란? 이름과 로고에서 알 수 있다시피 Java Code Coverage를 측정하는 라이브러리입니다. In computer science, test coverage is a measure used to describe the degree to which the source code of a program is exec..
@SpringBootApplication 이해하기
@SpringBootApplication 이해하기 spring boot 프로젝트를 생성하고 나서 메인 메소드를 확인하면 다음과 같은 코드를 확인할 수 있다. package com.example.xxx; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class ApiTestApplication { public static void main(String[] args) { SpringApplication.run(ApiTestApplication.class, args); } } @SpringB..
RestFul Api Server 만들기(1 of N)
RestFul Api Server 만들기 그 동안 RestFul Api 서버를 사용하기도 하고 만들기도 하지만 매번 해당 스타일(?)들을 찾아서 적용하고 또 까먹고 그러다 보니 해당 과정을 포스팅을 해보려고 한다. 대략적으로 원하는 요소들이 구체화 되지는 않았지만 소소한것부터 하나씩 적용하려다보니 언제 완성 될 지는 모르겠다. 초기에는 대략적인 hello-world로 시작해서 점차 주제를 세우고 기능들도 적용해보도록 하겠다. 프로젝트 생성 Spring boot에서 간단하게 프로젝트를 생성하기 위해 Spring Initializer를 통해서 만드러 주도록 하겠다. Gradle를 사용할 거기 때문에 Gradle로 설정해주고 언어는 Java를 선택해주면된다 개인적으로 버전은 2.6.x를 사용하면 swagger..
연말정산::세액계산하기
세액계산하기 일반적인 근로자라면 월급의 경우 원청징수금 즉, 세후월급을 받게 된다. 그러면 이런 원청 징수 의무자들은 월급에서 징수된 세금이 맞는 월급일까? 당연히 아니다. 소득은 알지만 공제항목들에 대한 내용을 적용할 수 없기에 일정비율의 세금을 지불 한 것이다. 그렇기 때문에 1년간 근로자가 근로소득에 대하여 부담해야할 세금(소득세)를 확정해야하는데 이러한 작업이 연말 정산이다. 이렇게 연말 정산을 통해 결정된 세액이 그동안 납부한 세액보다 적다면 환급 받을 것이고 더 많다면 추가로 납부해야 할 것이다. 부담해야할 세액 구조 실제 부담해야하는 세액 구조를 살펴보면 크게 2개로 나눌 수 있을거 같다. 첫번째로 세액의 기준이 되는 과세표준을 구하는 문제 그리고 두번째로는 결정 세액을 구하는 문제. 그럼 ..
연말정산::소득공제 vs 세액공제
소득공제 vs 세액공제 연말정산을 하다보면 보통 2가지 케이스로 나타나게된다. 납부하거나 환급받거나... 똑같은 급여, 비슷한 소비이더라도 위와같이 돌려받는사람이 있는가하면, 추가로 더 납부하는 사람이 있다. 그렇다면 무슨기준으로 이렇게 차이가 날까? 그것은 바로 기납부세액과 결정세액의 차이가 된다. 기납부세액이 결정세액보다 많다면 돌려받을 것이고 적다면 추가로 더 납부해야 하는 것이다. 그렇다면 여기서 기납부세액은 이미 정해졌고 결정세액 결정하는데 있어서 더 적은 금액이 나오게 해야하는데 이때 영향을 미치는 것이 소득공제와 세액공제이다. 추가로 결정세액을 계산하는 방법은 따로 정리하도록 하겠다. 소득공제란? 소득공제라 소득이 발생하기 위해서 비용이 들어감을 인정하여 '세금 부과 대상이 되는 소득을 줄여..
[분재일기]적송 새싹 근황 - 22.01.25(화)
적송 새싹 근황 새싹 발아 후 3주정도 시간이 지났다. 다음과 같이 꽤나 많은 양이 발아하고 씨앗을 벗고 잎을 쫙 폈다. 이렇게 많은 양이 발아 하고 잘 살펴보니 2번째 잎이 나는 친구고 한 개체 발견하였다. 매우 좋았다..ㅎㅎㅎ 어서어서 성장해서 모양도 잡아보고 싶다. 아마 그러기까진 1년가량의 시간이 더 필요한 것으로 알 고 있다. 물론 일찍 발아 한 친구도 있었지만, 이제서야 천천히 발아하야 흙밖으로 나오는 친구들도 있었다ㅎㅎㅎ 막내라고 해야하나??ㅎㅎㅎ 물론 이렇게 좋은 건들만 있는건 아니다. 전부 튼튼하게 자라면 좋겠지만, 3박 4일 여행을 다녀오느라 물을 3~4일간 주지 않았더니 몇몇 개체가 힘을 잃고 누워있었다. 급하게 전부 물을 주었으나 한개체는 눕는 과정에서 중간 줄기가 꺾였는지 회복하지..
[분재일기]적송 씨앗 옮기기 - 22.01.09(일)
적송 씨앗 옮기기 적송 씨앗을 옮겼었는데 그전에 휴지발아를 시도했던 다른 씨앗들도 점차 발아를 시작하여 흙으로 옮긴 양을 늘려보았다. 가장 처음 옮겼던 씨앗이다. 그 동안 인터넷에서 보았던 모습을 하고있다. 너무 귀여운 것 같은 모습을 하고 있다. 이어서 발아한 씨앗들도 흙으로 옮겨 심어줬다. 참고로 흙발아를 시도했던 개체들도 점차 나오고 있다. 다만 걱정되는 점이 흙발아 시도 했던 개체들이 너무 붙어있어서 분리해주는 시점을 잘 정해야 할 것 같다.. 잘 키워서 이쁜 모양으로 잘 만들어 보고 싶다!!
[분재일기]적송 씨앗 발아 - 22.01.06(수)
적송 씨앗 발아 옆에 뿌려둔 허브들이 발아를 하고 적송의 발아를 기다리던 중 휴지발아를 시도했던 씨앗들이 단체로 발아를 했다. 아직 흙 발아를 시도한 개체들은 따른 움직임이 없었다. 아직 떡잎까지 나온 상태는 아니지만 휴지 발아한 개체중 하나를 흙으로 옮겨주었다. 이유는 첫 시도이다 보니 다양한 케이스로 나누어서 시도를 함으로써 좀 더 성공 확률을 높이기 위함이다.
Depth First Search Algorithm(DFS, 깊이 우선 탐색)
Depth First Search Algorithm(DFS) 그래프를 탐색하는 방법중 대표적인 DFS, BFS 중 DFS 알고리즘에 대해서 알아보려고 한다. 알고리즘 문제를 접할때 솔루션으로 많이 접하는 알고리즘이기도 하고 해당 탐색으로 부터 해서 특정 조건이 추가 됨으로써 백트래킹으로 확장(?)되기도 하며 최단거리 혹은 경로를 구하는 문제로 적용(확장) 되기도 합니다. 어찌되었든, 그래프를 탐색하는 방법인 Depth First Search Alogithm에 대해서 알아보도록 하겠습니다. 정의(Definition) 그래프 탐색의 한종류로, 특정노드로부터 시작하여 최대로 진입하 '깊이 우선 탐색' 이름에서 알 수 있는 것처럼, 가능한 그래프상에서 '더 깊이', '더 깊게' 탐색을 진행하는 그래프 탐색 방법..
BaekJoon(1644)::소수의 연속합
문제 1644번: 소수의 연속합 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000) www.acmicpc.net 문제파악 연속된 소수의 합으로 나타낼수 있는지 여부의 문제이다. 다면 여기서 연속된 소수의 합이기 떄문에 소수판별의 문제와 투포인터를 사용해서 문제를 풀수 있을 것으로 보인다 문제풀이 소수판별(에라토스테네스의 체) 투포인터 2가지를 고려해서 'r_index까지의 합'에서 'l_index까지의 합'을 뺌으로써 값을 찾을 수 있다 #include #include #include #include using namespace std; const int MAX_N = 4000000; vector primSumArr; bool primeArrYn[MAX_N + 1]; void setSi..