본문 바로가기

전체 글

(13)
[Hexagonal] architecture Hexagonal 구조란 어떤 구조일까요?흔히들 "포트 앤 어댑터(Ports and Adapters)" 아키텍처라고도 불리는 Hexagonal 구조는, 외부 세계(사용자, DB, 메시지 브로커 등)와 애플리케이션의 핵심 로직을 명확히 분리하고자 등장한 구조입니다. 이 구조에서는 애플리케이션의 핵심 로직(Core, 또는 도메인 로직)이 중심에 있고, 그 주위를 둘러싸는 형태로 여러 어댑터들이 존재합니다. Hexagonal이라는 이름은 그 구조를 그림으로 나타낼 때 보통 육각형 모양으로 표현하기 때문에 붙여진 이름입니다. 중요한 건 이 육각형의 '모양'이 아니라, 중심(Core)과 외부(Adapters)를 연결하는 포트(Ports)의 개념입니다. 애플리케이션은 포트를 통해서만 외부와 통신하고, 어댑터는 이..
[Layered] architecture Layered 구조란 어떤 구조일까요? 흔히들 전통적인 구조로 생각하는 Layered구조를 생각해보면 아래의 구조를 떠올리게 됩니다.말 그대로 겹겹이 쌓여있는 느낌을 주게 되어 Layered라고 불리게 되었습니다. 많은 개발자가 개발을 할때 View > Controller > Service > Repository > DB의 구조로 개발을 하곤 합니다.여기에서 세개의 구조를 볼 수 있습니다.  1.Presentation(View, Controller): View는 사용자 인터페이스(UI) 가 있는 부분으로, 사용자와 직접 상호작용하는 역할을 합니다. 흔히 프론트엔드(React등)등이 이곳에 있습니다.: Contoller는 사용자가 요청을 하면 그 부분을 받아서 처리하고 view나 model과 상호작용을 합..
Gemma finetunning(BEANs, Beans Expert is All developers Needs) #GemmaSprinthuggingface : https://huggingface.co/joeykims/BEANsgithub : https://github.com/GOOGLE-MLB-2024-GJ/Beans Google MLB에서 마지막 프로젝트인 Gemma Sprint에서 gemma를 이용해 파인튜닝을 해보았습니다. 파인튜닝 주제는 커피에 대한 전반적인 지식과 커피 원두를 추천해주는 서비스입니다. 최초에는 사용자가 원하는 느낌대로 원두(블렌딩)을 해주는 서비스로 생각하고 시작하였으나,자연스럽게 커피 대화도 오고갈 수 있을 것 같아서 그 부분까지 커버하려고 하였습니다.   모델출시되지 오래되지 않은 2b 모델을 기반으로 파인튜닝을 진행하였습니다.-.gemini 기본모델(https://huggingface..
Tensorflow 설치시 오류.(Could not find a version that satisfies the requirement tensorflow (from versions: none) 문제1. pip install tensorflow시 아래와 같은 에러가 발생. ERROR: Could not find a version that satisfies the requirement tensorflow (from versions: none) ERROR: No matching distribution found for tensorflow 문제2. 이와 같은 오류가 떠서 구글링을 하니 conda로 설치를 해주면 된다길래(아래 참고링크 2), 이렇게 접근하였지만 계속 SSL 인증 문제가 났다.(구글링에서 말하는 내용들을 다 해보았지만 해결이 되지 않았다.) 내 경우에는 먼저 두개의 파일을 복사해서 해결하였다. 본인의 anaconda 설치 폴더를 접근하면 (보통 User/사용자/anaconda or Pr..
no module named 'mysqldb' 해결하기 이 에러가 뜨면 mysqlclient를 깔아줘야 한다. pip install mysqlclient가 계속 안된다면 직접 깔아주면 된다. https://www.lfd.uci.edu/~gohlke/pythonlibs/ 이곳에서 나의 경우 python 3.7버전의 32비트라 mysqlclient-1.4.6-cp37-cp37m-win32.whl 이 파일을 다운 받아줘서 깔아주었다. 파이썬 폴더에 이 파일을 넣어주고 pip install mysqlclient-1.4.6-cp37-cp37m-win32.whl를 해주면 해결이 되었다. 해주고 계속 안되면 pymysql.install_as_MySQLdb() 이 코드를 입력했는지도 확인해 볼것. python bit를 혹시 잊어버렸으면 anaconda에서 검색해볼 수 있다..
anaconda에서 python bit확인하기(64bit or 32bit) anacoda를 실행후에 아래와 같이 차례로 입력한다. 나의 경우(32bit라고 확인이 되었다.) python import platform print(platform.architecture())
6.배열다루기 - 2 (for 문 배열 고차 함수로 리팩터링, 배열 메서드 체이닝 활용하기, map vs forEach, continue & break) ■ 순서 6.for 문 배열 고차 함수로 리팩터링 7.배열 메서드 체이닝 활용하기 8.map vs forEach 9.continue & break 6.for 문 배열 고차 함수로 리팩터링 : 아래의 for문은 고차함수로 바꾸면 간단하게 바꿔줄수가 있다. const price = ['2000', '1000', '3000']; function getWonPrice(priceList) { let temp = []; for (let i = 0; i price + '..
5.배열다루기 -1 (Javascript의 배열은 객체다, Array.length, 배열 요소에 접근하기, 유사 배열 객체, 불변성) ■ 순서 1.Javascript의 배열은 객체다 2.Array.length 3.배열 요소에 접근하기 4.유사 배열 객체 5.불변성 1.Javascript의 배열은 객체다 : 자바스크립트는 index에 아래와 같이 문자열이나 객체를 넣어줘도 들어간다. : 자바스크립트의 배열은 객체이기 때문이다. const arr = [1,2,3]; arr[3] = 'test'; arr['property'] = 'string value'; //실행안됨 arr['obj'] = {}; //실행안됨 arr[{}] = [1, 2, 3]; //실행안됨 //실행안되는 이유는 for문에서 index에 숫자만 넣어줘서 그렇다. arr['func'] = function () { return 'hello'; }; for (let i = 0;..