목록분류 전체보기 (64)
정글에서 온 개발자
공부 동기쿼리를 통해 나온 결과를 엑셀 파일로 제공하는 기능을 개발하던 중, 일반화 프로그래밍을 위해 쿼리로 가져온 값을 배열로 일반화해야 했다. GPT는 go 리플렉션을 추천했는데 이전부터 공부하고 싶던 주제라 찾아봤다.리플렉션이란?프로그램 실행 중(런타임)에 자기 자신의 구조와 동작(클래스, 메서드, 속성)을 검사하거나 수정할 수 있는 능력동적으로 코드를 조작할 수 있음요약하면 객체의 메타적인 정보를 다루게 해준다사용되는 주요 사례프레임워크와 라이브러리JSON, XML 등 데이터 직렬화테스트 코드단점성능 저하 - 런타임에 메소드, 필드에 접근하기 위한 추가적 처리가 필요하기 때문코드 가독성 떨어짐예상치 못한 동작 - private 메서드 등에도 접근 가능하기 때문지원 언어자바, C#, 파이썬, 자바..
도입 이유기존의 local build → zip 파일을 호스팅 서버로 ftp 전송 → 압축 풀기 → systemctl 실행 의 프로세스를 단축하는 배포 자동화를 구축하고자 함버전별 아카이빙 혹은 추후 버전 롤백을 염두해 호스팅 서버가 ‘버전 스토리지’ 역할도 할 수 있도록 구성하고자 함 (docker image 스토리지 등으로도 사용 가능)구성 후 사용 방법git push 나 PR merge 등으로 배포하고 싶은 git 버전을 구성레포지토리의 Actions에 들어가서 자동 워크플로우 이름 → Run workflow → Run workflow를 클릭배포 완료 후 호스팅 서버에 접속하여 sudo systemctl restart server 실행이제 github에 올라간 새로운 버전이 호스팅 서버에서 돌아간다..
Linux System Service리눅스의 systemd가 관리하는 service를 system service라고 한다.systemd를 컨트롤하기 위해 systemctl을 사용한다.시스템 차원에서 등록한 service의 실행관리를 해준다.아파치나 mongodb, mysql을 직접 설치하고 돌릴 때, 모두 이 system service 가 실재 실행 파일을 찾아서 돌리는 것이였다.sudo systemctl start mongod와 같은 명령처럼, 내가 내 앱(파이썬이나 ,node.js, go로 만든) 서비스를 'myservice' 라고 지정했다면sudo systemctl start myservicesudo systemctl stop myservice와 같은 명령어로 쉽게 컨트롤 할 수 있다.시스템 서비..
문제 상황Text2Query를 이용해 챗봇을 개발하고 있습니다.단순 쿼리 생성 뿐 아니라, 주어진 쿼리를 바탕으로 출력이 나오게 실행해야 합니다.그런데, 매출까지는 잘 뽑았는데 0을 자꾸 붙이는 에러가 있었습니다. 데이터는 이건데, [(Decimal('**8061459368'),)] 자꾸 천억대 회사를 조단위 회사로 만든다거나..원래 데이터는[(Decimal('**09568240'),)]이렇게 자꾸 0을 붙이는 일이 지속됐습니다. 특히 0을 붙이는 건 온갖 프롬프팅과 데이터 정제를 해도 고쳐지지 않아서 고생했습니다.와중에 비교하고 있는 GPT는 저렇게 넣어도 답변을 잘해서 속은 타들어 갔습니다.잘 나오는 모델 쓰면 좋긴 하지만, 저렴한 비용을 위해 적은 리소스에서 성공하기 위해서 여러 시도를 해보았습니다..
프롬프트 엔지니어링개발을 생각하지 않고 프롬프트 엔지니어링을 살펴보며 ‘one shot’, ‘few shot’ 등이 나오면 ‘챗GPT 쓰는데 언제 이런 예시를 일일히 나열하고 있나’ 생각했습니다. ‘프름프트 엔지니어’가 연봉을 높게 받을 수도 있다는 얘기도 흘려들었는데, 고연봉까지는 모르겠지만 중요한 작업이라는 걸 알게 됐습니다.프롬프트 엔지니어링이 중요한 이유는 다음과 같은 사실 때문입니다.LLM 이용 시 요청하는 API는 ‘토큰’ 이라고 하는 입력 단위 (단어일수도, 단어보다 더 쪼개진 걸 수도 있다.) 의 양에 따라 비용이 청구된다.로컬에서 돌리는 머신에 요청하더라도 토큰이 많아지면, 연산이 많아지고 따라서 느려지게 된다. 빠른 서비스를 하려면 좋은 GPU를 달아야 하므로 결국 돈이다.GPT4.0 ..
*제목을 위해 원시적 모델이라고 했지만, '전통적인' 통계적 모델입니다.요약통계적 방법을 적용하던 언어 모델에 딥러닝이 적용 됐습니다. 문맥 파악을 위해 방법을 찾던 중 '어텐션 메커니즘'을 사용하는 '트랜스포머'를 개발하게 되고, 이를 응용하여 GPT가 개발되었습니다.통계적 언어 모델(SLM; Statistical Language Model)아이디어사람들이 많이 쓰는 언어의 데이터 뭉치들 (코퍼스;Corpus) 의 시퀀스(단어의 나열)를 실제로 세서(count) 전체 코퍼스 중에 해당 시퀀스가 나올 확률을 구하고자 했습니다.'모델이 생성(예측)하는 다음 단어는 확률을 통해 구한다' 는 언어 모델의 기본 개념을 정립했습니다.모델이 발전은 다음에 올 단어의 확률을 구하는 방법의 발전입니다. 가장 확률이 높..
AI (Artificial Intelligence;인공지능)인간의 지능이 가지는 학습, 추리, 적용, 논증 등 기능을 갖춘 시스템.코드로 조건 분기를 일일히 해 줄 수 있다.ex) ‘집의 크기와 가격’ 을 단순히 ‘3000*x + 1000’ 으로 놓는 것은 머신러닝을 쓰지 않은 AI 모델을 작성한 것이다.머신 러닝추론 능력을 가지는 모델을 ‘학습’ 이라는 과정을 통해 자동으로 만듦ex) ‘집의 크기와 가격’이 a*x+b 라는 ‘선형 관계’를 따를 것이다 하고 가정하고, 데이터들을 입력시켜 a 와 b를 찾아가는 것이 ‘학습’ 이자 ‘머신 러닝’이 때 최종적으로 ‘3000*x+1000’ 이 예측을 잘 하는 식이라고 결정됐다면 이 식이 학습된 ‘모델’모델은 간단한 ‘선형 모델'부터 많은 변수를 받는 ‘다변량 ..
만드는 이유조직도를 표현하기 위해서 만들게 됐다.앞에서 작성한 서버에 API 요청을 해서 자료를 받아온다. 다음과 같은 자료가 들어온다.구현Organize-Map 컴포넌트조직도 전체가 나타나게 될 컴포넌트다.최초의 루트 Organize를 포함한다.export class OrganizeMapComponent { auth : Auth = {} as Auth organize : Organize = {} as Organize constructor(private authService: AuthService, private companyService: CompanyService) { this.auth = this.authService.getAuth() this.companyService.getCo..
만드는 이유회사의 조직도를 구성해야했다.조직도는 트리구조로 되어있기에 DB로 트리구조를 표현할 방법이 필요했다.이러한 트리구조는 이 외에도 댓글의 댓글의 댓글, 게시판 내의 하위 게시판등 계층형 구조(Hierachy structure)에 자주 쓰인다.자료 조사Models For Hierachial DataTrees And Hierachies In SQL위 두 자료를 주로 참고했다.첫번째 자료가 큰 줄기를 잡아주고, 두번째 자료는 그 안에서 세부적인 변형들을 소개한다.정리크게 다음 네가지 방법이 있다.Adjacency List (인접 리스트)Path Enumeration (경로 열거)Nested Sets (중첩 집합)Closure Table (폐쇄 테이블)각 방법 개요인접 리스트 - 자식 노드가 부모 노드..
앵귤러에서 위와 같은 동적 폼을 만들기로 한다.nz-zorro(Ant for Angular)도 같이 사용하였다.HTML @if(i!=0){ 삭제 } 추가동적으로 생성되는 그룹 (vacation-pickers)를 만든다.그 안에 vacations.controls의 수만큼 반복한다.i를 따로 선언해서 넘겨줘야 해서, @if 대신 *ngFor 디렉티브를 사용하였다.form으로 제출할 값을 바꿔주는 이벤트 리스너를 달아준다. (onCalendarChange)동적으로 추가된 요소를 삭제할 버튼을 만든다. (가장 첫번째 요소는 삭제하지 못하게 하였다.)추가 버튼으로 요소를 동적으로..