티스토리

검색하기내 프로필

블로그 홈

g0ni

구독자
9

이것은 내가 최고의 개발자가 되기까지의 이야기다.

구독하기 방명록
신고

인기글

  • [vscode] jupyter-notebook에서 ctrl+enter나 shift+enter가 안 되는 경우공감수2댓글수4조회 8
  • A* 알고리즘공감수2댓글수0조회 7
  • [vscode] jupyter notebook의 a, b, x, shift+enter, ctrl+enter가 작동하지 않을 때 (단축키, 명령어)공감수3댓글수0조회 4

주요 글 목록

  • 회사 블로그를 쓰다 - LLM과 RAG를 이용한 슬랙 봇글 내용

    안녕하세요.벌써 작년, OpenAI 플랫폼에서 AI Assitant와 vector storage를 이용해서 구현한 슬랙 단어장 봇(이름: bh-glossary)의 이야기를 적어보았습니다.대충 내용은 인도 핀테크라는 생소한 분야에서 나오는 다양한 용어들을 어떻게 직원들이 편하게 접근할 수 있을까에 대한 고민과 나름의 솔루션입니다.부족한 글과 구현이지만 한번 공유해봅니다. ㅎㅎ읽어주셔서 감사합니다.https://blog.balancehero.com/tech-ai-dictionary 모두를 위한 용어집, BH-Glossary 개발기 - 밸런스히어로 팀 블로그밸런스히어로의 BH-Glossary: LLM과 RAG를 활용해 슬랙에서 실시간으로 사내 용어를 검색하고 한글/영어로 답변을 제공하는 AI 봇 개발기. 개발..

    좋아요1
    댓글0작성시간2025. 7. 10.
  • 커서의 chat 에서 명령어를 실행시켰는데 반응이 없는 경우 (hang이 걸린 경우)글 내용

    문제이렇게 제안된 명령어를 실행시켰을 때, 에이전트가 명령어 실행이 완료된 것을 모르고 계속 기다리는 경우가 있다.다음으로 넘어가기 위해 stop을 누르면....맘에 안 들어서 reject 한 줄 알고 다른 명령어를 실행시키려고 한다. 원인oh-my-zsh + p10k를 사용하는 경우, 공통적으로 발생하는 것으로 보인다. 해결책jinkim0823이라는 유저가 남긴 솔루션인데, 나의 경우에는 잘 해결되었다.zsh config파일 (.zshrc)을 편집해서 제안된 방법으로 해결하였다.역시 고수가 많다.유저네임으로 유추하기에 한국분이신 것 같은데, jinkim0823님 감사합니다.(*이 글이 저 멋진 솔루션으로 가는 인덱스의 역할만 하기를 바라서 내용은 직접 가셔서 확인해주세요.)https://forum.cu..

    좋아요0
    댓글0작성시간2025. 6. 22.
    게시글 이미지
  • [Docker] Docker engine stopped (Mac OS)글 내용

    도커를 업데이트하면 가끔 생기는 문제인 것 같습니다.구글에 검색해보니 아래와 같은 깃헙 이슈를 발견해서 잘 해결이 되었습니다.단순 재설치로는 해결이 안 되더라구요.순서도커를 종료시킵니다.도커를 uninstall합니다.아래 디렉토리 리스트를 모두 지워줍니다.~/Library/Application Support/Docker Desktop/~/Library/Caches/Docker Desktop/~/Library/Logs/Docker Desktop/~/Library/Preferences/com.docker.docker.plist~/Library/Containers/com.docker.docker/~/Library/Saved Application State/com.electron.docker-frontend.s..

    좋아요0
    댓글0작성시간2025. 2. 6.
  • 개발자 마음 튼튼하게 성장하기 - 정리글 내용

    보호되어 있는 글입니다.

    좋아요0
    댓글0작성시간2024. 12. 1.잠금
  • [IntelliJ Idea]asj abbreviation for assertj using live template글 내용

    https://www.jetbrains.com/help/idea/creating-and-editing-live-templates.html Create live templates | IntelliJ IDEA www.jetbrains.com

    좋아요0
    댓글0작성시간2024. 3. 6.
    게시글 이미지
  • TDD 2부 - xUnit 예시글 내용

    Xunit 예제 (매우 요약된)테스팅 프레임워크 만들기 테스트 메서드를 호출하게 한다. setUp, tearDown을 호출한다. 결과를 출력한다. 테스트 여러 개를 실행시킨다 느낀 점 저는 평소에 자바의 Junit와 Mockito를 굉장히 많이 쓰는 편입니다. 그러다 보니 "와 테스트 프레임워크 엄청 잘 만들어놨다. 이걸 어떻게 만들었지?" 라고 생각하곤 했습니다. 하지만 mock지원을 빼고 단순히 테스팅 프레임워크만 봤을 때는 지원할 기능이 생각보다 간단하더라구요. 극단적으로 요약해보면 몇가지 안 되는 것 같습니다.(물론 xUnit이라는 프레임워크에 한정된 이야기일 수는 있지만) 내가 테스트하고 싶은 메소드를 실행시키고 setUp과 teadrDown을 실행시키고 테스트 실행 결과를 확인한다. 뿐만 아니..

    좋아요0
    댓글0작성시간2024. 2. 12.
  • [기록용] 카카오 소셜 로그인글 내용

    카카오 소셜로그인 간단한 흐름 오늘 제가 직접 연동해보니 이런 순서더라구요. 각 단계별로 예제코드와 함께 살펴보겠습니다. (저는 javascript SDK 말고 REST API 방식으로 했으니 SDK 원하시는 분들은 다른 곳 ㄱㄱ) 1. 프론트가 카카오한테 인가코드 받아오기 카카오 로그인 하려면 카카오 개발자 계정에 있는 앱 중에 어떤 앱이고, 로그인하면 어디로 리다이렉트 받을지 써놔야함. 유저가 a태그를 누르고 저 url로 이동하면 익숙한 카카오 로그인 화면이 뜬다. 로그인하면 리다이렉트 주소로 보내주는데, 이때 url에 query string으로 code를 껴준다. 이 code가 바로 인가코드다. const KAKAO_URL = `https://kauth.kakao.com/oauth/authorize..

    좋아요0
    댓글0작성시간2023. 6. 4.
    게시글 이미지
  • Save 20 Hours a Week By Removing These 4 Useless Things In Your Life 를 읽고...글 내용

    요약 "이걸 하면 생산성 20배 향상!!", "생산성을 높이기 위해 반드시 해야하는 이것" 같은 게 많은데 반대로 생각해보자. 에너지가 한정되어있으니, 무언가를 더 하는 것이 아니고 덜어보자는 것이다. 그래서 우리가 제거할 네가지는... 투두리스트 분석 마비, 너무 많은 선택지와 할 일에 압도되곤 한다. 투두리스트라는 인풋이 없으면 행동할 수 없는 로봇이 되진 말자. 네버엔딩 투두리스트를 달고 다니는 사람이 되지 말자. 불확실한 기상 시간(몇시에 일어난다기 보단, 기상 당시 마음속의 불확실성에 대한 이야기인듯) 하루를 시작하기도 전에 그냥 생존을 위해 노력하고 있진 않은가? -> reaction mode 일어났을 때 시간을 올바르게 쓰면, 하루종일 좀 더 활력있고 집중한채로 있을 수 있다. 언제 일어나는..

    좋아요1
    댓글0작성시간2023. 4. 2.
  • Oh !! Stop using @Builder라는 글을 읽고...글 내용

    글 요약 Lombok이나 Ide 덕분에 getter setter같은 보일러플레이트 코드가 대폭 감소 근데 우리가 Lombok의 @Builder를 꼭 써야해? -> No, 안티패턴으로 쓰일 때도 많음 예시(롬복으로 만든 빌더는 아래와 관련된 설정을 해줄 수 없다) 빌더는 setter가 있으면 안돼 == immutable해야돼 Optional이 있으면 안돼. 만약 멤버 변수가 mandatory가 아니라면 contructor가 default값을 제공해주어야.. 대안 그런 부분에 있어서 롬복의 @Builder는 좋은 대안이 아니지. 라고 하면서 2가지 대안을 제시한다. 예제코드들은 본문을 참고해주세요 ㅎㅎ 대안 1 - Builder 생성자에서 mandatory값들을 지정하게 한다. 장 : mandatory값들에..

    좋아요0
    댓글0작성시간2023. 4. 1.
  • [docker] invalid reference format. See 'docker run --help'. 에러글 내용

    문제 원인 문자열 파싱에서 오류가 나는 것이다. 나의 경우에는 "-"로 인해 발생했다. 해결방법 참... 그냥 -를 지우고 다시 써주시면 됩니다.. 만약 그래도 되지 않는 다면, 의심가는 문자열들을 다 다시 써주세요. (+ 위 커맨드에서 옵션 줄 때 -name 말고 --name이 맞는데 수정이 귀찮아서 그냥 올렸습니다.

    좋아요0
    댓글0작성시간2023. 2. 19.
    게시글 이미지
  • 데이터베이스에 중복 생성이 되지 않게 하는 방법은?글 내용

    문제 상황 기술 면접 중, 동시성 문제와 관련해서 내가 짠 로직으로는 아이디가 중복 생성이 가능해보인다 라는 피드백을 받았다. 코드를 작성할 때는 몰랐지만, 막상 면접에서 보니 그럴만 하다는 생각이 들었다. (해당 코드는 맨 아래에 첨부하겠습니다) 그래서 이걸 어떻게 하면 중복 생성을 막을 수 있을까 여쭤보셨고 난 다음과 같이 말씀드렸다. 음~ 테이블에서 계정명을 기준으로 SELECT하는 부분부터 생성하는 부분까지 하나의 트랜잭션으로 묶어서 관리하면 될 것 같습니다! ㅎㅎ 그런데 SELECT하는 쿼리는 LOCK이 안 걸리니, PK같은 거로 설정하면 어떨까 말씀해주셨다. 그 당시에는 ㅇㅈ. 하고 넘어갔지만 곰곰히 생각해보니 "보통 VARCHAR로 PK를 하나? UNIQUE가 낫지 않나?" 라는 의문이 들었..

    좋아요1
    댓글1작성시간2022. 9. 20.
    게시글 이미지
  • 좋은 개발자에 대한 영상, 책 요약 (나는 어떻게 해야할까?)글 내용

    입사를 앞두고, 유튜브와 책을 읽으면서 어떻게 일해야 할지 고민했습니다. 그래서 유튜브의 유명한 분들이 만든 영상과 이라는 책을 참고, 요약해보았습니다. 이는 모두 제 개인적으로 중요하다고 적어놓은 것을 제멋대로 짜집기 한 것이니, 직접 보시는 것도 추천드립니다. 유튜브 영상들 괜찮은 프로그래머가 될 사람은 이미 정해져 있다. (링크) 괜찮은 프로그래머란, 난이도 상관없이 기한에 맞춰 잘 마무리하는 사람 잘하는 놈은 첨부터 잘한다. 처음부터 많은 지식을 갖고 있거나 지식 습득을 위한 좋은 습관과 태도를 가지고 있거나 좋은 태도란 모르는 게 와도 절대 포기하지 않고 일의 본질, 의도를 파악해 그에 맞는 결과를 만들어내고 엄청난 성장의지를 가지고 있으며 성실 or 똑똑 최소 한가지를 갖고 있고 습득한 지식을..

    좋아요1
    댓글0작성시간2022. 9. 16.
  • 정글 수료 그 후, 무엇을 할까?글 내용

    2곳의 기술면접을 보고... 수료 후, 약간 방황하다 벌써 두 곳의 기술면접을 보았다. 수료하고 지금까지 머릿 속에 항상 들어있던 질문은 "모르는 건 많은데 다 공부할 수는 없는 노릇이고, 뭘 하면 좋을까?" 였다. 운영체제도 공부하고 네트워크도 공부하고 데이터베이스도 공부하고,,, 라고 생각했기 때문이다. 하나씩만 해도 범위가 굉장히 넓은데 그 안에서 무엇을 공부할 지 구체적으로 생각하지 않았던 것이다. 그래도 면접 내용을 복기하면서 내가 각 챕터에서 어떤 부분을 공부할지에 대해 알게된 것 같다. 그래서 앞으로 할 일은? 1. 프로젝트 수정 보완 현재 네모는 앱이 없으면 테스트하기가 힘든 상황이기 때문에, react까지는 안 가더라도 간단하게 볼 수 있는 반응형 웹을 추가하면 좋을 것 같다. 근데 그건..

    좋아요5
    댓글2작성시간2022. 8. 26.
  • supertest에서 multipart/form-data로 파일 post하는 법, timeout 에러 해결하기글 내용

    describe('/api/card에서는 ', () => { /* 명함 생성 테스트 */ test( 'POST /create 성공 시 201', done => { request(app) .post('/api/card/create') .set('Content-Type', 'multipart/form-data') .attach('image', './tests/dummy.png') .field('user_id', '9999') .field('nickname', '테스트닉네임') .expect(201) .end(() => { done(); }); }, TIMELIMIT, ); 위와 같이 헤더에서 Content-Type을 명시하고, 첨부파일-attach, 일반 텍스트-field로 form의 내용을 채울 수 있다...

    좋아요0
    댓글0작성시간2022. 7. 24.
  • JavaScript에서 Map과 Object의 차이글 내용

    보호되어 있는 글입니다.

    좋아요0
    댓글0작성시간2022. 7. 10.잠금
  • express 프로젝트 설정하기 - 근데 이제 pre-commit에 eslint와 prettier를 곁들인글 내용

    0. Requirements nvm이든 뭐든 일단 node가 설치되어있어야 합니다. 저는 nvm use --lts 로 16.15.1을 사용했습니다. 당연히 편집기도 필요합니다.(vscode, vim, ...) 1. express generator로 프로젝트 생성 순서대로 터미널에서 입력합니다. npm install -g express-generator express {님께서 만드실 앱의 이름} --view=pug cd 앱이름 git init 2. .gitignore 생성 및 내용 추가 .gitignore라는 파일을 만들어 아래 내용을 추가하고 저장합니다. node_modules package-lock.json 3. 필요한 패키지 설치 아래 내용을 터미널에서 입력합니다. (한줄이니까 그냥 npm부터 esl..

    좋아요0
    댓글0작성시간2022. 7. 8.
    게시글 이미지
  • node pre-commit 훅 설정하는데 참고한 글들글 내용

    보호되어 있는 글입니다.

    좋아요0
    댓글0작성시간2022. 7. 7.잠금
  • [프로그래머스] 여행경로 - 파이썬 BFS글 내용

    꼭 BFS로 풀어야 하는 문제는 아닙니다. 그냥 간만에 BFS 연습할 겸 BFS로 풀어보았습니다. 중복티켓을 위한 테스트 케이스 tickets: [["ICN", "A"], ["ICN", "A"], ["ICN", "A"], ["A", "ICN"], ["A", "ICN"]] Return: ["ICN", "A", "ICN", "A", "ICN", "A"] 출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/43164# 코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SF..

    좋아요0
    댓글0작성시간2022. 6. 22.
    게시글 이미지
  • install_page글 내용

    코드 static bool install_page (void *upage, void *kpage, bool writable) { struct thread *t = thread_current (); /* Verify that there's not already a page at that virtual * address, then map our page there. */ return (pml4_get_page (t->pml4, upage) == NULL && pml4_set_page (t->pml4, upage, kpage, writable)); } 목적 페이지 테이블에 upage(user virtual address) -> kpage(kernel virtual address) 매핑을 추가함. unmappe..

    좋아요1
    댓글0작성시간2022. 6. 11.
  • load_segment글 내용

    코드 static bool load_segment (struct file *file, off_t ofs, uint8_t *upage, uint32_t read_bytes, uint32_t zero_bytes, bool writable) { ASSERT ((read_bytes + zero_bytes) % PGSIZE == 0); ASSERT (pg_ofs (upage) == 0); ASSERT (ofs % PGSIZE == 0); file_seek (file, ofs); while (read_bytes > 0 || zero_bytes > 0) { /* Do calculate how to fill this page. * We will read PAGE_READ_BYTES bytes from FILE * an..

    좋아요0
    댓글0작성시간2022. 6. 11.
문의안내
  • 티스토리
  • 로그인
  • 고객센터
© Kakao Corp.