본문 바로가기

분류 전체보기70

[AWS] AWS EC2 프리티어 메모리 부족 현상 해결하기 메모리 스왑, 왜 필요한가?아마 학생 레벨에서는 많이들 AWS 프리티어 계정으로 EC2를 사용할 것이다. 하지만, 프리티어를 사용하다보면 램 부족 현상을 자주 맞이하게 된다. 특히, EC2내에서 gradle build라도 하게 되면 답답하게 오래 걸린다. 또한, 서버가 다운되기도 한다. 왜냐하면, EC2 프리티어는 1GB 메모리밖에 제공하지 않기 때문이다. 반면에, 스토리지 공간은 30GB로 꽤 넉넉하게 준다. 그럼 이렇게 넉넉한 HDD 공간을 가지고 있는데, 쓸데없이 비워둘 것인가? 이걸 활용해야지 않겠는가? 그래서 쓰는 것이 메모리 Swap이다. 메모리가 부족할 경우, HDD의 일정공간을 RAM처럼 사용하는 기술이다. 실제로 AWS 공식문서에도 이와 관련된 내용이 기술되어 있다. 메모리 스왑 AWS .. 2024. 5. 2.
[배포] Azure 발음 평가 사용시 SpeechConfig 초기화 오류 외국 유학생들이 우리 대학 적응을 돕도록 만드는 앱 개발을 진행하고 있다.해당 앱에 대해 궁금하면 외국민 Github를 참조 바란다. 우리 앱 기능 중에서, 외국인들이 한국에서 자주 쓰이는 표현, 발표 스크립트 발음을 평가해주는 기능이 존재한다. 그래서 이걸 어떻게 구현할까 찾던중, Microsoft에서 발음평가 API를 발견하였다. 그래서 Spring 서버에서 이 기능을 사용하여 구현하였다. https://learn.microsoft.com/ko-kr/azure/ai-services/speech-service/ 음성 서비스 설명서 - 자습서, API 참조 - Azure AI 서비스 - Azure AI services음성을 인식하거나, 음성을 합성하거나, 실시간 번역을 받거나, 대화를 받아쓰거나, 음성을.. 2024. 5. 1.
[개발] 채팅 구현에 대한 고찰 채팅 서버 구현 방법 채팅 구현 방법에는 크게 4가지가 있습니다.Polling 방식Long Polling 방식Streaming 방식WebSocket 방식1~3번 방법은 일반적인 RESTFUL API를 이용한 구현 방법입니다. 그래서 비교적 구현이 쉽습니다. 하지만, 이들의 특성상 클라이언트 → 서버로 데이터 전송이 가능하지만, 서버 → 클라이언트로 전송은 불가능합니다. 이를 극복하기 위해서 나온 방법이 바로 4번 WebSocket 방식입니다.1~3번은 100% 실시간성을 보장하지 않습니다. 당연히 일정시간 간격으로 채팅을 서버로부터 끌어오는 방식이기 때문에 그렇습니다. 그렇지만, 채팅이 주력 기능이 아니라서 100% 실시간성을 보장 안해도 된다던지, 아니면 유튜브 Live 채팅같이 동시다발적으로 여러명이.. 2024. 4. 30.
[배포] Docker로 Spring 서버 배포하기 Docker를 왜 쓰는가?AWS EC2 인스턴스에 배포한다던지, 컴퓨터와 노트북을 번갈아가며 개발하다던지, 이러면 각각 개발 환경이 틀려 매번 설정을 해주어야 한다. 하지만 Docker가 있다면? 귀찮게 그럴 필요 없이 쉽게 배포를 진행할 수 있다. Docker에 관해서는 추후 다루겠지만, 아직 작성하지 않은 관계로 아래 블로그를 참고해주면 좋겠다. https://beer1.tistory.com/category/DevOps/Docker 'DevOps/Docker' 카테고리의 글 목록 beer1.tistory.com 일반적인 Docker로 Spring 서버 배포하기 제일 직관직이고 간단한 방법부터 시작해보고자 한다. 우선 프로젝트 최상단에 Dockerfile을 하나 생성하고 아래처럼 작성해보자.FROM o.. 2024. 4. 7.
[소프트웨어공학] Chapter 3 - System Engineering 시스템이란?시스템은 목적을 달성하기 위해 서로 상호작용하는 구성요소로 구성된다. 크거나 작을 수 있고, 복잡하거나 간단할 수 있고, 실제로 존재하거나 컨셉츄얼하게 존재할 수 있다. 개미들, 우주와 같은 자연적인 시스템도 존재하고, 인간이 만든 시스템 역시 많이 존재한다. 인간이 만든 시스템은 실제로 존재하거나 개념적으로만 존재할 수 있다.Computer-based 시스템은 소프트웨어가 하위 시스템으로 포함된 인간이 만든 시스템이다. telecommunication 시스템, 이메일 시스템 등이 포함되어 있다. 몇몇 시스템은 software-only system이고, 몇몇 시스템은 소프트웨어와 하드웨어, 인간의 하위 시스템으로 구성된다.모든 시스템은 다음의 특성들을 공유한다.각 시스템은 상호관련되거나 상호작.. 2024. 3. 31.
[프로젝트 진행하기 #0] 시작하기전에 지금까지 여러 프로젝트들을 많이 시도하며 실패를 맛보고, 현재도 새로운 프로젝트 2개를 진행하고 있다. 하지만, 내가 한 것에 대해서 회고를 하지 않고, 앞만보고 달려나가면 내가 실수 했던 것들, 과정들, 겪었던 고충들을 다 까먹고 반복할 것이다. 따라서, 내가 프로젝트를 어떤 과정으로 진행하고 어떤 어려움을 겪었는지 되돌아보고, 기록하는 시간을 가져보고자 한다. 또한, 아마 대학교 3~4학년 학생들이라면 나처럼 여러가지 프로젝트를 해볼려고 시도를 많이들 할텐데, 프로젝트 경험이 아예 없다면 어떻게 시작할지 막막하고 많은 실수를 할 것이다. 내가 진행한 프로젝트 과정이 100% 정답은 아니겠지만, 어떻게 진행할지에 대해서 방향을 잡도록 도움이 됐으면 하는 마음에서도 글을 써본다. 해당 시리즈를 시작하기 .. 2024. 3. 30.
[백준] 2616번 - 소형기관차 (Java) 문제 https://www.acmicpc.net/problem/2616 2616번: 소형기관차 첫째 줄에 기관차가 끌고 가던 객차의 수가 입력된다. 그 수는 50,000 이하이다. 둘째 줄에는 기관차가 끌고 가던 객차에 타고 있는 손님의 수가 1번 객차부터 차례로 입력된다. 한 객차에 타고 있 www.acmicpc.net 알고리즘 다이나믹 프로그래밍 (DP), 누적합 우선, 각 열차의 승객의 누적합을 구해둔다. 계산식을 단순화하여 계산 속도를 빠르게 하기 위함의 목적이다. 그 다음 dp 배열을 세운다. dp[i][j] : 소형 기관차 i개로 j번째 칸까지 살펴봤을 때, 그 시점에서 최대로 운송할 수 있는 손님의 수 예를 들어, 객실 칸이 1~9번까지 있다고 해보자. dp[2][6]은 소형 기관차 2대로 .. 2024. 3. 18.