NAVER AI Tech(87)
-
6. Debugging
Debugging : 오류나 버그를 찾고 수정하는 과정 버그 - 소프트웨어 설계, 개발, 작동 과정에서 생기는 오류 + 예상치 못한 결과를 생성하거나 의도와 다른 방식으로 작동도 포함 발생하는 이유 - 사람의 실수, 실행 환경, 라이브러리 의존성, 소프트웨어 복잡성 등등 디버깅 프로세스 1. 오류메세지를 읽고 현재 내 환경(OS), 가상환경 및 라이브러리 버전을 확인 2. 같은 환경에서 다시 실행해도 똑같은 오류가 '재현' 가능한지 확인 3. 오류메세지를 바탕으로 구글링 - document, stackoverflow, github issue 등등 커뮤니티 활용 **디버깅으로 github에서 contribution을 할 수 있는 방법을 모색해보자. 개발자의 기본 소양 **오답노트를 작성하자.(tistory..
2023.12.28 -
4. Docker
실제로 개발은 Window에서, 서버는 Linux에서 작동하는 경우가 많다. - 이때 OS가 다르면 환경설정이 다른 문제가 발생함. - 같은 OS를 사용한다고 하더라도 개발때와 production 서버의 permission이 다른 경우가 많아 환경 변수가 꼬이기도 함 소프트웨어 가상화 : 특정 소프트웨어 환경을 만들고, Local과 production서버 모두 그대로 활용하는 것. - 개발(Local)과 운영(Production) 서버의 환경 불일치가 해소 - 어느 환경에서나 동일한 환경으로 프로그램을 실행할 수 있음 - 개발 외에 Research도 동일한 환경을 사용할 수 있음 Docker 등장전에는 VM(Virtual Machine)을 주로 사용했었음. But, Host OS위에 Guest OS를 실..
2023.12.28 -
3. 리눅스(Linux)
Linux : 서버에서 자주 사용하는 OS - 오픈소스(무료), 안정성, 신뢰성이 뛰어남 터미널/콘솔 : 쉘을 실행하기 위해 문자 입력을 받아 컴퓨터에 전달 쉘 : 사용자가 문자를 입력해 컴퓨터에 명령할 수 있도록 하는 프로그램 sh : 최초의 쉘 bash : Linux 표준 쉘 zsh : MacOS 기본 쉘 쉘 기본 커멘드 mkdir : make directory ls : list segments pwd : print working directory cd : change directory cp : copy mv : move(rename시에도 사용) tree : 폴더의 하위 구조를 계층적으로 표현(readme 작성시에 유용함) vi : vim 편집기로 파일 생성 - command mode, insert ..
2023.12.27 -
2. 라이브러리 버전 관리
버전(Version) : 소프트웨어 제품의 특정 릴리스에 대한 고유한 식별자 1. CalVer(Calendar Versioning) 방식 : Ubuntu 20.04(20년 4월 수정) 2. SemVer(Semantic Versioning) 방식 : python 3.11.0 - 이전 버전과 호환되지 않는 변경이 있으면 주 번호를 증가. - 이전 버전과 호환되며 새로운 기능이 추가되었으면 부 번호 증가 - 이전 버전의 버그 수정이 진행되면 패치 번호 증가. 3. HashVer(Hash Versioning) : 해시 알고리즘을 사용하여 고유 식별자를 생성 ex) Git commit 7e6d3fd 프로젝트 문서화 시 각 라이브러리의 버전은 readme 상단에 명시해주어야 한다. 가상환경 : 하나의 컴퓨터 내에서..
2023.12.27 -
1. Software Engineering
소프트웨어란? - 컴퓨터 프로그램 + 관련 문서(readme.md) + 데이터의 집합 - 하드웨어와 대조적인 개념 - 다양한 분야가 존재 : 프론트엔드, 백엔드, 머신러닝, 데이터, 모바일 앱, DevOps, 클라우드, 보안 등등 소프트웨어 엔지니어링이란? - 소프트웨어를 개발하는 과정에서 체계적이고 효율적인 방법을 사용하여 소프트웨어의 품질과 유지 보수성을 보장하는 학문 분야. 소프트웨어 개발 라이프사이클 1. Planning 2. Analysis 3. Desing(설계) 4. Implementation 5. Test, Integration 6. Maintenance 좋은 소프트웨어 설계란? 1. 모듈성 : 여러 함수가 모여 하나의 모듈을 이루고, 모듈끼리 서로 영향을 미침 2. 응집도 : 각 모듈을 ..
2023.12.27 -
10. 기존 추천 시스템의 한계와 향후 방향성
문제점은 두개 1. Cold start aout new community, new user, new item 2. Dynamically Chaning about 사용자의 선호도, 아이템의 유행 등등 향후 방향성 : Real-time Optimization - MAB(Malti-Armed Bandit) 알고리즘은 강화학습. 탐색과 활용을 조절하여 보상을 제공 **Value-aware Recommendation based on Reinforced Profit Maximization in E-commerce - 가치 기반의 강화 학습(사용자 클릭 전환율을 실제 수익을 내었을 때 가치로 인정) **Deep Reinforcement Learning based Recommendation with Explicit U..
2023.12.22