cod
본문 바로가기

전체 글

(52)
[Google MLB Gemma Sprint] software engineering 지식에 최적화 된 커뮤니티 서비스 구현하기 목표 : AI 답변이 생성되는 커뮤니티 사이트를 구현하는데, 단순히 API를 가져와서 사용하지 않고 더 깊은 CS지식을 가진 모델을 구축하여 사용하고자 한다. 과정Gemma2 Fine tuning with software engineering interview qa dataset커뮤니티 서비스 구현 및 파인 튜닝한 모델 이식1. Unsloth를 사용한 Gemma2 Fine tuningcolab을 사용하여 fine-tuning 하고자 했지만, 모델을 가져오니 RAM 메모리가 가득차서 세션이 종료되는 문제가 발생했다. 이를 해결하기 위해, 파인튜닝을 효율적으로 할 수 있도록 메모리를 60% 절약해주는 unsloth를 사용하였다. unsloth를 설치하는데 CUDA , PyTorch, Python 버전이 계속..
AWS EC2 멈춤 현상 (메모리 이슈) Git Repo : https://github.com/2018007956/Preddit/pull/55[문제 상황]- 회원가입 버튼 누르면 아무 동작도 하지 않고, 아래와 같은 에러가 콘솔 출력됨- 그리고 시간이 지나면 아래와 같이 인스턴스 끊김    - 인스턴스 중지했다가 시작하면 다시 접속 가능    - pm2 다시 켜야됨 - 연결 되다가 조금 시간이 지나면 인스턴스 연결 끊김[원인 분석]1. 디스크 용량 확인 -> 차이 없음2. 메모리 용량 확인     - htop으로 메모리 사용량을 확인해보니 서버에서 여러 ts-node 프로세스가 동시에 실행되고 있어 CPU와 메모리가 과부하 상태에 있다는 것을 발견 [해결 과정]- 적용 가능한 해결 방법은 다음과 같았음    - ts-node 대신 컴파일된 Ja..
pm2 사용하여 서버 실행 시 net::ERR_SSL_PROTOCOL_ERROR, net::ERR_CONNECTION_RESET 발생 상황 localhost로는 잘 동작하는데, aws에서 배포한 페이지로 접속하면 개발자 도구 콘솔에서 net::ERR_SSL_PROTOCOL_ERROR, net::ERR_CONNECTION_RESET 에러가 번갈아 뜨는 상황 메인페이지가 띄워지긴 하는데, 로그인, 회원가입 등을 수행하려고 하면 안먹히는 상황 원인 분석 로컬과 클라우드 환경의 유일한 차이점은 로컬에서는 npm run 명령어로 바로 실행하였고, aws에서는 pm2 사용 client 만 pm2 사용하고 서버에서 npm run start:prod 했더니 페이지가 잘 동작했는데, 동시에 콘솔에서 에러를 확인할 수 있었음. 개발자 콘솔에서 떴던 GET 에러의 토글을 열어보면 anonymous 키워드가 있었는데 같은 에러를 확인 디버깅 server/s..
[코딩 테스트 합격자 되기] 백트래킹 [인프런] 코딩 테스트 합격자 되기 C++강의 링크 : https://www.youtube.com/watch?v=VvcEx75Bgvk&t=1s[백트래킹의 개념]가장 최근에 방문했던 노드로 다시 돌아감완전 탘색하지 말고, 내가 찾는 답일 가능성이 있는 경우에만 탐색[백트래킹을 푸는 과정] [c++ 코드]상태 정의 : 문제의 각 단계에서 가능한 상태를 정의유망 함수 (isPromising) : 현재 상태가 유망한지 판단, 유망하지 않으면 더 이상 탐색 X해결책 확인 (isSolution) : 현재 상태가 문제의 해결책인지 판단재귀 호출 : 유망한 상태로 이동하면서 문제 해결[예제]부분합N-Queen추천 문제 https://school.programmers.co.kr/learn/courses/30/lesson..
[코딩테스트 합격자 되기] 그래프 [인프런] 코딩 테스트 합격자 되기 C++강의 링크 : https://www.youtube.com/watch?v=OmYQsxreXNo&embeds_referring_euri=https%3A%2F%2Fwww.inflearn.com%2F&source_ve_path=MjM4NTE [그래프의 구현 방법]인접 행렬 [c++ 코드]행과 열의 인덱스로 노드의 값을 나타내고, 배열의 값은 간선의 가중치가 됨노드 대비 간선이 적을 경우 메모리 공간 효율이 좋지 않음인접 리스트 [c++ 코드]특정 시작 노드를 기준으로 연결된 노드들을 리스트로 연결하는 방식실제 그래프의 노드 갯수만큼만 추가하므로 메모리 낭비 없음특정 노드에 모든노드가 연결된 경우, 탐색시 O(N)이 될 수 있음 (드문 케이스) [DFS와 BFS]c++ 코..
(공부중) 객체지향 디자인패턴 OOP (객체지향 프로그래밍)특성캡슐화상속추상화다형성설계원칙 (SOLID)Single Responsibility Principle (SRP) : 클래스는 하나의 역할만 해야한다Open Close Principle (OCP)The Liskov Substitution Principle (LSP)Interface Segration Principle (ISP)Dependency Inversion Principle (DIP)디자인 패턴각 패턴이 무엇이며, 어떤 경우에 사용하는지 예시 정도 알아두기생성 패턴1) Singleton객체가 하나만 만들어져야 하는 경우 사용e.g) 전체 페이지에 똑같이 적용되는 다크모드클래스 안의 static이 아닌 변수나 메소드들은 객체가 생성될 때마다 메모리 공간을 새로 차지하지만st..
개발자로서의 삶, 디지털 노마드? 최근 스레드를 하면서 디지털 노마드 개발자들을 많이 보게 되었다. 여러 나라를 떠돌면서 개발일을 외주 맡아 하는 개발자들,집중이 잘 되는 개인 장소에서 자기만의 일을 하는 개발자들을 보면서막연한 동경이 느껴졌다. 내가 원하는 삶이 디지털 노마드일까?저렇게 되기 위해서 지금 나는 무엇에 집중해야 할까? 외주를 믿고 맡길 수 있는 개발자가 되려면 그만큼의 실력을 가지고 있어야 한다.실력을 증명하는 것은 경력이라고 생각하기에현재는 좋은 회사에서 탄탄한 경력을 쌓는 것이 목표다.워케이션(장기 원격 근무)이 가능한 회사면 더욱 좋겠다. 회사일 외에도 다양한 서비스를 개발하면서 개발 실력을 꾸준히 늘리고,가능하다면 수익화까지 해보는 것 이게 2024.08 현재 내가 목표하는 삶을 위한 방향이다.취준하는 지금 이 시..
[코딩 테스트 합격자 되기] 집합 [인프런] 코딩 테스트 합격자 되기 C++강의 링크 : https://www.youtube.com/watch?v=pQ4fcGEG-PY [목차]상호배타적 집합이란?집합의 연산union 연산과 find 연산경로압축 / 랭크기반 알고리즘으로 개선하기집합의 구현상호배타적 집합 : 교집합이 없는 집합관계 [집합의 표현] [집합의 연산]find : 특정 노드의 루트 노드를 확인하는 연산- 특정 노드부터 루트노드가 나올 떄까지 거슬러 올라가기- union 연산에서도 활용됨- 경로 압축 : find 연산을 할 때 루트노드를 찾는 과정에서 거쳐간 노드들의 경로 압축   - 경로 압축 후 find 연산의 시간 복잡도 : O(N) -> O(1) union : 두 개의 집합을 하나의 집합으로 합치는 연산- find 연산을 통..