sagecode 57

[Project - Howru] (1) 프로젝트 기획

프로젝트 목표/의도요즘 많은 사람들이 영어를 배우지만, 막상 실전에서 말할 기회는 부족하다. 기존 영어 학습같은 경우에는 정적인 단어, 문장의 학습에만 치중되어 있고 실제 회화를 차용에서 학습하기에는 어려움이 있다. 물론 오프라인 영어회화로 그것들을 보충하면 되지만 그 때 학습했던 표현들을 다시 공부하거나 회고하기에는 어려움이 있다. "실시간 대화를 하면서, AI가 자동으로 내 학습 콘텐츠를 정리해준다면 어떨까?"이 질문에서 출발해, 팀원들과 함께 실시간 언어 교환 기반 영어 학습 플랫폼 "하우아유? (How Are You?)"를 기획하게 되었다. 핵심 기능 요약1구글 소셜 로그인Google OAuth를 통한 간편 로그인 (email, provider 저장)2회원가입 옵션 선택모국어 / 학습 언어 / 관..

멋사 부트캠프 2025.08.03

[멋사 부트캠프] Day09 - 예외처리 및 로그분석(ELK)

서버 개발시 오류분석, 디버깅을 할 때 콘솔에 찍힌 로그나 단순 텍스트 파일에 저장된 로그 파일을 분석하기엔 너무 가독성이 좋지 않고 어렵다. 로그가 너무 길어서 원하는 내용을 찾기 어렵다시간대별, 기능별로 분석하기 어렵다서버가 여러 개일 경우, 로그가 분산돼 있어 추적이 어렵다이런 문제들을 해결하기 위해 등장한 것이 로그 수집, 분석, 시각화 도구이다. 그중에서도 가장 많이 사용되는 조합이 바로 ELK스택이다.ELK란?Elasticsearch: 로그 데이터를 저장하고 검색하는 강력한 엔진 Logstash: 로그 데이터를 수집하고 필요한 정보를 추출하는 파이프라인 도구 Kibana: 저장된 로그를 보기 좋게 시각화해주는 도구 ELK 작동순서Spring Boot 애플리케이션 ↓ 로그파일 생성 (logb..

멋사 부트캠프 2025.06.28

[멋사 부트캠프] Day01 - 도커, 컨테이너 기술, 볼륨, 도커파일

도커(Docker)도커는 컨테이너라는 기술을 사용해서 애플리케이션을 언제 어디서나 같은 환경에서 배포하고 실행할 수 있게 해주는 도구이다. 컨테이너 기술한 pc에서 여러가지 프로젝트들을 실행할 때, 언어 등 환경이 다를 경우 컨테이너 기술을 사용하여 실행을 단일화 할 수 있다. 각 애플리케이션이 서로의 실행 환경에 영향을 받지 않고 독립적으로 실행할 수 있도록 하는 기술이다. 구성요소1. 이미지컨테이너를 어떻게 만들건지 명령하는 파일From openjdk:17-jdkWORKDIR /appCOPY ./app.jar /app/app.japCMD ["java", "-jar", "/app/app.jar"]2. 컨테이너 3. 레지스트리우리가 만든 이미지를 보관하는 공간Default는 private 4. Docke..

멋사 부트캠프 2025.06.17

[Network] 공인(Public) IP vs 사설(Private) IP

인터넷 상에서 어떤 네트워크의 IP 주소를 알려고 할 때, 많은 사람들이 IP주소는 하나라고 생각한다. 하지만 그런 생각과는 다르게 IP주소는 공인 IP와 사설 IP로 나뉜다. 그럼 두 IP주소는 다른점이 뭘까? 사용자가 어떤 브라우저에 접근 할 때 경로먼저 네이버의 도메인 주소(www.naver.com) 를 DNS(Domain Name System)가 IP 주소(예: 223.130.195.200)로 변환해준다.이 때, IP 주소가 공인 IP이다.우리가 집에서 쓰는 모든 기기들은 각각 사설 IP를 가지고 있고 모두 공유기(라우터)를 통해 인터넷에 접속한다. 이 때, 공유기로 들어오는 모든 요청은 외부로 나갈 때 공인 IP 주소를 갖고 나가지만 사설 IP를 기억해놨다가 응답이 돌아오면 그 사설 IP에 맞게..

Network 2025.06.14

[Network] ARP vs RARP

컴퓨터끼리 네트워크를 통해 통신할 때, 송신자와 수신자가 어떻게 서로를 알아보고 통신할까? 우리는 웹사이트에 접속할 때 www.google.com 처럼 도메인주소를 이용한다. 컴퓨터는 이걸 IP 주소로 바꾸고, 상대방과 통신을 시작한다. 그런데 여기서 IP주소만 가지고는 데이터가 실제로 도착하지 않는다. IP 주소? MAC 주소?IP 주소(Internet Protocol Address)는 인터넷에 연결된 장치를 식별하기 위한 주소이다. 이 IP주소를 알아도 데이터가 실제로 그 장치에 도달하지 않는데, 정확하게 그 장치에 데이터를 전달하기 위해서는 실제 장치의 물리적인 위치도 알아야 한다.그 주소를 바로 'MAC' 주소라고 한다. 그래서 우리는 IP 주소를 MAC 주소로 변경해주는 또는 MAC 주소를 IP..

Network 2025.06.13

[Network] TCP vs UDP 차이가 무엇일까?

네트워크 전송 계층 중 '전송 계층'에서 사용하는 프로토콜인 TCP와 UDP의 차이에 대해서 알아보자. '전송 계층'은 말그대로 송신자에서 수신자로 가는 데이터의 전송을 맡는 계층이다. 그 데이터를 보내기 위한 규약들이 존재하는데 그것들 중 하나가 TCP, UDP이다. 밑 사진은 OSI 7계층과 TCP/IP 4계층 사진이다.TCP(Transmission Controll Protocol)란?TCP는 인터넷에서 데이터를 메시지 형태로 안정적으로 전송시키는 프로토콜이다. 보통 TCP는 IP와 함께 사용하게 되는데 이 때, TCP는 데이터를 잘게 나누고, 추적하고, 순서대로 재조립하는 역할을 하고, IP는 데이터를 목적지까지 주소를 찾아 보내주는 역할을 하게된다. IP는 데이터를 목적지에 보내주는 역할만 하고..

Network 2025.06.11

[JAVA] 코드의 재사용을 상속(Inheritance)으로 모두 해결할 수 있을까?

프로젝트를 하다 보면, 반복되는 기능을 여러 클래스에서 재사용하고 싶을 때가 있다. 이럴 때 상속을 이용하면 재사용 가능하다. 상속(Inheritance)이란?상속(Inheritance)은 객체지향 프로그래밍의 개념 중 하나로, 기존 클래스의 기능을 자식 클래스가 물려받는 것을 말한다. 중복 코드를 줄이고, 공통 기능을 재사용하기 위한 수단이다.public class Animal { public void breathe() { System.out.println("숨을 쉰다"); }}public class Dog extends Animal { public void bark() { System.out.println("멍멍"); }}이렇게 자식 클래스인 Dog이 부..

JAVA 2025.06.11

[JAVA] 이터레이터 패턴(Iterator Pattern)이 없어도 될 것 같은데.. 왜 사용할까?

객체에 있는 자료구조를 접근할 때, 직접 객체에 접근하여 반복문을 사용하여 자료를 검색한다. 그럼 이터레이터 패턴을 사용해서 자료구조를 순회하는 이유는 무엇일까? 이터레이터 패턴(Iterator Pattern)이란?이터레이터 패턴은 컬렉션의 내부 구조를 노출하지 않고, 그 안의 요소를 순차적으로 접근할 수 있게 해주는 디자인 패턴이다. 컬렉션이 어떤 방식으로 데이터를 담고 있든, 우리는 그 구조를 몰라도 next() 함수로 다음 데이터를 알아 낼 수 있다. 구현// 집합 인터페이스interface Aggregate { Iterator createIterator();}// 이터레이터 인터페이스interface Iterator { boolean hasNext(); String next();}..

JAVA 2025.06.10

[JAVA] 프록시 패턴(Proxy Pattern)과 데코레이터 패턴(Decorator Pattern)

객체지향 설계에서 자주 등장하는 디자인 패턴 중 하나인 프록시(Proxy) 패턴과 데코레이터(Decorator) 패턴은 구조는 유사하지만 목적은 전혀 다른 패턴이다. 프록시 패턴이란?프록시(Proxy) 패턴은 실제 객체에 접근하기 전, 중간 객체를 통해 접근을 제어하는 패턴입니다. 이 중간 객체는 실제 객체와 동일한 인터페이스를 구현하며, 다음과 같은 용도로 활용된다.접근 제어 : 권한이 있는 사용자만 접근지연 로딩 : 실제 객체를 사용할 시점에 생성캐싱 : 동일 요청에 대해 미리 데이터를 준비해 놓고 빠른 응답로깅 : 호출 및 실행 내역 기록보안 : 요청 유효성 검사 등구현public interface Image { void display();}public class RealImage implem..

JAVA 2025.06.10

[운영체제] 선점형 스케줄링 vs 비선점형 스케줄링

CPU 스케줄러는 CPU 스케줄링 알고리즘에 따라 프로세스에서 해야 하는 일을 스레드 단위로 CPU에 할당한다. 프로그램이 실행될 때는 CPU 스케줄링 알고리즘이 어떤 프로그램에 CPU 소유권을 줄 것인지 결정한다. 이 알고리즘은 CPU 이용률은 높게, 주어진 시간에 많은 일을 하도록 준비 큐에 있는 프로세스는 적게, 응답 시간은 짧게 설정하는 것을 목표로 한다. 비선점형 방식비선점형 방식(non-preemptive)는 프로세스가 스스로 CPU 소유권을 포기하는 방식이며, 강제로 프로세스를 중지하지 않는다. 더 쉽게 이야기 해서 한 번 CPU를 할당받은 프로세스는 자발적으로 CPU를 반환할 때까지 계속 실행된다. 이 작업은 CPU의 소유권이 중간에 넘어가는 일이 없기(강제 종료) 때문에 자원의 상태에 대..

OS 2025.06.08