최신 글
-
Attention is All You Need: Transformer와 LLM의 발전 양상
Transformer 모델: 기존 인코더-디코더 모델을 발전시킨 모델로, RNN 기반 인코더-디코더 모델보다 학습이 빠르고 성능이 좋다.병렬화RNN 기반 인코더-디코더: 입력으로 들어오는 텍스트의 단어들을 순차적으로 계산하여 인코딩.Transformer: 행렬곱으로 한 번에 병렬 처리. Positional encoding(RNN 사용 X) 순차 입력을 받지 않음 → 위치/순서 정보를 제공해줘야 한다.Positional encoding: 인코더 및 디코더의 입력 값마다 상대적인 위치 정보를 더하는 기술.Transformer는 단순 비트 인코딩이 아니라 Sin, Cos 함수를 사용한 positional encoding을 사용한다.장점Sin, Cos 함수) Positional encoding 값이 항상 -1에..
-
From Local to Global: A Graph RAG Approach to Query-Focused Summarization
RAG (Retrieval-Augmented Generation): Query가 주어졌을 때, 데이터베이스에서 관련된 정보를 검색하여 프롬프트에 contxt를 추가.장점Hallucination 최소화Fine-tuning 대비 저렴한 비용으로 관련 정보 검색 가능한계전체 corpus에 대한 추상적 요약이 어려움Context window 한계로 인한 정보 손실 (”lost in the middle” 현상)Graph RAG (GraphDB + RAG)데이터를 지식 그래프 구조로 변환 → 그래프 검색을 활용한 RAG더보기Knowledge graph 지식 그래프:Knowledges의 구조화된 표현Node: entities or conceptsEdge: relationships between entities Mic..
-
Nginx - Flask 프록시 방법 (Feat. Gunicorn)
Flask와 Nginx, Gunicorn을 함께 사용하는 이유는 주로 성능, 안정성, 보안 등의 측면에서 애플리케이션을 더 효율적으로 운영하기 위해서이다. 각각의 역할을 이해하면, 왜 이 조합이 자주 사용되는지 명확해진다. FlaskPython으로 작성된 마이크로 웹 프레임워크역할: 애플리케이션의 비즈니스 로직과 API 엔드포인트 처리.제한 사항Flask의 내장 개발 서버는 단일 스레드로 동작하며, 고부하 상황에서 성능이 제한적.다중 클라이언트 요청을 효율적으로 처리하지 못함.프로덕션 환경에서의 고성능 처리를 위해 설계되지는 않음. GunicornWSGI(Web Server Gateway Interface) 서버역할Flask와 같은 WSGI 애플리케이션을 효율적으로 운영하기 위해 사용.다중 워커를 사용하..
-
2024 하반기 목표
🐌 열심히 살자🧩 게으르지 말자 🌼 2024 하반기 목표 🐱💻 9월◻ 사이드 프로젝트 README 작성 ☑ Google Cloud AI Study Jam ☑ 세미나 발표 ☑ AI by Hand (Workbook) 끝내기 이번에야 말로 🐱👓 10월◻ 사이드 프로젝트 README 작성☑ LLM 공부 (논문 2개 읽음) 🐱🚀 11월◻ 사이드 프로젝트 README 작성◻ AI agent (Agentic AI) 공부◻ RAG 부트캠프 🐱🐉 12월◻ LLM 공부◻ AI agent (Agentic AI) 공부◻ RAG 부트캠프 😊 기타 목표 ◻ 12월 홍콩여행◻ 흑백요리사 식당 가보기◻ 필라테스 열심히 하기
-
Batch 배치
1. Batch란?Batch는 인공지능(특히 딥러닝)에서 데이터를 처리하는 단위를 의미한다. 신경망을 학습할 때 전체 데이터를 한꺼번에 처리하지 않고, 여러 개의 작은 묶음(즉, 배치)으로 나누어 처리한다. 이는 메모리 사용량을 줄이고, 병렬 처리의 효율성을 높이며, 학습 과정에서의 안전성을 높이는 등의 이점이 있다. 2. Batch의 종류1. 배치 학습 (Batch Learning): 전체 데이터를 한 번에 학습하는 방식. 일반적으로 메모리가 많이 소모되며 큰 데이터셋에서는 비효율적이다.2. 미니배치 학습 (Mini-Batch Learning): 전체 데이터를 작은 묶음으로 나누어 학습하는 방식. 일반적으로 많이 사용된다.3. 확률적 경사 하강법 (Stochastic Gradient Descent, S..
-
Nginx - Streamlit 프록시 설정 방법
Streamlit과 Nginx 각각에서의 설정을 해줘야 하다. Streamlit아무것도 설정할 필요 없다. 기본값으로 8501번 포트에서 streamlit app이 실행된다.만약 port 등을 설정하고 싶다면, 프로젝트 디렉토리 내 .streamlit/config.toml 에서 설정할 수 있다.# 예시[server]port=8000 Nginx/etc/nginx/nginx.conf 에서 nginx가 지켜볼 port와 이 port로 들어오는 요청을 전달할 주소, 즉, streamlit이 실행되고 있는 주소를 연결해줘야 한다. http.server 설정을 아래와 같이 해준다.proxy_pass에는 streamlit app이 실행되고 있는 주소를 넣어줘야 한다.따로 설정해준 게 없다면, http://localh..
-
[Node.js] MySQL2 모듈 장기간 연결 문제 해결
발생한 오류도커로 MySQL 데이터베이스와 연결된 Node.js 서버 컨테이너를 밤새 실행해둔 채로 퇴근 후, 다음날 출근해서 보니 아래와 같은 오류가 발생했다.Error: Can't add new command when connection is in closed stateError: This socket has been ended by the other party Error: Can't add new command when connection is in closed state데이터베이스 연결이 이미 닫혔음에도 새로운 쿼리나 명령을 실행하려고 할 때 발생하는 오류이다. 연결이 예기치 않게 닫힌 경우 또는 장시간 연결로 연결이 닫혔을 때 발생할 수 있다. 네트워크 문제, 데이터베이스 서버 설정, 또는 연결..
-
Docker 사용법: 기본 커맨드
Container 컨테이너# 특정 컨테이너 중지docker container stop [컨테이너ID]# 특정 컨테이너 삭제docker container rm [컨테이너ID]# 특정 컨테이너 여러 개 중지docker container stop [컨테이너ID] [컨테이너ID] [컨테이너ID] ...# 특정 컨테이너 여러 개 삭제docker container rm [컨테이너ID] [컨테이너ID] [컨테이너ID] ...# 모든 컨테이너 중지docker stop $(docker ps -a)#모든 컨테이너 삭제docker rm $(docker ps -a) Image 이미지# 이미지 삭제docker rmi [이미지ID]# 모든 이미지 삭제docker rmi $(docker images -q) Volume 볼륨컴퓨터와..
-
[React] map() vs forEach(): Array.prototype.map() expects a return value from arrow function.
WARNING in [eslint]src/components/views/MainPage/index.js Line 241:24: Array.prototype.map() expects a return value from arrow function.The error you're seeing, Array.prototype.map() expects a return value from arrow function, occurs because the map function is used incorrectly. The map function expects a return value from the arrow function used within it. If you don't need to transform the ..
-
2024년 여름 목표
🎁 성장하자🐌 열심히 살자 🌊 2024 여름 목표 (06 - 08) ✨ 6월☑ 사이드 프로젝트☑ SKT FLY AI Challenger 지원: 합격 >> 불참☑ LG Aimers 5기 지원: 합격☑ Google ML Bootcamp 5기 지원: 불합😢☑ 오픈소스 컨트리뷰톤 2024 지원: 불합😢☑ 취업준비☑ AI by Hand (Workbook)다 실천해낸 건 처음인 것 같아요 💛 🐬 7월☑ 사이드 프로젝트 (완료)◻ AI by Hand (Workbook) 끝내기 (진행중)☑ LG Aimers 5기 Phase 1 (완료)☑ Naver 부스트캠프 AI Tech 지원: 온라인테스트 미응시 (채용일정과 겹침)☑ 취업준비◻ 알고리즘 공부하기◻ 영어 공부하기 🐳 8월 ☑ 회사 적응하기 ☑ 부스..
인기 글
-
[대학원 준비] CV(영문 이력서) 작성법, 양식
CV가 뭘까?CV는 Curriculum Vitae의 줄임말이다.연구직 구직 또는 대학원 입시에서 자신의 연구 또는 프로젝트 경험 등을 담아 제출하는 영문 이력서라고 할 수 있다. 나는 사전 컨택없이 대학원을 준비했다. 따라서 CV도 대학원 원서를 준비하면서 동시에 작성해나갔다.사실 학부 수업 중 IT영어1, 2라는 수업에서 영문이력서 작성법을 배웠는데 그게 큰 도움이 되었던 것 같다.또한, 우리 학교에는 미국의 개발 문화를 접할 수 있는 다양한 방법이 존재하는 데, 나는 대부분에 모두 참여했다.작년 글로벌 SW인재트랙에 지원하면서 영문이력서를 작성했고, 또한 올해 MI-333 해외인턴십에 지원하면서 또다시 영문이력서를 작성했다. 그리고 여름방학때는 기업인턴에 지원하면서 영문은 아니었지만 이력서를 작성했던..
-
[MySQL] java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver | MySQL JDBC Driver Not Found
java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver (java.lang.ClassNotFoundException: com.mysql.jdbc.Driver) : mysql-connector-java를 사용하면서 다음과 같은 에러가 발생했다. 이는 mysql과 java가 제대로 연동되지 않았음을 의미한다. 어떻게 해결할 수 있을까? 인프런의 JSP 강의에서도 해당 내용을 다루고 있다. 하지만 mysql 버전이 5.X로 내가 사용하는 8.0과는 다르다. MySQL 8.0 버전은 mysql-connector-java 5.X버전으로는 해결이 안 된다. 여기서 8.0버전의 connect파일을 다운받아 프로젝트의 src/main/webapp/WEB-INF/lib에..
-
Nginx - Streamlit 프록시 설정 방법
Streamlit과 Nginx 각각에서의 설정을 해줘야 하다. Streamlit아무것도 설정할 필요 없다. 기본값으로 8501번 포트에서 streamlit app이 실행된다.만약 port 등을 설정하고 싶다면, 프로젝트 디렉토리 내 .streamlit/config.toml 에서 설정할 수 있다.# 예시[server]port=8000 Nginx/etc/nginx/nginx.conf 에서 nginx가 지켜볼 port와 이 port로 들어오는 요청을 전달할 주소, 즉, streamlit이 실행되고 있는 주소를 연결해줘야 한다. http.server 설정을 아래와 같이 해준다.proxy_pass에는 streamlit app이 실행되고 있는 주소를 넣어줘야 한다.따로 설정해준 게 없다면, http://localh..
-
[JAVA] https Error: PKIX path building failed 해결 방법
InstallCert를 사용해 SSL/TLS Server 인증서 생성 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to re..
-
[Node.js] MySQL2 모듈 장기간 연결 문제 해결
발생한 오류도커로 MySQL 데이터베이스와 연결된 Node.js 서버 컨테이너를 밤새 실행해둔 채로 퇴근 후, 다음날 출근해서 보니 아래와 같은 오류가 발생했다.Error: Can't add new command when connection is in closed stateError: This socket has been ended by the other party Error: Can't add new command when connection is in closed state데이터베이스 연결이 이미 닫혔음에도 새로운 쿼리나 명령을 실행하려고 할 때 발생하는 오류이다. 연결이 예기치 않게 닫힌 경우 또는 장시간 연결로 연결이 닫혔을 때 발생할 수 있다. 네트워크 문제, 데이터베이스 서버 설정, 또는 연결..
-
[netlify] Page Not Found Error (React Router)
React.js를 사용해 개발한 웹사이트가 localhost의 npm 또는 yarn에서 정상적으로 작동한다. 따라서 이 사이트를 netlify에 배포하려는 상황이다. 이런! 에러가 발생했다!Page Not FoundLooks like you’ve followed a broken link or entered a URL that doesn’t exist on this site.React Router를 사용하는 React 사이트를 netlify에 배포하는 경우 다음과 같은 에러가 발생할 수 있다. 왜 Page Not Found가 발생할까?React Router는 client에서 라우팅을 처리한다. 따라서 root가 아닌 페이지(ex: https://yoursite.netlify.com/login 등)에 접속할..
-
안드로이드 스튜디오 실행없이 에뮬레이터 실행하기
안드로이드 스튜디오에서 AVD manager를 통해 emulator를 실행해봤다면, 다음 경로에 "emulator.exe" 파일이 있을 것이다. C:\Users\{user}\AppData\Local\Android\Sdk\emulator 해당 경로에서 터미널을 통해 안드로이드 스튜디오 실행없이 에뮬레이터만 실행할 수 있다. 아래 명령어를 입력하면, 현재 존재하는 emulator 목록이 출력된다. (skin 목록 아님. 생성했던 emulator들의 목록이 나타난다.) .\emulator.exe -list-avds 목록 중 원하는 에뮬레이터를 다음 명령어로 실행한다. .\emulator.exe -avd "에뮬레이터_이름" 그럼 이렇게 에뮬레이터만 정상적으로 실행되는 것을 확인할 수 있다. 참고 안드로이드 에뮬..
-
[Python] USB 사용 시, Access Denied 해결방법
Python에서 USBError 가 발생했다. 접근 권한이 없어서 발생하는 에러였다.USBError: [Errno 13] Access denied (insufficient permissions) 스택오버플로우 참고하여 해결했다. sudo vi /etc/udev/rules.d/garmin-ant2.rules파일을 생성하여, (.rules 파일명은 원하는 대로 지정해도 된다.)SUBSYSTEM=="usb", ATTRS{idVendor}=="0fcf", MODE="0666"입력 후, 저장한다. ATTRS에 해당하는 값은 lsusb 커맨드로 확인할 수 있다.lsusb---- output -----Bus 001 Device 004: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bl..
-
Basic Building Block 기본 빌딩 블록
기본 빌딩 블록 (Basic Building Block)'기본 빌딩 볼록' 이라는 말은 어떤 복잡한 구조를 구성하는 가장 기초적인 구성 요소를 의미한다. 예를 들어, 집을 지을 때 벽돌 하나하나가 기본 빌딩 블록이 되는 것처럼, 딥러닝 모델에서는 Linear Layer 같은 간단한 레이어들이 모여서 복잡한 신경망을 구성하게 된다. Linear Layer는 딥러닝 모델에서 데이터를 변환하고 처리하는 데 있어 가장 기본적인 작업을 수행한다. 이 레이어가 여러 개 쌓여서 복잡한 패턴을 학습하고, 더 높은 수준의 추상화를 이룰 수 있는 구조를 만들게 된다. 이렇게 기본 빌딩 블록을 쌓아가며 복잡한 모델을 구성하는 과정에서, 각각의 블록이 중요한 역할을 한다는 뜻이다.예를 들면:만약 이미지를 분류하는 모델을 만든..
-
[Error] The path {path} is not shared from the host and is not known to Docker.
Error response from daemon: Mounts denied: The path /mnt/ssd2/docker-test/db/conf.d is not shared from the host and is not known to Docker.You can configure shared paths from Docker -> Preferences... -> Resources -> File Sharing. 이 에러는 docker desktop을 통해 아주 간단하게 해결할 수 있다. 1. docker desktop 우측 상단의 톱니바퀴 아이콘을 눌러 설정(Setting)으로 이동한다.2. 목록에서 Resources > File sharing을 눌러 이동한다.3. Virtual file shares에 공유..
Paper Review
-
Attention is All You Need: Transformer와 LLM의 발전 양상
Transformer 모델: 기존 인코더-디코더 모델을 발전시킨 모델로, RNN 기반 인코더-디코더 모델보다 학습이 빠르고 성능이 좋다.병렬화RNN 기반 인코더-디코더: 입력으로 들어오는 텍스트의 단어들을 순차적으로 계산하여 인코딩.Transformer: 행렬곱으로 한 번에 병렬 처리. Positional encoding(RNN 사용 X) 순차 입력을 받지 않음 → 위치/순서 정보를 제공해줘야 한다.Positional encoding: 인코더 및 디코더의 입력 값마다 상대적인 위치 정보를 더하는 기술.Transformer는 단순 비트 인코딩이 아니라 Sin, Cos 함수를 사용한 positional encoding을 사용한다.장점Sin, Cos 함수) Positional encoding 값이 항상 -1에..
-
From Local to Global: A Graph RAG Approach to Query-Focused Summarization
RAG (Retrieval-Augmented Generation): Query가 주어졌을 때, 데이터베이스에서 관련된 정보를 검색하여 프롬프트에 contxt를 추가.장점Hallucination 최소화Fine-tuning 대비 저렴한 비용으로 관련 정보 검색 가능한계전체 corpus에 대한 추상적 요약이 어려움Context window 한계로 인한 정보 손실 (”lost in the middle” 현상)Graph RAG (GraphDB + RAG)데이터를 지식 그래프 구조로 변환 → 그래프 검색을 활용한 RAG더보기Knowledge graph 지식 그래프:Knowledges의 구조화된 표현Node: entities or conceptsEdge: relationships between entities Mic..
-
Learning Single Camera Depth Estimation using Dual-Pixels
결국 이 논문을 통한 구현은 안 하게 되었지만, 일본 자료 덕분에 읽을 만했던 논문입니다.- 이것도 블로그용으로 추후 다시 작성할 예정... 발표용으로 만든 PTT 파일이다. 참고 URLICCV19読み会 "Learning Single Camera Depth Estimation using Dual-Pixels" (slideshare.net) ICCV19読み会 "Learning Single Camera Depth Estimation using Dual-Pixels"第55回 コンピュータビジョン勉強会@関東 ICCV読み会の資料です。 "Learning Single Camera Depth Estimation using Dual-Pixels"について解説しております。 https://kantocv.connpass.com/..
-
HITNet: Hierarchical Iterative Tile Refinement Network for Real-time Stereo Matching
depth estimation을 처음 접하다보니 배경지식이 너무 없었기에, 읽으면서 너무 어려웠고 힘들었습니다.각 section은 이해가 되는 데, section들끼리 연결하여 이해하는 게 힘들었습니다. 발표용으로 만든 PPT 파일이다.
-
SIMPLE ONLINE AND REALTIME TRACKING
이 논문은 노션에 정리했습니다. https://wind-nerve-8e9.notion.site/SIMPLE-ONLINE-AND-REALTIME-TRACKING-32300a4d79cb409f880c8dfd007e7970
-
YOLOv4: Optimal Speed and Accuracy of Object Detection
Abstract a huge number of features → to improve CNN accuracy YOLO v4 - use new features and achieve state-of -the-art results.2) CSP (Cross-Stage-Partial-Connections)4) SAT (Self-Adversarial-Training)6) Mosaic Data Agumentation8) CIOU Loss 7) Drop Block Regularization 5) Mish Activation 3) CmBN (Cross mini-Batch Normalizations) 1) WRC (Weighted-Residual-Connections) ⇒ acheive: MS COCO dataset AP..
-
CDnetV2: CNN-Based Cloud Detection for Remote Sensing Imagery With Cloud-Snow Coexistence
눈/얼음 공존 섬네일의 구름 검출 정확도를 향상시키기 위해, 인코더-디코더 U-shape 구조를 갖는 CDnetV2라는 새로운 구름 검출 신경망을 제안한다. 📌 Main 1) CDnetV2: encoder-decoder U형 구조 → 구름-눈 공존 위성 썸네일에서의 효과적인 구름 인식 2) AFFM = AFM + SAFM + CARM: multilevel 특징맵 융합 + representation power 향상 3) 일련의 HSIGFs: decoder에서 diluted high-level semantic information 구제→ 각 레벨의 특징맵이 구름 객체의 위치를 명시적으로 인식하게 CDnetV2(HSIGF + AFFM): 눈으로 덮인 썸네일에서 흐린 영역을 안정적으로 식별하기 위해 차별적인 특..
-
Semi-supervised semantic segmentation needs strong, varied perturbations
구현의 상세한 부분까지 알려주지는 않았던 논문 이전 연구에서 cluster assumption이 성공에 중요함을 알아냈다. BUT 데이터의 분포는 클래스를 분리하는 저밀도 영역을 나타내지 않는다. 따라서, 저밀도 영역없이 reliable한 성능을 얻기 위해 CutMix 증강으로 표준 dataset에서 좋은 semi-supervised semantic segmentation 결과를 얻는다. : x̂이 x를 통과하는 distance 등고선에 있거나 매우 가깝게 위치하도록 x에 적용되는 섭동을 제한하면 학습된 decision boundary는 (d)처럼 true class boundary와 잘 정렬된다! 적절한 perturbation ⇒ CutMix ! 를 제안한다. 논문에서는 mean teacher fram..
-
PointRend: Image Segmentation as Rendering
Rendering을 응용한 이미지 세분화 : 컴퓨터 그래픽 분야의 렌더링 기법으로 활용되는 Adaptive Subdivision에 영감을 받아 이를 Instance/ Semantic Segmentation Prediction 시에 적용한 방법 : 반복적인 subdivision strategy을 기반으로 선택한 위치에서 point 기반 segmentation predictions을 수행하는 모듈 신중하게 선택된 point들에 대해서만 prediction 수행 f를 interpolate해서 선택되어진 point에 대해 point-wise feature representation을 추출 small point head subnetwork 사용: point-wise feature로부터 output label 예측..
-
Object-Contextual Representations for Semantic Segmentation
Abstract context aggregation problem in semantic segmentation 가정: 주변 픽셀들까지 object-contextual representations → representation of the correspoding object class. learn object regions: ground-truth compute the object region representation compute the relation between each pixel and each object region augment the representation of each pixel with ocr // Transformer encoder-decoder framework: rephras..
Algorithm
-
BFS 너비 우선 탐색 - 코드 템플릿
BFS 코드 def bfs(S, E): queue = [S] visited = [0] * (V + 1) visited[S] = 1 # 방문 표시: 거리 while queue: c = queue.pop(0) # 이 부분에서 정답 처리! if (정답 조건): return answer # 거리: visited[c] - 1 (시작 노드 제외) # 가능 여부: 1 for n in (탐색할 영역): # 연결된 노드, 4방향, 8방향, 조건 등 if visited[n] == 0: # 미방문 queue.append(n) visited[n] = 방문 표시 # 거리: visited[c] + 1 # 방문: 1 return 0 # 불가능 정답 조건 아래는 "(정답 조건)" 부분에 대한 코드를 구현한 것이다. # 도착 지점에 ..
-
99클럽 코데 스터디 1일차 TIL [프로그래머스] - 체육복
Level 1 문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solu..
-
19645: 햄최몇?
19645번: 햄최몇? 문제 세 모질이들 관우, 철환, 길원이가 모였다. 모질이들은 모이면 서로 '햄버거 최대 몇 개 드실 수 있나요?'의 준말인 '햄최몇?'을 시전하며 자랑을 하기 바쁘다. 막내 길원이는 문득 중요한 사실을 깨달았다. 바로, 개수가 중요한 것이 아니라 최대 효용이 중요하다는 것이었다! 이들은 바로 N개의 햄버거를 준비했다. 그리고 이 햄버거를 사이좋게 나누어 먹었다. 각 모질이들이 얻을 수 있는 효용은 이들이 먹은 햄버거들의 효용의 합이다. 또한 나름의 서열과 규칙이 있어, 존경하는 선배님들보다는 높은 효용을 누려서는 안 된다. 막내 길원이는 선배님들을 존경하기 때문에 규칙을 따라야 하는 한편, 햄버거를 잘 분배하여 본인이 얻을 수 있는 효용이 최대가 되도록..
-
[프로그래머스] - 직업군 추천하기
Weekly Challenge 4 Level 1 문제 설명 개발자가 사용하는 언어와 언어 선호도를 입력하면 그에 맞는 직업군을 추천해주는 알고리즘을 개발하려고 합니다. 아래 표는 5개 직업군 별로 많이 사용하는 5개 언어에 직업군 언어 점수를 부여한 표입니다. 점수 SI CONTENTS HARDWARE PORTAL GAME 5 JAVA JAVASCRIPT C JAVA C++ 4 JAVASCRIPT JAVA C++ JAVASCRIPT C# 3 SQL PYTHON PYTHON PYTHON JAVASCRIPT 2 PYTHON SQL JAVA KOTLIN C 1 C# C++ JAVASCRIPT PHP JAVA 예를 들면, SQL의 SI 직업군 언어 점수는 3점이지만 CONTENTS 직업군 언어 점수는 2점입니다..
-
[프로그래머스] - 상호 평가
Weekly Challenge 2 Level 1 문제 설명 대학 교수인 당신은, 상호평가를 통하여 학생들이 제출한 과제물에 학점을 부여하려고 합니다. 아래는 0번부터 4번까지 번호가 매겨진 5명의 학생들이 자신과 다른 학생의 과제를 평가한 점수표입니다. No. 0 1 2 3 4 0 100 90 98 88 65 1 50 45 99 85 77 2 47 88 95 80 67 3 61 57 100 80 65 4 24 90 94 75 65 평균 45.5 81.25 97.2 81.6 67.8 학점 F B A B D 위의 점수표에서, i행 j열의 값은 i번 학생이 평가한 j번 학생의 과제 점수입니다. 0번 학생이 평가한 점수는 0번 행에담긴 [100, 90, 98, 88, 65]입니다. 0번 학생은 자기 자신에게 1..
-
[프로그래머스] - 모의고사
Level 1 문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 soluti..
-
[프로그래머스] - 부족한 금액 계산하기
Weekly Challenge Level 1 문제 설명 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다. 놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요. 단, 금액이 부족하지 않으면 0을 return 하세요. 입출력 예 price money count result 3 20 4 10 나의 코드 1 def solution(price, money, count): answer = 0 for n..
-
[코딩테스트 연습] - 멀리 뛰기
Level 1 문제 설명 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2칸) 의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다. 멀리뛰기에 사용될 칸의 수 n이 주어질 때, 효진이가 끝에 도달하는 방법이 몇 가지인지 알아내, 여기에 1234567를 나눈 나머지를 리턴하는 함수, solution을 완성하세요. 예를 들어 4가 입력된다면, 5를 return하면 됩니다. 제한 사항 n은 1 이상, 2000 이하인 정수입니다. 입출력 예 n result 4 5 3 3 나의 코드 def solution(n): answer..
-
[백준] 10989 - 수 정렬하기 3
Silver V 문제 ( www.acmicpc.net/problem/10989 ) N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 예제 input output 10 5 2 3 1 4 2 3 6 1 7 1 1 2 2 3 3 4 5 5 7 나의 코드 간단하게 sorted와 lamda식을 써서 한 번 돌려보았다. import sys n = int(sys.stdin.readline()) numbers = [_ for _ in ra..
-
[코딩테스트 연습] - 크레인 인형뽑기 🍫
2019 카카오 겨울 개발자 인턴십 → Level 1 문제 설명 게임개발자인 "죠르디"는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. "죠르디"는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 "1 x 1" 크기의 칸들로 이루어진 "N x N" 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 "5 x 5" 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 "1 x 1" 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 ..
-
[코딩테스트 연습] - 다트 게임 🍫
2018 KAKAO BLIND RECRUITMENT → Level 1 문제 설명 다트 게임 카카오톡에 뜬 네 번째 별! 심심할 땐? 카카오톡 게임별~ 카카오톡 게임별의 하반기 신규 서비스로 다트 게임을 출시하기로 했다. 다트 게임은 다트판에 다트를 세 차례 던져 그 점수의 합계로 실력을 겨루는 게임으로, 모두가 간단히 즐길 수 있다. 갓 입사한 무지는 코딩 실력을 인정받아 게임의 핵심 부분인 점수 계산 로직을 맡게 되었다. 다트 게임의 점수 계산 로직은 아래와 같다. 다트 게임은 총 3번의 기회로 구성된다. 각 기회마다 얻을 수 있는 점수는 0점에서 10점까지이다. 점수와 함께 Single( S ), Double( D ), Triple( T ) 영역이 존재하고 각 영역 당첨 시 점수에서 1제곱, 2제곱,..
-
[코딩테스트 연습] - 비밀지도 🍫
2018 KAKAO BLIND RECRUITMENT → Level 1 문제 설명 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도 1"과 "지도 2"라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. "지도 1"과 ..
-
[백준] 10951 - A+B - 4
Bronze III 문제 (www.acmicpc.net/problem/10951) 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10) 출력 각 테스트 케이스마다 A+B를 출력한다. 예제 input output 1 1 2 3 3 4 9 8 5 2 2 5 7 17 7 나의 코드 import sys while True: try: x, y = map(int, sys.stdin.readline().split()) print(x+y) except: break 입력이 끝나는 경우 break하도록 예외처리한다.
-
[백준] 1181 - 단어 정렬
문제 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 1. 길이가 짧은 것부터 2. 길이가 같으면 사전 순으로 입력 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. 출력 조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다. 예제 input output 13 but i wont hesitate no more no more it cannot wait im yours i im it no but more wait wont yours cannot he..
-
[백준] 7576 - 토마토
Silver I 문제 ( www.acmicpc.net/problem/7576 ) 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토의 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 철수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되는지, ..
-
[코딩테스트 연습] - 실패율 🍫
2019 Kakao Blind Recruitment → Level 1 문제 설명 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라. 실패율은 다음과 같이 정의한다. 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 전체 스테이지의 개수 N, 게임을 이용..
-
[코딩테스트 연습] - 문자열 내림차순으로 배치하기
문제 설명 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다. 제한 사항 str은 길이 1 이상인 문자열입니다. 입출력 예 s return "Zbcdefg" "gfedcbZ" 나의 코드 def solution(s): return ''.join(sorted(s, reverse=True)) 아주 쉬운 문제 역순 정렬 활용
-
[코딩테스트 연습] - 괄호 변환 🍫
2020 KAKAO BLIND RECRUITMENT → Level 2 문제 설명 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴파일하여 로그를 보니 대부분 소스 코드 내 작성된 괄호가 개수는 맞지만 짝이 맞지 않은 형태로 작성되어 오류가 나는 것을 알게 되었습니다. 수정해야 할 소스 파일이 너무 많아서 고민하던 "콘"은 소스 코드에 작성된 모든 괄호를 뽑아서 올바른 순서대로 배치된 괄호 문자열을 알려주는 프로그램을 다음과 같이 개발하려고 합니다. 용어의 정의 '(' 와 ')' 로만 이루어진 문자열이 있을 경우, '(' 의 개수와 ')' 의 개수가 같다면 이를 균형잡힌 ..
-
[코딩테스트 연습] - 메뉴 리뉴얼 🍫
2021 KAKAO BLIND RECRUITMENT → Level 2 문제 설명 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 새로운 메뉴를 제공하기로 결정했습니다. 어떤 단품메뉴들을 조합해서 코스요리 메뉴로 구성하면 좋을 지 고민하던 "스카피"는 이전에 각 손님들이 주문할 때 가장 많이 함께 주문한 단품메뉴들을 코스요리 메뉴로 구성하기로 했습니다. 단, 코스요리 메뉴는 최소 2가지 이상의 단품메뉴로 구성하려고 합니다. 또한, 최소 2명 이상의 손님으로부터 주문된 단품메뉴 조합에 대해서만 코스요리 메뉴 후보에 포함하기로 했습니다. 예를 들어, 손님 6명이 주문한 단품메뉴들..
-
[코딩테스트 연습] - 신규 아이디 추천 🍫
2021 KAKAO BLIND RECRUITMENT → Level 1 문제 설명 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다. 아이디의 길이는 3자 이상 15자 이하여야 합니다. 아이디는 알파벳 소문자, 숫자, 빼기( - ), 밑줄( _ ), 마침표( . ) 문자만 사용할 수 있습니다. 단, 마침표( . )는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다...
-
[코딩테스트 연습] - 순위 검색 🍫
2021 KAKAO BLIND RECRUITMENT → Level 2 문제 설명 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 카카오는 하반기 경력 개발자 공개채용을 진행 중에 있으며 현재 지원서 접수와 코딩테스트가 종료되었습니다. 이번 채용에서 지원자는 지원서 작성 시 아래와 같이 4가지 항목을 반드시 선택하도록 하였습니다. 코딩테스트 참여 개발언어 항목에 cpp, java, python 중 하나를 선택해야 합니다. 지원 직군 항목에 backend와 frontend 중 하나를 선택해야 합니다. 지원 경력구분 항목에 junior와 senior 중 하나를 선택해야 합니다. 선호하는 소울푸드로 chicken과 pizza 중 하나를 선택해야 합니다. 인재영입팀에 근무하고 있는 니니즈는 코..
-
[코딩테스트 연습] - 폰케몬
찾아라 프로그래밍 마에스터 문제 설명 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다. 첫 번째(3번), 두 번째(1번) 폰켓몬을 선택 첫 번째(3번), 세 번..
-
[스킬 체크 테스트 Level.2]
문제 1 문제 설명 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다. 제한 조건 s에는 둘 이상의 정수가 공백으로 구분되어 있습니다. 입출력 예 s return "1 2 3 4" "1 4" "-1 -2 -3 -4" "-4 -1" "-1 -1" "-1 -1" 나의 코드 def solution(s): answer = '' arr = s.split(' ') arr = [int(a) for a in arr] answer = str(min(arr..
-
[코딩테스트 연습] -이진 변환 반복하기 📆
📆 월간 코드 챌린지 시즌1 문제 설명 0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다. x의 모든 0을 제거합니다. x의 길이를 c라고 하면, x를 c를 2진법으로 표현한 문자열로 바꿉니다. 예를 들어, x = "0111010"이라면, x에 이진 변환을 가하면 x = "0111010" -> "1111" -> "100" 이 됩니다. 0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 1이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return 하도록 solution 함수를 완성해주세요. 제한 사항 s의 길이는 1 이상 150,000 이하입니다. s에는 '1'이 최소 하나 이상 포함되..
개발 + 공부
-
Nginx - Flask 프록시 방법 (Feat. Gunicorn)
Flask와 Nginx, Gunicorn을 함께 사용하는 이유는 주로 성능, 안정성, 보안 등의 측면에서 애플리케이션을 더 효율적으로 운영하기 위해서이다. 각각의 역할을 이해하면, 왜 이 조합이 자주 사용되는지 명확해진다. FlaskPython으로 작성된 마이크로 웹 프레임워크역할: 애플리케이션의 비즈니스 로직과 API 엔드포인트 처리.제한 사항Flask의 내장 개발 서버는 단일 스레드로 동작하며, 고부하 상황에서 성능이 제한적.다중 클라이언트 요청을 효율적으로 처리하지 못함.프로덕션 환경에서의 고성능 처리를 위해 설계되지는 않음. GunicornWSGI(Web Server Gateway Interface) 서버역할Flask와 같은 WSGI 애플리케이션을 효율적으로 운영하기 위해 사용.다중 워커를 사용하..
-
Batch 배치
1. Batch란?Batch는 인공지능(특히 딥러닝)에서 데이터를 처리하는 단위를 의미한다. 신경망을 학습할 때 전체 데이터를 한꺼번에 처리하지 않고, 여러 개의 작은 묶음(즉, 배치)으로 나누어 처리한다. 이는 메모리 사용량을 줄이고, 병렬 처리의 효율성을 높이며, 학습 과정에서의 안전성을 높이는 등의 이점이 있다. 2. Batch의 종류1. 배치 학습 (Batch Learning): 전체 데이터를 한 번에 학습하는 방식. 일반적으로 메모리가 많이 소모되며 큰 데이터셋에서는 비효율적이다.2. 미니배치 학습 (Mini-Batch Learning): 전체 데이터를 작은 묶음으로 나누어 학습하는 방식. 일반적으로 많이 사용된다.3. 확률적 경사 하강법 (Stochastic Gradient Descent, S..
-
Nginx - Streamlit 프록시 설정 방법
Streamlit과 Nginx 각각에서의 설정을 해줘야 하다. Streamlit아무것도 설정할 필요 없다. 기본값으로 8501번 포트에서 streamlit app이 실행된다.만약 port 등을 설정하고 싶다면, 프로젝트 디렉토리 내 .streamlit/config.toml 에서 설정할 수 있다.# 예시[server]port=8000 Nginx/etc/nginx/nginx.conf 에서 nginx가 지켜볼 port와 이 port로 들어오는 요청을 전달할 주소, 즉, streamlit이 실행되고 있는 주소를 연결해줘야 한다. http.server 설정을 아래와 같이 해준다.proxy_pass에는 streamlit app이 실행되고 있는 주소를 넣어줘야 한다.따로 설정해준 게 없다면, http://localh..
-
[Node.js] MySQL2 모듈 장기간 연결 문제 해결
발생한 오류도커로 MySQL 데이터베이스와 연결된 Node.js 서버 컨테이너를 밤새 실행해둔 채로 퇴근 후, 다음날 출근해서 보니 아래와 같은 오류가 발생했다.Error: Can't add new command when connection is in closed stateError: This socket has been ended by the other party Error: Can't add new command when connection is in closed state데이터베이스 연결이 이미 닫혔음에도 새로운 쿼리나 명령을 실행하려고 할 때 발생하는 오류이다. 연결이 예기치 않게 닫힌 경우 또는 장시간 연결로 연결이 닫혔을 때 발생할 수 있다. 네트워크 문제, 데이터베이스 서버 설정, 또는 연결..
-
Docker 사용법: 기본 커맨드
Container 컨테이너# 특정 컨테이너 중지docker container stop [컨테이너ID]# 특정 컨테이너 삭제docker container rm [컨테이너ID]# 특정 컨테이너 여러 개 중지docker container stop [컨테이너ID] [컨테이너ID] [컨테이너ID] ...# 특정 컨테이너 여러 개 삭제docker container rm [컨테이너ID] [컨테이너ID] [컨테이너ID] ...# 모든 컨테이너 중지docker stop $(docker ps -a)#모든 컨테이너 삭제docker rm $(docker ps -a) Image 이미지# 이미지 삭제docker rmi [이미지ID]# 모든 이미지 삭제docker rmi $(docker images -q) Volume 볼륨컴퓨터와..
-
[React] map() vs forEach(): Array.prototype.map() expects a return value from arrow function.
WARNING in [eslint]src/components/views/MainPage/index.js Line 241:24: Array.prototype.map() expects a return value from arrow function.The error you're seeing, Array.prototype.map() expects a return value from arrow function, occurs because the map function is used incorrectly. The map function expects a return value from the arrow function used within it. If you don't need to transform the ..
-
[Error] The path {path} is not shared from the host and is not known to Docker.
Error response from daemon: Mounts denied: The path /mnt/ssd2/docker-test/db/conf.d is not shared from the host and is not known to Docker.You can configure shared paths from Docker -> Preferences... -> Resources -> File Sharing. 이 에러는 docker desktop을 통해 아주 간단하게 해결할 수 있다. 1. docker desktop 우측 상단의 톱니바퀴 아이콘을 눌러 설정(Setting)으로 이동한다.2. 목록에서 Resources > File sharing을 눌러 이동한다.3. Virtual file shares에 공유..
-
Linear Layer
Linear Layer는 딥러닝의 가장 기본적인 구성요소 중 하나이다. 딥러닝을 시작하는 단계라면, Linear Layer의 동작 원리와 역할을 이해하는 것이 중요하다. 1. Linear Layer란?Linear Layer는 인공 신경망의 기본 구성 요소로, 입력 벡터를 선형 변환(Linear Transformation)해서 출력 벡터를 만든다. 이는 다음과 같은 수식으로 표현될 수 있다.\[ y=Wx+b\]여기서:\(y\)는 출력 벡터\(W\)는 가중치 행렬 (wegihts)\(x\)는 입력 벡터\(b\)는 편향 벡터 (bias)이 수식을 통해 입력 데이터를 가중치와 편향을 사용해 선형 변환한 결과를 얻는다. 2. Linear Layer의 역할Linear Layer는 다음과 같은 중요한 역할을 한다.특..
-
Basic Building Block 기본 빌딩 블록
기본 빌딩 블록 (Basic Building Block)'기본 빌딩 볼록' 이라는 말은 어떤 복잡한 구조를 구성하는 가장 기초적인 구성 요소를 의미한다. 예를 들어, 집을 지을 때 벽돌 하나하나가 기본 빌딩 블록이 되는 것처럼, 딥러닝 모델에서는 Linear Layer 같은 간단한 레이어들이 모여서 복잡한 신경망을 구성하게 된다. Linear Layer는 딥러닝 모델에서 데이터를 변환하고 처리하는 데 있어 가장 기본적인 작업을 수행한다. 이 레이어가 여러 개 쌓여서 복잡한 패턴을 학습하고, 더 높은 수준의 추상화를 이룰 수 있는 구조를 만들게 된다. 이렇게 기본 빌딩 블록을 쌓아가며 복잡한 모델을 구성하는 과정에서, 각각의 블록이 중요한 역할을 한다는 뜻이다.예를 들면:만약 이미지를 분류하는 모델을 만든..
-
docker-compose (node.js, MySQL) 실행 순서 동기화
docker-compose를 사용해 node.js 서버와 mysql db 서버 컨테이너를 만들고 node.js 서버에서 mysql db 서버에 연결을 시도하면, closed 오류가 발생한다. 이는 node.js 서버가 mysql db에 연결을 시도할 때, 아직 mysql db 서버가 완전히 실행되지 않았기 때문에 발생하는 문제이다.이를 해결하기 위해 node.js 서버가 mysql db 서버 구동 완료 후에 실행될 수 있게 해야 한다.이는 node.js와 mysql 외의 다른 서버와 DB에 모두 적용가능한 방법이다. 디렉토리 구조📦 ┣ 📂 db ┃ ┣ 📂 conf.d # MySQL configuraiton (선택) ┃ ┃ ┗ 📜 my.cnf ┃ ┣ 📂 initdb.d # MySQL 초기 D..
-
[Python] USB 사용 시, Access Denied 해결방법
Python에서 USBError 가 발생했다. 접근 권한이 없어서 발생하는 에러였다.USBError: [Errno 13] Access denied (insufficient permissions) 스택오버플로우 참고하여 해결했다. sudo vi /etc/udev/rules.d/garmin-ant2.rules파일을 생성하여, (.rules 파일명은 원하는 대로 지정해도 된다.)SUBSYSTEM=="usb", ATTRS{idVendor}=="0fcf", MODE="0666"입력 후, 저장한다. ATTRS에 해당하는 값은 lsusb 커맨드로 확인할 수 있다.lsusb---- output -----Bus 001 Device 004: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bl..
-
안드로이드 스튜디오 실행없이 에뮬레이터 실행하기
안드로이드 스튜디오에서 AVD manager를 통해 emulator를 실행해봤다면, 다음 경로에 "emulator.exe" 파일이 있을 것이다. C:\Users\{user}\AppData\Local\Android\Sdk\emulator 해당 경로에서 터미널을 통해 안드로이드 스튜디오 실행없이 에뮬레이터만 실행할 수 있다. 아래 명령어를 입력하면, 현재 존재하는 emulator 목록이 출력된다. (skin 목록 아님. 생성했던 emulator들의 목록이 나타난다.) .\emulator.exe -list-avds 목록 중 원하는 에뮬레이터를 다음 명령어로 실행한다. .\emulator.exe -avd "에뮬레이터_이름" 그럼 이렇게 에뮬레이터만 정상적으로 실행되는 것을 확인할 수 있다. 참고 안드로이드 에뮬..
-
[JAVA] https Error: PKIX path building failed 해결 방법
InstallCert를 사용해 SSL/TLS Server 인증서 생성 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to re..
-
[MySQL] java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver | MySQL JDBC Driver Not Found
java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver (java.lang.ClassNotFoundException: com.mysql.jdbc.Driver) : mysql-connector-java를 사용하면서 다음과 같은 에러가 발생했다. 이는 mysql과 java가 제대로 연동되지 않았음을 의미한다. 어떻게 해결할 수 있을까? 인프런의 JSP 강의에서도 해당 내용을 다루고 있다. 하지만 mysql 버전이 5.X로 내가 사용하는 8.0과는 다르다. MySQL 8.0 버전은 mysql-connector-java 5.X버전으로는 해결이 안 된다. 여기서 8.0버전의 connect파일을 다운받아 프로젝트의 src/main/webapp/WEB-INF/lib에..
-
[Gentoo] Gentoo Handbook: Installation (9) Finalizing
드디어 Gentoo 설치의 마지막입니다! User administration Adding a user for daily use reboot가 완료되면, Login하라고 뜬다. Login: root Password: (Enter the root password) root # useradd -m -G users,wheel,audio -s /bin/bash newUser root # passwd newUser Password: (Enter the password for newUser) Re-enter password: (Re-enter the password to verify) Disk cleanup Removing tarballs 이제 쓸모를 다한 stage tarball을 제거한다. root # rm /s..
-
[Gentoo] Gentoo Handbook: Installation (8) Configuring the bootloader
Selecting a boot loader 나는 GRUB2를 사용할 것이다. Default: GRUB2 Emerge 먼저 grub을 설치한다. (chroot) root # echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf (chroot) root # emerge --ask sys-boot/grub Install grub-install: 필수 GRUB2 파일을 /boot/grub 디렉토리에 설치한다. (chroot) root # grub-install --target=x86_64-efi --efi-directory=/boot Configure grub-mkconfig: GRUB2 configuration을 생성한다. (chroot) root #grub-m..
-
[Gentoo] Gentoo Handbook: Installation (7) Installing tools
System logger system logger를 설치한다. OpenRC에서는 이것을 default runlevel로 추가해줘야 한다. (chroot) root # emerge --ask app-admin/sysklogd (chroot) root # rc-update add sysklogd default Networking tools 이미 앞에서 dhcpcd를 설치했기때문에 넘어간다.
-
[Gentoo] Gentoo Handbook: Installation (6) Configuring the system
Filesystem information Creating the fstab file 딱히 고칠 건 없다. Filesystem labels and UUIDs (chroot) root # blkid Partition labels and UUIDs (chroot) root # nano -w /etc/fstab /etc/fstab 파일에 다음을 작성한다. /dev/sda1 /boot ext4 defaults,noatime 0 2 /dev/sda2 none swap sw 0 0 /dev/sda3 / ext4 noatime 0 1 Networking information Host and domain information 이 파트는 굳이 해줄 필요가 없다. Network dhcpcd (any init system) ..
-
[Gentoo] Gentoo Handbook: Installation (5) Configuring the Linux kernel
(manual 이 아닌) genkernel을 사용해 자동으로 Linux kernel을 빌드하고 설치해보자. Installing the sources 적절한 kernel 소스를 선택하고 설치한다. (chroot) root # emerge --ask sys-kernel/gentoo-sources 먼저, 모든 설치된 kernel 목록을 확인하자 (chroot) root # eselect kernel list Available kernel symlink targets: [1] linux-5.15.19-gentoo 한 개뿐이다. 의심하지 마라. 한 개 설치했으면 한 개만 있다. linux라 불리는 symbolic link를 생성한다. (chroot) root # eselect kernel set 1 (chroot..
-
[Gentoo] Gentoo Handbook: Installation (4) Installing base system
Chrooting Copy DNS info root # cp --dereference /etc/resolv.conf /mnt/gentoo/etc/ Mounting the necessary filesystems (자세한 설명은 Handbook 참고) root # mount --types proc /proc /mnt/gentoo/proc root # mount --rbind /sys /mnt/gentoo/sys root # mount --make-rslave /mnt/gentoo/sys root # mount --rbind /dev /mnt/gentoo/dev root # mount --make-rslave /mnt/gentoo/dev root # mount --bind /run /mnt/gentoo/run..
-
[Gentoo] Gentoo Handbook: Installation (3) Installing stage 3
Installing a stage tarball Setting the date and time date: 현재 날짜와 시간을 확인한다. root # date Mon Oct 3 13:16:22 PDT 2021 Automatic ntpd: 자동으로 system clock을 UTC time으로 sync한다. root # ntpd -q -g Choosing a stage tarball Handbook을 읽어보고 본인에게 적당한 stage tarball을 선택하면 된다. 나는 Multilib, OpenRC를 선택했다. Downloading the stage tarball /mnt/gentoo: root file system이 mount된 곳으로 이동한다. root # cd /mnt/gentoo Command-li..
-
[Gentoo] Gentoo Handbook: Installation (2) Preparing the disks
가장 중요한 부분이라고도 할 수 있는 partition을 설정하는 파트이다. 이 파트의 설명은 Handbook을 한 번쯤 읽어보는 것도 좋다. Introduction to block devices Partition tables Linex 시스템에 분할되지 않은 disk를 그냥 사용할 수도 있지만, 실제로 거의 그렇게 하지는 않는다. 대신, disk block devices 더 작고 더 관리하기 쉬운 block devices로 분할된다. amd64(x86, ...) 시스템에서, 이것을 partition이라 부른다. 현재, 2가지 표준 partitioning 기법이 사용되고 있다: MBR(DOS disklabel)과 GPT이다. 각각 legacy BIOS boot 그리고 UEFI boot process를 적..
-
[Gentoo] Gentoo Handbook: Installation (1) Configuring the network
Automatic network detection ifconfig command 네트워킹이 설정되었다면, ifconfig 명령어로 네트워크 인터페이스를 확인할 수 있다. root # ifconfig Testing the network ping을 통해 네트워크를 테스트한다. ping -c 3 www.gentoo.org Automatic network configuration 네트워크가 즉시 실행되지 않는다면, 설치를 해준다. Default: Using net-setup root # net-setup eth0 ifconfig에서 확인한 네트워크 인터페이스의 이름을 eth0 자리에 넣는다. net-setup 이 끝나면, 네트워크 연결은 잘 작동할 것이다. 네트워크 연결을 테스트하고, 결과가 정상이라면 Prep..
-
[Gentoo] Gentoo Handbook: Installation
Gentoo Linux Handbook을 따라 설치하는 방법을 정리한다. (ㄹㅇ 정리용; 다시 깔 일도 없을 것 같은데, 혹시나) https://wiki.gentoo.org/wiki/Handbook:AMD64 Gentoo AMD64 Handbook - Gentoo Wiki The Gentoo Handbook is an effort to centralize documentation into a coherent handbook. This handbook contains the installation instructions for an Internet-based installation and some additional sections for working with Gentoo's native software..
- 방문자수
전체 방문자
오늘 방문자
어제 방문자