흑구개발자와 엔지니어, 그 사이에서공학(工學) 공학(工學, engineering)이란 무엇인가? 공학은 '기술적 문제'를 대상으로 하는 학문으로 '문제를 발견하고 이에 대한 기술적 해결책을 제시하는 학문'이라고 정의할 수 있다. 여기서 문제란 작게는 자동차 부품일 수도 있고, 크게는 교통 체증 문제나 전 지구적인 기후 변화 문제까지 다양하다. 즉 공학은 인간의 삶의 질을 향상시키기 위하여 과학적 지식과 기술을 이용하여 인간에게 유용한 제품을 만드는 학문이다.https://pronist.dev/164Difference between Concurrency and Parallelism - GeeksforGeeksConcurrency: Concurrency relates to an application that is processing more than one task at the same time. Concurrency is an approach that is used for decreasing the response time of the system by using the single processing unit.https://www.geeksforgeeks.org/difference-between-concurrency-and-parallelism/ 문정현AspectJ 사용 시 아노테이션을 사용한 포인트컷 표현 방식www.baeldung.comhttps://www.baeldung.com/aspectj 슬랙 웹후크 생성하기Slack용 수신 웹후크선택한 채널로 데이터를 보냅니다. 채널의 다른 메시지와 구분되도록 웹후크 메시지 서식을 지정합니다. 메시지 텍스트 및 기타 옵션이 포함된 JSON 페이로드와 함께 HTTP 요청을 사용하세요. 팁: 워크플로 빌더를 사용하여 Slack에 웹후크를 추가하는 방법을 알아보려면 웹후크를 사용하여 워크플로 생성 을 참조하세요. 메시지를 포스트할 워크스페이스에 새 Slack 앱을 생성합니다. 기능 페이지에서 수신 웹후크 활성화 토글을 켭니다.https://slack.com/intl/ko-kr/help/articles/115005265063-Slack%EC%9A%A9-%EC%88%98%EC%8B%A0-%EC%9B%B9%ED%9B%84%ED%81%AC 정해민정확한 실수를 사용해야 할땐 BigDecimal을 사용하자Java, BigDecimal 사용법 정리BigDecimal은 Java 언어에서 숫자를 정밀하게 저장하고 표현할 수 있는 유일한 방법이다. 소수점을 저장할 수 있는 가장 크기가 큰 타입인 double은 소수점의 정밀도에 있어 한계가 있어 값이 유실될 수 있다. Java 언어에서 돈과 소수점을 다룬다면 BigDecimal은 선택이 아니라 필수이다. BigDecimal의 유일한 단점은 느린 속도와 기본 타입보다 조금 불편한 사용법 뿐이다.https://jsonobject.tistory.com/466 최지훈스프링 AOP에 관한 기본적인 설명www.baeldung.comhttps://www.baeldung.com/spring-aop 최현웅Spring Application-exitSpring Boot Reference Documentationobject` import com.fasterxml.jackson.core.JsonGenerator import com.fasterxml.jackson.core.JsonParser import com.fasterxml.jackson.core.ObjectCodec import com.fasterxml.jackson.databind.DeserializationContext import com.fasterxml.jackson.databind.JsonNode import com.fasterxml.jackson.databind.SerializerProvider import org.springframework.boot.jackson.JsonComponent import org.springframework.boot.jackson.JsonObjectDeserializer import org.springframework.boot.jackson.JsonObjectSerializer import java.io.IOException import kotlin.jvm.Throws @JsonComponent class MyJsonComponent { class Serializer : JsonObjectSerializer () { @Throws(IOException::class) override fun serializeObject(value: MyObject, jgen: JsonGenerator, provider: SerializerProvider) { jgen.writeStringField("name", value.name) jgen.writeNumberField("age", value.age) } } class Deserializer : JsonObjectDeserializer () { @Throws(IOException::class) override fun deserializeObject(jsonParser: JsonParser, context: DeserializationContext, codec: ObjectCodec, tree: JsonNode): MyObject { val name = nullSafeValue(tree["name"], String::class.java) val age = nullSafeValue(tree["age"], Int::class.java) return MyObject(name, age) } } }https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#features.spring-application.application-exitApplicationRunner를 제외하고 테스트 하는 방법www.baeldung.comhttps://www.baeldung.com/spring-junit-prevent-runner-beans-testing-execution