목록전체 글 (69)
yeonuel-tech

컴퓨터 구조를 살펴보기 전에 먼저 컴퓨터는 어떤 정보를 바탕으로 동작하는지 생각해보자.바로, ‘명령어(Instruction)’와 ‘데이터(Data)’이다.이 둘은 모두 0과 1로 이루어진 이진수 형태의 정보이며, 컴퓨터는 이 정보를 해석하고 처리함으로써 동작한다.명령어(Instruction):컴퓨터가 수행해야 할 작업(예: 덧셈, 비교, 저장 등)을 정의한다.데이터(Data):명령어가 처리해야 할 실제 값이나 입력 값이다.이제 이러한 정보들이 어떻게 처리되고 흐르는지 거시적인 관점에서 컴퓨터 구조를 살펴보자.컴퓨터의 구조는 보통 다음과 같은 4가지 주요 구성 요소로 나뉜다: - 1. CPU: 프로그램 내에서 다양한 연산 처리 - 2. 캐시/메인 메모리: 실행 중인 프로그램이나 데이터 적재 공간 - 3. ..

내가 AI 공부를 결심한 이유 세상의 큰 변화가 있을 때, 많은 사람들은 불안과 혼란을 겪는다하지만, 누군가는 이를 기회로 여기고 결과를 만들어 낸다1825년 최초의 철도가 개통되었을 때, 많은 사람들은 "시속 30마일 이상 올라가면 몸이 녹거나 팔다리가 떨어져 나갈 것" 이라고 생각했다.하지만, 지금 KTX, 비행기, 전투기, 로켓, ... 어마무시한 속력으로 사람을 운송하는 기계들이 넘쳐난다.그때 당시 사람들은 상상도 못할 것이다.위의 모습이 현재 나의 상황과 같다.나는 AI 서비스 엔지니어를 목표로 도전하고 있다. 지금 이 시기는 나에게 있어서 아주 큰 기회이다.이를 위해서 백엔드, 데브옵스, 시스템 아키텍처, AI(LLM, NLP) 등등 많은 것을 학습하고 있다. LLM에 대한 간단한 소개데이터 ..
Gradle에서 implementation(), runtimeOnly(), compileOnly()스프링 컨테이너에서 의존성 주입시 runtimeOnly() 제대로 동작하지 않는 이유

이전까지는 단위 테스트에 대해 명확히 이해하지 못하고 프로젝트를 했던 것 같습니다. 그렇기에 제가 작성한 테스트 코드에 어려운 점들이 있었습니다첫 번째로 제가 작성하고 있는 테스트가 필요 이상으로 복잡했습니다. 두 번째로 프로젝트 외부 환경 예를 들어서 DB 테이블의 데이터가 변경됨에 따라 테스트 코드의 결과가 달라졌습니다. 이 부분이 가장 골칫거리였습니다.첫 번째 부분을 살펴보겠습니다. 밑에 코드를 참고하면 좋을것 같습니다. 이 테스트 코드는 단위 테스트에 대해 이해하지 못하고 있었을 때 작성한 부분입니다. 일단, 테스트 초기화 부분을 보면 많은 작업을 해야하는 것을 볼 수 있습니다. (코드)제가 개발한 부분은 문의글입니다. 문의글에는 문의글과 카테고리, 문의글 상태 등이 있고 이를 다루기 위한 dao..

일단, 제가 스프링의 AOP와 데코레이터 패턴을 적용하려고 했던 이유는 다음과 같습니다. TDD를 통해서 구현이 완료되고 리팩토링 과정 중에 중복된 코드를 발견했고 추후 변경이 일어난다고 가정 했을 때 어떻게 처리하면 좋을 지 생각하게 되었습니다. 그 결과로 나온 대안점이 스프링의 AOP를 사용하냐 아니면 데코레이터 패턴을 사용하냐였습니다. 밑에는 제가 작성한 코드입니다. 해당 코드에는 서로 다른 관심을 갖은 코드가 보입니다. 첫 번째는 회원 등록 로직이고 두 번째는 DB 상의 네트워크 장애시 재시도를 통해 복구하는 로직입니다. 두 번째 코드는 다른 부분에도 똑같이 적용될 수 있기 때문에 코드의 중복으로 판단했습니다. 또한, 특정 외부환경 문제로 인한 처리 로직으로부터 순수한 비즈니스 로직을 분리하는 것..
토이2 프로젝트, 네오 팀 프로젝트 현재 개인 프로젝트 그때는 상태를 나타내는 타입으로 반환 현재는 예외로 세분화해서 처리함 결론