총 24개의 태그를 찾았습니다.

MQTT

2건의 항목

  • 2022년 3월 08일

    지난시간엔 MQTT에 대한 기본적인것과 Public, Subscribe, Topic에 대해 알아보았다. 기억이 나지 않는다면 1편을 다시 보도록 하자. MQTT 알아보기 1편 - MQTT, Publish, Subscribe, Topic QoS는 뭘까? Broker에 대해 알아보기 전에 먼저 QoS에 대해 알아보자.

  • 2022년 2월 18일

    정의 MQTT는 컴퓨터에서 데이터를 주고받는 방식 중 하나다. 컴퓨터에서 데이터를 주고받는 방식을 프로토콜이라고 한다. 그래서 MQTT는 프로토콜의 일종이다. MQTT에서 주고받는 데이터는 메시지인데, 우리가 잘 알고 있는 카카오톡, 라인, 페이스북 메신저와 같은 메신저를 쓸 때 메시지를 보낸다 하는 그 메시지다.

NestJS

1건의 항목

  • 2024년 8월 24일

    개발 기간 2024년 1월 25일 ~ 2024년 06월 30일 (약 5개월) 프로젝트 주제 자취생들의 자취 어려움을 해소하고자 자취생들끼리 팁을 주고 받는 커뮤니티의 장을 웹사이트를 통해 만들고자 하였습니다. 그리고 자취하면서 제일 어려운 오늘 뭘 해먹을지에 대해서 AI에게 도움을 받을 수 있도록 내 냉장고에 있는 식재료들을 넣어놓으면 이 재료들로 만들 수 있는 괜찮은 요리들과 이 요리의 레시피들을 제안받을 수 있는 기능도 추가하였습니다.

NodeJS

8건의 항목

  • 2024년 8월 20일

    Interface 정의 TypeScript에서 Object(객체)의 타입을 지정할 때 사용함 상호간에 정의한 약속 혹은 규칙을 의미 Object 정의 범주 객체의 스펙(속성과 속성의 타입) 함수의 파라미터 함수의 스펙(파라미터, 반환 타입 등) 배열과 객체를 접근하는 방식 클래스 예시 인터페이스 interface IProfile { name: ...

  • 2024년 8월 20일

    Decorator 정의 TypeScript에서 실험적으로 제공하는 기능 구조를 수정하지 않고 기존 객체에 새로운 기능을 추가할 수 있도록 하는 디자인 패턴 tsconfig.json compilerOptions에 "experimentalDecorators": true를 추가해줘야 사용 가능합니다 ...

  • 2024년 8월 20일

    접근 제한자에 대한 정의 변수, 메소드명 앞에 작성하는 것이며, 자식 클래스나 외부 등에서 접근/수정을 가능 또는 불가능하도록 지정해주는 기능을 함 TypeScript에는 public, private, protected, readonly가 있습니다. 접근 권한 Public 구분본인 클래스자식 클래스외부읽기OOO수정OOO Private 구분본인 클래스자식 클래스외부읽기OXX수정OXX Protected 구분본인 클래스자식 클래스외부읽기OOX수정OOX Readonly 구분본인 클래스자식 클래스외부읽기OOO수정XXX 중복 사용 접근 제한자를 두개 이상 중복하여 적용시킬 수 있습니다.

  • 2024년 8월 20일

    타입 추론 TypeScript는 변수 선언 시 따로 타입을 지정하지 않으면 타입을 추론하여 설정하게 됩니다. 이 덕분에 이후 다른 타입을 넣으면 에러를 발생시켜 일관성을 유지합니다. let aaa = '안녕하세요' // aaa의 타입을 String이라고 추론함 aaa = '반갑습니다' aaa = 3 // 🚨 다른 타입을 넣게되면 에러 발생! 타입 명시 : 뒤의 타입명으로 변수의 타입을 직접 명시할 수 있습니다.

  • 2024년 8월 20일

    정의 Node.js와 함께 설치되는 자바스크립트 프로그래밍 언어를 위한 패키지 관리자 다른 여러 개발자들이 만든 라이브러리나 모듈들을 쉽게 설치할 수 있게 도와주는 도구입니다. 설치한 모듈들은 node_modules란 폴더에 담기게 됩니다. 명령어 npm init 새 Node.js 프로젝트를 초기화합니다.

  • 2024년 8월 20일

    정의 Facebook, Google, Exponent, Tilde 등의 기업과 개인 기여자들에 의해 개발된 새로운 자바스크립트 패키지 관리자. 패키지 설치 과정을 병렬로 처리하여 NPM보다 빠른 설치 속도를 제공. 설치 sudo npm install -g yarn 명령어 yarn init 새 Yarn 프로젝트를 초기화합니다.

  • 2024년 8월 20일

    해당 설정 방법은 Yarn 패키지 매니저를 사용하여 진행하였습니다. 만일 NPM을 통해 기본 설정을 원하신다면 NPM 글로 이동하여 NPM에 맞게 명령어를 치환하여 진행하여 주시면 됩니다. 모듈 설치 TypeScript에서 jest를 사용하기 위해선 그냥 jest만 설치하는 것이 아닌 ts-jest 와 @types/jest도 설치해 주어야 합니다.

  • 2024년 8월 20일

    해당 설정 방법은 Yarn 패키지 매니저를 사용하여 진행하였습니다. 만일 NPM을 통해 기본 설정을 원하신다면 NPM 글로 이동하여 NPM에 맞게 명령어를 치환하여 진행하여 주시면 됩니다. TypeScript 모듈 설치 yarn add --dev @types/node typescript TypeScript 설정 파일 생성(tsconfig.json) yarn tsc --init 빌드 파일 생성 경로 지정 생성된 tsconfig.json파일에서 스크롤을 내리면 여러 주석된 줄 중 outDir을 설정하는 줄이 있습니다.

TypeScript

6건의 항목

  • 2024년 8월 20일

    Interface 정의 TypeScript에서 Object(객체)의 타입을 지정할 때 사용함 상호간에 정의한 약속 혹은 규칙을 의미 Object 정의 범주 객체의 스펙(속성과 속성의 타입) 함수의 파라미터 함수의 스펙(파라미터, 반환 타입 등) 배열과 객체를 접근하는 방식 클래스 예시 인터페이스 interface IProfile { name: ...

  • 2024년 8월 20일

    Decorator 정의 TypeScript에서 실험적으로 제공하는 기능 구조를 수정하지 않고 기존 객체에 새로운 기능을 추가할 수 있도록 하는 디자인 패턴 tsconfig.json compilerOptions에 "experimentalDecorators": true를 추가해줘야 사용 가능합니다 ...

  • 2024년 8월 20일

    접근 제한자에 대한 정의 변수, 메소드명 앞에 작성하는 것이며, 자식 클래스나 외부 등에서 접근/수정을 가능 또는 불가능하도록 지정해주는 기능을 함 TypeScript에는 public, private, protected, readonly가 있습니다. 접근 권한 Public 구분본인 클래스자식 클래스외부읽기OOO수정OOO Private 구분본인 클래스자식 클래스외부읽기OXX수정OXX Protected 구분본인 클래스자식 클래스외부읽기OOX수정OOX Readonly 구분본인 클래스자식 클래스외부읽기OOO수정XXX 중복 사용 접근 제한자를 두개 이상 중복하여 적용시킬 수 있습니다.

  • 2024년 8월 20일

    타입 추론 TypeScript는 변수 선언 시 따로 타입을 지정하지 않으면 타입을 추론하여 설정하게 됩니다. 이 덕분에 이후 다른 타입을 넣으면 에러를 발생시켜 일관성을 유지합니다. let aaa = '안녕하세요' // aaa의 타입을 String이라고 추론함 aaa = '반갑습니다' aaa = 3 // 🚨 다른 타입을 넣게되면 에러 발생! 타입 명시 : 뒤의 타입명으로 변수의 타입을 직접 명시할 수 있습니다.

  • 2024년 8월 20일

    해당 설정 방법은 Yarn 패키지 매니저를 사용하여 진행하였습니다. 만일 NPM을 통해 기본 설정을 원하신다면 NPM 글로 이동하여 NPM에 맞게 명령어를 치환하여 진행하여 주시면 됩니다. 모듈 설치 TypeScript에서 jest를 사용하기 위해선 그냥 jest만 설치하는 것이 아닌 ts-jest 와 @types/jest도 설치해 주어야 합니다.

  • 2024년 8월 20일

    해당 설정 방법은 Yarn 패키지 매니저를 사용하여 진행하였습니다. 만일 NPM을 통해 기본 설정을 원하신다면 NPM 글로 이동하여 NPM에 맞게 명령어를 치환하여 진행하여 주시면 됩니다. TypeScript 모듈 설치 yarn add --dev @types/node typescript TypeScript 설정 파일 생성(tsconfig.json) yarn tsc --init 빌드 파일 생성 경로 지정 생성된 tsconfig.json파일에서 스크롤을 내리면 여러 주석된 줄 중 outDir을 설정하는 줄이 있습니다.

WebSocket

1건의 항목

  • 2025년 3월 30일

    WebSocket의 정의 WebSocket은 서버와 클라이언트 간의 양방향 통신을 가능하게 해주는 프로토콜입니다. 한 번 연결이 맺어지면 지속적으로 데이터를 주고받을 수 있는 특징이 있습니다. 비교 항목WebSocketRest API연결 방식한 번 연결 후 유지요청할 때마다 새로운 연결 생성데이터 전송양방향 (Full-duplex)단방향 (Request-Response)헤더 오버헤드최초 핸드셰이크 시만 존재매 요청마다 헤더 포함사용 사례실시간 채팅, 스트리밍, 알림 시스템정적인 데이터 요청, API 호출 WebSocket의 연결 흐름 Handshake 과정 1단계: 클라이언트 → 서버 클라이언트는 HTTP 프로토콜을 사용해 WebSocket 연결을 요청합니다.

네트워크

3건의 항목

  • 2025년 3월 30일

    WebSocket의 정의 WebSocket은 서버와 클라이언트 간의 양방향 통신을 가능하게 해주는 프로토콜입니다. 한 번 연결이 맺어지면 지속적으로 데이터를 주고받을 수 있는 특징이 있습니다. 비교 항목WebSocketRest API연결 방식한 번 연결 후 유지요청할 때마다 새로운 연결 생성데이터 전송양방향 (Full-duplex)단방향 (Request-Response)헤더 오버헤드최초 핸드셰이크 시만 존재매 요청마다 헤더 포함사용 사례실시간 채팅, 스트리밍, 알림 시스템정적인 데이터 요청, API 호출 WebSocket의 연결 흐름 Handshake 과정 1단계: 클라이언트 → 서버 클라이언트는 HTTP 프로토콜을 사용해 WebSocket 연결을 요청합니다.

  • 2022년 3월 08일

    지난시간엔 MQTT에 대한 기본적인것과 Public, Subscribe, Topic에 대해 알아보았다. 기억이 나지 않는다면 1편을 다시 보도록 하자. MQTT 알아보기 1편 - MQTT, Publish, Subscribe, Topic QoS는 뭘까? Broker에 대해 알아보기 전에 먼저 QoS에 대해 알아보자.

  • 2022년 2월 18일

    정의 MQTT는 컴퓨터에서 데이터를 주고받는 방식 중 하나다. 컴퓨터에서 데이터를 주고받는 방식을 프로토콜이라고 한다. 그래서 MQTT는 프로토콜의 일종이다. MQTT에서 주고받는 데이터는 메시지인데, 우리가 잘 알고 있는 카카오톡, 라인, 페이스북 메신저와 같은 메신저를 쓸 때 메시지를 보낸다 하는 그 메시지다.

디자인패턴

2건의 항목

  • 2024년 8월 21일

    MVC 패턴의 정의 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 세가지의 역할로 구분한 패턴그 역할 3개가 Model, View, Controller입니다. 구성 controllers : 미들웨어 함수를 분리해서 관리해 줄 곳 models : DB 생성을 관리해주는 곳 view : 화면에 보여지는 파일들(html 파일)을 관리해주는 곳 실행 과정 controller를 조작합니다.

  • 2024년 8월 20일

    정의 Dependency Injection 즉 의존성주입은 강한 결합 을 느슨한 결합으로 전환 시키는 방법제어의 역전(Inversion of Control)의 기술 중 하나 강한 결합(Tight Coupling) 특징 하나의 객체를 변경하게 되면 다른 객체들의 변경이 요구되어 변경점들을 확인하고 쉽게 놓칠 수 있음 결합이 강하게 되어있어 ...

멋쟁이사자처럼

1건의 항목

  • 2025년 7월 29일

    KDT 부트캠프를 수료하고, 프로젝트도 야무지게 했지만 계속 서류 탈락 또 서류 탈락…개발자 취준생의 쓴맛을 느끼며 통장 잔고를 걱정하던 중 한 문자를 받게 되는데! 돈이 궁하던 저는 고민하지 않고 바로 지원하게 되었습니다. 로켓단 인턴이란? 멋쟁이사자처럼 부트캠프를 수료한 수료생들끼리 1달간 하나의 프로젝트를 진행하는 인턴십입니다.프로젝트의 주제는 이미 정해져 있고, 그 중 가장 마음에 드는 주제를 1지망부터 3지망까지 작성하여 지원했습니다.

부스트캠프

3건의 항목

  • 2024년 8월 11일

    안녕하세요! 저는 네이버 커넥트 재단에서 진행한 부스트캠프 9기의 챌린지를 어제 수료했습니다. 그래서 4주의 챌린지를 다 겪어본 경험을 토대로 제 한달의 회고, 그리고 부스트캠프 챌린지는 어땠는지 후기를 적어보고자 합니다. 부스트캠프 진행 중에 올렸던 회고도 보시고 싶은 분은 아래 링크도 구경해주세요! 1주차 회고 2주차&3주차 회고 막연한 시작 제가 부스트캠프를 지원하게 되었던 이유중 가장 큰 이유는 사실 혼자가 너무 힘들어서였습니다.

  • 2024년 8월 03일

    안녕하세요. 부스트캠프 9기 챌린지를 진행중인 김정욱입니다. 저번주엔 결국 회고를 못쓰게 되어서 이번에 본격적으로 부스트캠프를 진행한 2주차&3주차의 회고를 쓰게 되었습니다. 바쁘고 정신없게 달려왔기에 뜻깊었던 10일을 되짚어보겠습니다. 1주차 회고 보기 딜레마에 빠지다 아마 개발을 해보신 분이라면, 그 중 제한된 시간에 개발을 해보신 분들이라면 더욱 더 한번쯤은 생각해보신 부분일 것이라 생각됩니다.

  • 2024년 7월 20일

    안녕하세요!! 부스트캠프 9기를 웹 풀스택 분야로 참여하게 되면서 현재 챌린지 과정을 하고 있는 김정욱이라고 합니다. 이 회고를 보고계시는 분이 혹시 현재 같이 참여하고 계신 캠퍼, 혹은 수료하신 분들이라면 아시겠지만 저희 첫 주차… 왜 과정 이름이 챌린지인 것인지 정말 뼈저리게 느껴지는 한 주가 되었을 거라고 생각합니다.

스프링

73건의 항목 처음 10개의 태그

  • 2025년 3월 31일

    DefaultHandshakeHandler 정의 WebSocket 연결 시 Principal을 설정하여 사용자를 구분할 수 있는 핸들러입니다. WebSocket 세션과 사용자를 매핑하는 데 유용하며, SimpMessagingTemplate을 사용하여 특정 사용자에게 메시지를 보낼 때 활용됩니다.

  • 2025년 3월 31일

    WebSocket 기반의 STOMP 메시징에서는 사용자 구분 및 특정 사용자에게 메시지를 전송하는 기능이 필요할 수 있습니다. WebSocket에선 사용자가 WebSocket에 연결될 때 Principal 객체를 사용하여 구분할 수 있고, 특정 사용자의 세션 ID를 가져와서 메시지를 개별적으로 보낼 수 있습니다.

  • 2025년 3월 31일

    WebSocketMessageBrokerConfigurer 정의 WebSocketMessageBrokerConfigurer는 Spring에서 STOMP 기반의 WebSocket 메시지 브로커를 설정할 때 사용하는 인터페이스입니다. 메시지 브로커 기반으로 설정하는 클래스이며, 단순 WebSocket 설정을 위해서는 WebSocketConfigurer로 설정을 해 줘야 합니다.

  • 2025년 3월 31일

    STOMP 정의 STOMP(Simple Text Oriented Messaging Protocol)는 텍스트 기반의 메시징 프로토콜로, WebSocket 위에서 동작하는 Pub/Sub(발행/구독) 모델을 지원하는 프로토콜입니다.WebSocket이 양방향 통신을 위한 저수준 프로토콜이라면, STOMP는 메시지 브로커를 ...

  • 2025년 3월 31일

    기본적인 WebSocket은 클라이언트와 서버 간의 양방향 통신을 가능하게 하지만, 메시지를 어떻게 구성하고 처리할지에 대한 표준이 없습니다. 이를 해결하기 위해 WebSocket 위에서 동작하는 STOMP을 사용하면, 일정한 규격을 갖춘 메시지를 주고받을 수 있으며, 메시지 브로커를 활용한 Pub/Sub 구조를 쉽게 구현할 수 있습니다.

  • 2025년 3월 31일

    WebSocketConfigurer 정의 WebSocketConfigurer는 Spring에서 WebSocket 핸들러를 등록하는 인터페이스이를 구현하면 WebSocket 엔드포인트를 설정하고, 특정 핸들러와 매핑할 수 있습니다. 단순 WebSocket이 필요한 상태일 때 사용하는 설정 클래스이며, 메시지 브로커 기반으로 설정을 위해서는 WebSocketMessageBrokerConfigurer로 설정을 해 줘야 합니다.

  • 2025년 3월 31일

    WebSocketHandler 정의 Spring에서 제공하는 WebSocket을 처리하기 위한 WebSocketHandler 인터페이스이를 구현하는 방식에 따라 TextWebSocketHandler와 BinaryWebSocketHandler 등으로 나뉩니다. WebSocketHandler 종류 핸들러 종류사용 목적지원 메시지 유형WebSocketHandler기본 WebSocket 인터페이스텍스트 + 바이너리TextWebSocketHandler텍스트 메시지 전용 (채팅, JSON)TextMessageBinaryWebSocketHandler파일, 이미지, 오디오 등 바이너리 전용BinaryMessagePerConnectionWebSocketHandler세션별 독립적인 핸들러 생성텍스트 + 바이너리 주요 메서드 메서드설명afterConnectionEstablished클라이언트가 연결되었을 때 호출handleMessage클라이언트가 메시지를 보냈을 때 호출handleTransportErrorWebSocket 통신 중 오류 발생 시 호출afterConnectionClosed클라이언트가 연결을 종료했을 때 호출supportsPartialMessages부분 메시지(프레임 분할)를 지원하는지 여부 구현 예시 간단히 TextWebSocketHandler를 구현한 예시입니다.

  • 2025년 3월 30일

    기본적인 WebSocket 기능을 사용하여 양방향 통신이 가능하도록 구현합니다. 필요 라이브러리 // build.gradle .. dependencies { .. implementation 'org.springframework.boot:spring-boot-starter-websocket' } ..

  • 2025년 3월 16일

    트랜잭션 전파(Transaction Propagation) 정의 트랜잭션이 하나 시작한 상태에서 또 다른 트랜잭션을 시작하면 새 트랜잭션을 생성할지, 기존 트랜잭션에 참여할지 등등을 결정하는 방식 Spring에서는 기본적으로 기존 트랜잭션에 참여하는 방식이 기본값이고, 원할 시 다른 방식으로 변경이 가능합니다 ...

  • 2025년 3월 15일

    AOP(Aspect-Oriented Programming)의 정의 관점 지향 프로그래밍(AOP) 을 이용하여 트랜잭션 관리를 자동화하는 기법Spring에서는 @Transactional을 사용하면 프록시가 생성되며 AOP가 자동으로 적용됩니다. 프록시란? 자동으로 만들어져서 원래 객체 대신해서 요청을 받고, 로직을 수행하는 중간 역할의 객체입니다.

스프링/DB연동

18건의 항목 처음 10개의 태그

  • 2025년 3월 16일

    트랜잭션 전파(Transaction Propagation) 정의 트랜잭션이 하나 시작한 상태에서 또 다른 트랜잭션을 시작하면 새 트랜잭션을 생성할지, 기존 트랜잭션에 참여할지 등등을 결정하는 방식 Spring에서는 기본적으로 기존 트랜잭션에 참여하는 방식이 기본값이고, 원할 시 다른 방식으로 변경이 가능합니다 ...

  • 2025년 3월 15일

    AOP(Aspect-Oriented Programming)의 정의 관점 지향 프로그래밍(AOP) 을 이용하여 트랜잭션 관리를 자동화하는 기법Spring에서는 @Transactional을 사용하면 프록시가 생성되며 AOP가 자동으로 적용됩니다. 프록시란? 자동으로 만들어져서 원래 객체 대신해서 요청을 받고, 로직을 수행하는 중간 역할의 객체입니다.

  • 2025년 3월 12일

    Querydsl의 정의 Java 코드 기반으로 SQL, JPA, MongoDB 등의 쿼리를 생성할 수 있도록 해주는 라이브러리JPA와 함께 사용할 경우, 컴파일 타임에 검증 가능한 코드로 복잡한 동적 쿼리를 간결하게 작성할 수 있습니다. Q클래스 Querydsl이 엔티티를 대상으로 자동 생성하는 클래스해당 클래스를 통해 Java 코드 기반으로 쿼리를 작성할 수 있게 됩니다.

  • 2025년 3월 10일

    JPA의 정의 JPA(Java Persistence API)는 자바 객체를 관계형 데이터베이스와 매핑(ORM, Object-Relational Mapping)하기 위한 표준 API즉, DB의 데이터들을 객체 다루듯이 다룰 수 있도록 해줍니다. ORM 매핑 프로젝트의 객체와 이 객체에 해당하는 DB의 테이블을 매핑할 수 있습니다.

  • 2025년 3월 09일

    MyBatis의 정의 JdbcTemplate이 제공하는 기능을 제공하면서 추가로 동적 쿼리를 편리하게 작성할 수 있게 하는 SQL Mapper XML을 통해 SQL 쿼리를 작성하고 기능에 매핑할 수 있습니다. 적용 방법 findAll()에서 검색 기능이 있고, 검색 조건을 넣기 위한 MemberSearchCond가 있는 상황이라고 생각해보겠습니다.

  • 2025년 3월 08일

    데이터 격리 처리가 필요한 이유 각 테스트별로 데이터가 추가가 되면, 이는 다른 테스트에 영향을 줄 수 있고, 또 테스트를 중복 실행할 때 이전에 성공했던 테스트가 다음엔 실패하게 될 수 있습니다. 테스트의 일관성을 유지하고, 다른 테스트에 간섭을 하지 않기 위해서 테스트를 위해 생성했던 데이터는 테스트가 끝나면 모두 지워줘야 합니다.

  • 2025년 3월 08일

    직접 연결 test 폴더 하위의 resources/application.properties에도 spring.datasource.~ 설정을 추가해 줍니다. # properties spring.profiles.active = test spring.datasource.url = jdbc:h2:tcp://localhost/~/test spring.datasource.username = sa spring.datasource.password = 임베디드 DB 연결 1.

  • 2025년 3월 07일

    JdbcTemplate의 정의 템플릿 콜백 패턴을 사용하여 JDBC를 직접 사용할 때 발생하는 반복 작업을 대신 처리해주는 유틸리티 JDBC 단순 사용과의 비교 [Before] @RequiredArgsConstructor public class BeforeRepository { private final DataSource ...

  • 2025년 3월 06일

    SQLExceptionTranslator의 정의 Spring에서 체크 예외인 SQLException을 적절한 DataAccessException 계열의 예외로 변환하는 인터페이스 사용법 translate() 사용 DataAccessException translate(String task, @Nullable ...

  • 2025년 3월 06일

    DataAccessException의 정의 데이터 접근 중 발생하는 예외를 처리하기 위해 Spring에서 제공하는 런타임 예외 체크 예외로 선언될 경우 매번 throws로 전파해야 하는 문제를 방지하고, 일관된 예외 처리를 가능하게 합니다. 계층 DataAccessException 하위로 SQL 문법 오류, 타임아웃 오류 등 여러 데이터 접근 상황에서 발생하는 에러들이 구현되어 있습니다.

스프링/개념

32건의 항목 처음 10개의 태그

  • 2025년 2월 14일

    Multipart의 정의 Http요청에서 파일 업로드를 할 때 주로 사용되며, 요청 데이터에 있는 파일이 Multipart 형태로 들어오게 됩니다. Multipart의 종류 Content-Type설명multipart/form-data파일 업로드 시 사용 (HTML 폼에서 <input type=“file”>을 사용할 때)multipart/mixed서로 다른 데이터 타입을 포함할 때 사용multipart/alternative동일한 내용을 여러 형식(예: HTML, Plain Text)으로 보낼 때 사용multipart/related본문과 연관된 데이터를 함께 보낼 때 (예: HTML 본문과 이미지 첨부) multipart/form-data 예시 POST /upload HTTP/1.1 Host: example.com Content-Type: multipart/form-data; boundary=----WebKitFormBoundary ------WebKitFormBoundary Content-Disposition: form-data; name="username" john_doe ------WebKitFormBoundary Content-Disposition: form-data; name="file"; filename="image.jpg" Content-Type: image/jpeg (binary data) ------WebKitFormBoundary-- Spring에서 Multipart관련 설정 1.

  • 2025년 2월 13일

    Formatter의 정의 실제 개발 환경에서는 문자열을 다른 타입으로 변환하거나, 다른 타입을 문자열로 변환하는 상황이 빈번할 것입니다. 이 때문에 객체를 특정한 포맷에 맞추어 문자로 출력하거나 또는 그 반대의 역할을 하는 것에 특화된 기능을 가진 Formatter가 생겼습니다.

  • 2025년 2월 13일

    Converter의 정의 Spring에서 변환해야 할 타입에 대한 정의를 미리 구현해놓은 것 이를 호출하여 자주 변환하는 타입에 대해 간편하게 타입 변환을 할 수 있습니다. Converter 생성 예시로 ip와 port 정보를 입력받으면 127.0.0.1:8080과 같은 형태로 타입을 변환하거나 그 반대로 변환하는 Converter를 만들어보겠습니다.

  • 2024년 9월 18일

    Spring에선 기본적으로 에러가 발생했을 때 가로채서 내가 원하는대로 처리해줄 수 있도록 하는 ExceptionResolver를 지원합니다. Spring이 기본적으로 지원하는 ExceptionResolver는 3종류가 있으며, 그 중 ResponseStatusExceptionResolver는 아래 두가지의 경우를 자동으로 처리할 수 있습니다.

  • 2024년 9월 16일

    예외 발생 방법 우선 예외를 발생시키는 방법에 대해 알아야 예외 처리를 할 수 있습니다. Exception 클래스 선언 throw new RuntimeException("예외 발생!"); Exception 클래스들을 새로 선언하여 에러를 발생시킬 수 있습니다.

  • 2024년 9월 14일

    Interceptor의 정의 Interceptor란 Spring MVC가 제공하는 기술입니다. Filter와 역할은 같지만 적용되는 순서와 범위, 사용방법이 다릅니다. Filter와의 차이점 HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터 -> 컨트롤러 스프링이 실행되는 흐름을 보면 필터는 서블릿 전에, 인터셉터는 서블릿 후에 호출됩니다.

  • 2024년 9월 14일

    Filter의 정의 Servlet이 지원하는 기능으로, 공통적인 관심사를 가지고 있는 기능들이 실행되기 전 공통적으로 수행할 작업을 진행할 수 있음. Filter의 인터페이스 형태 public interface Filter { public default void init(FilterConfig filterConfig) throws ServletException {} public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException; public default void destroy() {} } init(): 필터 초기화 메서드, 서블릿 컨테이너가 생성될 때 호출됩니다.

  • 2024년 8월 29일

    @SessionAttribute의 정의 Spring에서 Session의 데이터를 더 간편하게 가져올 수 있도록 하는 기능입니다. 이 기능을 사용하면 세션을 따로 생성하진 않고 값을 가져오기만 합니다. 사용 예시 public String home( @SessionAttribute(name = "loginMember", required = false) Member loginMember, ...) { ..

스프링/기본강의

15건의 항목 처음 10개의 태그

  • 2024년 3월 14일

    안녕하세요! 스프링 빈을 만들고 모든 빈이 행복하게 오래오래 살았으면 좋겠지만! 그렇지 않아야 유용할 때도 오겠죠? 그럴 땐 Scope라는 기능을 이용해 봅시다! 땅~ 👉이전 글 보러가기 스코프(Scope) 알아보기 (난 스나이퍼 위에 조준경 그거인줄…) 스코프는 번역하면 범위라고 합니다 ...

  • 2024년 3월 12일

    안녕하세요! 여러분. 스프링 빈이 언제 죽는다고 생각하십니까? 심장 깊숙이 총알이 박혔을 때? 불치의 병에 걸렸을 때? 독버섯으로 만든 스프를 마셨을 때? 바로… 지금 알아보러 갑시다! 👉이전 글 보러가기 상황 가정 우선 저희의 shopping 프로젝트에서보단 따로 상황을 가정해서 만들어봅시다.

  • 2024년 3월 12일

    안녕하세요! 지난 시간에 @Autowired라는 어노테이션을 통해 의존관계를 주입해 봤는데요! 하다 보면서 드는 생각은 어차피 의존관계 주입할 필드는 다 final을 쓸 거고, 다 생성자 만들어서 @Autowired 해줄 건데 엄청 반복적이면서 코드 길이만 늘리는 작업인 것 같아요 ...

  • 2024년 3월 07일

    안녕하세요!! 이전 글에서부터 저희는 Configuration 클래스가 자동으로 구성되도록 하고 있습니다. Component Scan을 통해서도 우선 어느 정도 구성이 되었지만 추가적으로 의존관계에 대해선 적용한 것이 없기 때문에 요건 Autowired라는 기능을 써서 자동으로 구성되게 만들어볼까 합니다.

  • 2024년 3월 06일

    안녕하세요! 열심히 스프링 Bean들의 설정을 구성하느라 고생 많으셨죠? 오늘은 조금 더 간편한 방법을 배워보려 합니다. 만약에 프로젝트가 마구 커져서 Bean이 엄청나게 많아지게 되면 AppConfig를 작성하기가 너무 막막하겠죠? 이를 위해서 자동으로 Bean들을 찾아서 구성해 주는 기능인 Component Scan을 한번 사용해 봅시다! 👉이전 글 보러가기 @Component 지정해 주기 찾아달라고 얘기하기 전에 우선 나를 찾아달라는 표시를 우리의 클래스들에게 데코레이터로 지정해 줄 수 있습니다.

  • 2024년 3월 04일

    안녕하세요! 너무 오랜만에 돌아왔죠? SW마에스트로를 지원하면서 코딩테스트 공부를 처음 시작해 보느라 블로그 쓸 시간이 부족했네요ㅠ 이 얘기는 나중에 따로 적기로 하고 저희는 오늘 싱글톤 패턴에 대해 알아보고 적용할 거예요. (혼자야?) 싱글인 것도 서러운데 싱글톤 패턴은 뭘까요ㅠㅠ 싱글톤 패턴이라는 말이 생소한 분들이 많을 것 같아요! 그럼 제일 먼저 싱글톤 패턴이 무엇인지와 우리 프로젝트에 왜 필요한지에 대해 설명드릴게요~ 👉이전 글 보러가기 싱글톤 패턴이란? 얘는 일단 소프트웨어의 디자인 패턴 중 하나입니다.

  • 2023년 12월 09일

    여러분 봄이 왔습니다!! 하핫. 사실은 글을 쓰는 현재는 12월 몹시 추운 날입니다. 롱패딩까지 입고있다구요… 하지만! 저희의 프로젝트에는 봄이 왔습니다! 드디어 Spring의 기능을 써볼 예정인데요. 바로 제목에 나와있는 @Configuration입니다. 저희는 이전글에서 눈빠지게 설정파일을 만들었는데 무슨 또 설정을 하라는거냐!!! 하시겠죠? 하지만 우리가 만든 AppConfig라는 세팅파일을 Spring이 관리해줄 수 있도록 설정해주는 과정을 배우는것이라 우리는 우리 프로젝트를 관리해야하는 짐을 스프링에게 좀 덜어낼 수 있을겁니다.

  • 2023년 12월 03일

    우려했던 일이 벌어졌습니다… 할인정책을 바꾸라고 하시네요?! 기어코 다 만들어버리니까 바꾸라는 사장님. 하지만! 저희는 여기서 사직서 대신 키보드와 마우스를 들고 객체지향을 통해 간단하게 수정을 진행해 볼까 합니다. 가보죠! 👉이전 글 보러가기 새 할인정책 만들기 바뀐 할인정책에 대해 들어볼까요? 사장님: 생각해보니까 1,000원으로 고정 할인하면 낱개별로 라면 하나씩 계속 주문하면 계속 무료인거잖아?? 산 금액에서 10%할인해주는걸로 당장 바꿔!! 이제 주문한 금액의 10% 할인으로 바꿔줘야겠네요.

  • 2023년 12월 03일

    안녕하세요! 이전글에서 코드만 많고 지루한 내용을 많이 해서 이번 글은 조금 가볍게 볼만한 내용을 준비했습니다. 백엔드를 통해 기능을 개발하다보면 이게 정말 내가 원하는대로 작동이 잘 될까? 하는 의심이 생길때가 자주 있죠. 그렇다고 이걸 잘 되길 기도하면서 적용이 될때동안 기다릴 수는 없는 노릇이고, 그리고 이전글처럼 따로 main함수를 만들어 돌려보고 하기도 복잡하고 지저분해지기만 합니다.

  • 2023년 12월 01일

    안녕하세요! 진짜 오랜만에 다시 글을 쓰게 되었습니다. 오늘은 저번 시간에 미처 못 구현한 주문 그리고 할인해주는 기능을 개발해보도록 합시다! 👉이전 글 보러가기 할인 정책 개발 먼저 기억나실지 모르겠지만 저희는 등급제를 운영하여 VIP등급이면 1,000원을 고정적으로 할인해주는 할인 정책으로 개발하기로 했었습니다.

스프링/웹소켓

8건의 항목

  • 2025년 3월 31일

    DefaultHandshakeHandler 정의 WebSocket 연결 시 Principal을 설정하여 사용자를 구분할 수 있는 핸들러입니다. WebSocket 세션과 사용자를 매핑하는 데 유용하며, SimpMessagingTemplate을 사용하여 특정 사용자에게 메시지를 보낼 때 활용됩니다.

  • 2025년 3월 31일

    WebSocket 기반의 STOMP 메시징에서는 사용자 구분 및 특정 사용자에게 메시지를 전송하는 기능이 필요할 수 있습니다. WebSocket에선 사용자가 WebSocket에 연결될 때 Principal 객체를 사용하여 구분할 수 있고, 특정 사용자의 세션 ID를 가져와서 메시지를 개별적으로 보낼 수 있습니다.

  • 2025년 3월 31일

    WebSocketMessageBrokerConfigurer 정의 WebSocketMessageBrokerConfigurer는 Spring에서 STOMP 기반의 WebSocket 메시지 브로커를 설정할 때 사용하는 인터페이스입니다. 메시지 브로커 기반으로 설정하는 클래스이며, 단순 WebSocket 설정을 위해서는 WebSocketConfigurer로 설정을 해 줘야 합니다.

  • 2025년 3월 31일

    STOMP 정의 STOMP(Simple Text Oriented Messaging Protocol)는 텍스트 기반의 메시징 프로토콜로, WebSocket 위에서 동작하는 Pub/Sub(발행/구독) 모델을 지원하는 프로토콜입니다.WebSocket이 양방향 통신을 위한 저수준 프로토콜이라면, STOMP는 메시지 브로커를 ...

  • 2025년 3월 31일

    기본적인 WebSocket은 클라이언트와 서버 간의 양방향 통신을 가능하게 하지만, 메시지를 어떻게 구성하고 처리할지에 대한 표준이 없습니다. 이를 해결하기 위해 WebSocket 위에서 동작하는 STOMP을 사용하면, 일정한 규격을 갖춘 메시지를 주고받을 수 있으며, 메시지 브로커를 활용한 Pub/Sub 구조를 쉽게 구현할 수 있습니다.

  • 2025년 3월 31일

    WebSocketConfigurer 정의 WebSocketConfigurer는 Spring에서 WebSocket 핸들러를 등록하는 인터페이스이를 구현하면 WebSocket 엔드포인트를 설정하고, 특정 핸들러와 매핑할 수 있습니다. 단순 WebSocket이 필요한 상태일 때 사용하는 설정 클래스이며, 메시지 브로커 기반으로 설정을 위해서는 WebSocketMessageBrokerConfigurer로 설정을 해 줘야 합니다.

  • 2025년 3월 31일

    WebSocketHandler 정의 Spring에서 제공하는 WebSocket을 처리하기 위한 WebSocketHandler 인터페이스이를 구현하는 방식에 따라 TextWebSocketHandler와 BinaryWebSocketHandler 등으로 나뉩니다. WebSocketHandler 종류 핸들러 종류사용 목적지원 메시지 유형WebSocketHandler기본 WebSocket 인터페이스텍스트 + 바이너리TextWebSocketHandler텍스트 메시지 전용 (채팅, JSON)TextMessageBinaryWebSocketHandler파일, 이미지, 오디오 등 바이너리 전용BinaryMessagePerConnectionWebSocketHandler세션별 독립적인 핸들러 생성텍스트 + 바이너리 주요 메서드 메서드설명afterConnectionEstablished클라이언트가 연결되었을 때 호출handleMessage클라이언트가 메시지를 보냈을 때 호출handleTransportErrorWebSocket 통신 중 오류 발생 시 호출afterConnectionClosed클라이언트가 연결을 종료했을 때 호출supportsPartialMessages부분 메시지(프레임 분할)를 지원하는지 여부 구현 예시 간단히 TextWebSocketHandler를 구현한 예시입니다.

  • 2025년 3월 30일

    기본적인 WebSocket 기능을 사용하여 양방향 통신이 가능하도록 구현합니다. 필요 라이브러리 // build.gradle .. dependencies { .. implementation 'org.springframework.boot:spring-boot-starter-websocket' } ..

알고리즘

6건의 항목

  • 2025년 2월 28일

    sorted() 사용법 sorted()는 인자값으로 넣은 배열을 정렬하여 return해주는 python의 함수입니다. sorted(iterable, key, reverse) iterable: 리스트같이 순회할 수 있는 객체(map, list 등등) key : 함수를 넣어 사용자화된 정렬이 가능하게 함 reverse : 이 옵션이 True면 결과를 역순으로 반환 key 옵션 주로 lambda를 사용하고, 기본값은 lambda x : x라고 생각할 수 있습니다.

  • 2024년 9월 01일

    순열 알고리즘이란? n개의 원소 중에서 r개를 나열하는 모든 경우를 살펴보는 알고리즘입니다. 조합 알고리즘과 다른 점은 순열은 순서의 개념이 존재하므로 [1, 3, 2]와 [2, 1, 3]의 경우의 수를 다른 경우로 취급하고 센다는 것입니다. 공식 : _nP_r = n \cdot (n-1) \ \cdots \ (n-r+1) 예시 : [1, 2, 3, 4, 5] 5개 중 3개를 뽑는 순열은 _5P_3으로 나타낼 수 있습니다.

  • 2024년 9월 01일

    조합 알고리즘이란? n개의 숫자 중 r개의 수들을 뽑는 모든 경우의 수를 구하는 것입니다.순열 알고리즘과 다른 점은 수를 뽑는 경우의 수를 구하는 것이기 때문에 [1, 3, 2]와 [2, 1, 3]의 경우의 수를 동일하게 하나로 보고 센다는 것입니다. 공식 : _nC_r = \frac{_nP_r}{r!} = \frac{n \cdot (n-1) \ \cdots \ (n-r+1)}{r!} 예시 : [1, 2, 3, 4, 5] 5개 중 3개를 뽑는 조합은 _5C_3으로 나타낼 수 있습니다.

  • 2024년 9월 01일

    문제 BOJ 4779 문제 -가 3N개 있는 문자열에서 시작한다. 문자열을 3등분 한 뒤, 가운데 문자열을 공백으로 바꾼다. 이렇게 하면, 선(문자열) 2개가 남는다. 이제 각 선(문자열)을 3등분 하고, 가운데 문자열을 공백으로 바꾼다. 이 과정은 모든 선의 길이가 1일때 까지 계속 한다.

  • 2024년 8월 24일

    메모이제이션이란? 중복적으로 계산하는 값들을 저장해 둠으로써 불필요한 중복 계산을 막는 방법입니다.피보나치 수열 구현에서 이 방법을 사용하는 예시를 잘 확인할 수 있습니다. 문제 BOJ 10870 문제 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144…으로 이어나가는 피보나치 수열에서 입력값에 들어온 숫자번째의 피보나치 수의 값을 구하면 되는 문제입니다.

  • 2024년 8월 24일

    Sublime Text3란? 간단한 코드를 실행하기에 좋은 매우 가벼운 IDE입니다.코딩테스트 공부를 하면서 무거운 프로그램을 짤 일은 없기 때문에 코딩테스트 공부에 매우 적합합니다! 설치 방법 Sublime Text3 설치 링크를 클릭해서 OS X버전을 클릭하여 다운로드합니다 ...

와글

5건의 항목

  • 2025년 1월 29일

    Waggle 프로젝트에서 이미지 업로드가 필요한 상황으로는 회원 프로필 이미지가 있습니다. 때문에 AWS S3를 구성하고 처음으로 Rest API 환경에서 이미지를 요청받고 처리하는 과정을 구현할 수 있었습니다. 이미지 업로드 기능을 구현한 과정을 정리해봤습니다. 1) S3 버킷 생성 이미지가 들어갈 수 있는 공간을 생성하기 위해 S3 서비스에서 버킷을 생성했습니다.

  • 2024년 12월 31일

    백엔드는 서버 부하 최소화와 빈틈없는 로직도 중요하지만, 처리 후 얼마나 알아먹기 좋은 데이터를 전달할 수 있는가도 중요합니다. 때문에 하나의 포트폴리오가 될 이번 프로젝트에서 데이터를 최대한 이쁘게 Response하는 것 또한 저희 팀에서 중요한 과제였습니다. Response에 대한 고민 과정과 저희 팀 나름대로의 해결 방안에 대해 정리해보았습니다.

  • 2024년 12월 10일

    이번 프로젝트의 로그인은 가장 고민을 많이 해서 구현했습니다. OAuth2를 처음으로 사용하다 보니 코드를 작성할 때 마다 뭔가 엄청 비효율적인 것 같고 코드를 알아보기 힘들었습니다.그러다 보니 시중에 서비스하는 서비스들의 로그인 기능 수준으로 구현을 하기 위해 계속 갈아엎고 찾아보기를 반복하여 현재 우리 프로젝트에서는 OAuth2 로그인을 어떻게 구현했는지 정리해보았습니다.

  • 2024년 10월 02일

    이번 프로젝트를 진행하면서는 조금 간지나게 GitHub를 활용하고 싶었습니다.Issue도 더 현업자처럼 작성해 보고 싶었고, Pull Request를 요청하며 코드 리뷰도 하는 방향으로 진행하기로 결정했습니다. 이번 프로젝트를 진행하며 개발자끼리의 협업을 고민해 본 과정 기록입니다.

  • 2024년 9월 30일

    2024년 9월이 되고 첫날. 네이버 부스트캠프 챌린지 과정을 끝내고 이제 뭘 할까 고민하고 있었습니다.(네이버 부스트캠프 챌린지 과정 회고 보기) 그 때가 이 프로젝트의 시작이었습니다. 1) 만들게 된 계기 솔직히 제가 만들 생각은 없었습니다. 처음에는 이미 결성된 프로젝트 팀에 참가하기 위하여 어디든 껴달라고 인프런의 커뮤니티에 글을 작성했습니다.그 때 작성했던 글 연락이 올 것이라고 기대하진 않았었는데 한 분이 연락을 주셨습니다.

우아한테크코스

1건의 항목

  • 2024년 11월 15일

    안녕하세요! 저 이번에 처음으로 우아한테크코스 7기에 지원하게 되어서 지난 한달동안 프리코스를 진행하게 되었습니다. 그래서 제가 한달간 프리코스를 진행하면서 느낀 점을 정리하여 회고로 작성해보고자 합니다. 프리코스란? 프리코스는 우아한테크코스 본 과정을 미리 경험해 보는 단계입니다.

정보처리기사

13건의 항목 처음 10개의 태그

  • 2025년 6월 26일

    ⚙️ 소프트웨어 설계 ⚙️ 응집도 하나의 모듈이 얼마나 하나의 책임에 집중하는가높을수록 좋고, 낮을수록 유지보수 어렵고 오류 가능성 큼 응집 정도응집도 수준설명높음기능적 응집단 하나의 기능 수행순차적 응집앞의 결과가 다음 기능의 입력교환(통신)적 응집동일한 데이터 사용절차적 응집일정 순서대로 수행되는 기능 모여있음시간적 응집시간적으로 비슷한 ...

  • 2025년 6월 24일

    1번 문제: 아래 설명에 맞는 RAID 단계를 숫자로 작성하시오. Striping(스트라이핑) 구현 방식 I/O 로드의 분산으로 매우 빠른 속도 데이터를 블럭으로 분할 저장하며, 각 블럭은 다른 디스크로 나뉘어 저장 답: 0 2번 문제: 다음 설명을 확인하여 해당하는 항목을 보기에서 찾아 적으시오.

  • 2025년 6월 24일

    1번 문제: 다음은 관계 데이터 모델에 대한 설명이다. 괄호안에 들어가는 용어를 작성하시오. ( )은 /는 관계 데이터의 연산을 표현하는 방법으로, 원하는 정보를 정의할 때는 계산 수식을 사용한다. 수학의 predicate calculus에 기반을 두고 있으며, 관계 데이터 모델의 제안자인 codd가 수학에 가까운 기반을 두고 특별히 관계 데이터베이스를 위해 제안하여 탄생하였다.

  • 2025년 6월 24일

    1번 문제: 아래는 C언어의 2차원 배열 형태이다. field의 경우 2차원 배열 형태는 예시처럼 출력되므로, 이를 참고하여 mines의 2차원 배열 형태를 작성하시오. void main{ field {{0,1,0,1},{0,0,0,1},{1,1,1,0},{0,1,1,1}}; mines {{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}}; int w = 4, h = 4; for(y=0; y<h; y++) { for(x=0; x<w; x++) { if(field[y][x] == 0) continue; for(i=y-1; i<=y+1; i++) { for(j=x-1; j<=x+1; j++) { if(calculate(w,h,j,i) == 1) { mines[i][j] += 1; } } } } } for(y=0; y<h; y++){ for(x=0; x<w; x++) { printf("%d", mines[y][x]); printf("\n"); } } } int calculate(w,h,j,i) { if (i >= 0 && i < h && j >= 0 && j < w) return 1; return 0; } 답: 1, 1, 3, 2 3, 4, 5, 3 3, 5, 6, 4 3, 5, 5, 3 2번 문제: 아래 예시를 보고 관계 대수에 대한 기호를 작성하시오.

  • 2025년 6월 24일

    1번 문제: 다음 Java 코드의 출력값을 작성하시오. class Static{ public int a = 20; static int b = 0; } public class Main{ public static void main(String[] args) { int a; a = 10; Static.b = a; Static st = new Static(); System.out.println(Static.b++); System.out.println(st.b); System.out.println(a); System.out.print(st.a); } } 답: 10 11 10 20 2번 문제: 다음 C언어 코드의 출력값을 작성하시오.

  • 2025년 6월 24일

    1번 문제: 다음은 C언어 코드의 문제이다. 보기의 조건에 맞도록 괄호안에 알맞은 코드를 작성하시오. 보기 입력값이 54321일 경우 출력값이 43215로 출력되어야 한다. int main(void) { int n[^5]; int i; for (i = 0; i < 5; i++) { printf("숫자를 입력해주세요 : "); scanf("%d", &n[i]); } for (i = 0; i < 5; i++) { printf("%d", ( ) ); } return 0; } 답: n$(i+1) % 5$ 2번 문제: 다음은 JAVA 코드 문제이다.

  • 2025년 6월 24일

    1번 문제: 다음은 Java 코드이다. 올바른 출력 결과를 작성하시오. public class main{ public static void main(String[] args) { A b = new B(); b.paint(); b.draw(); } } class A { public void paint() { System.out.print("A"); draw(); } public void draw() { System.out.print("B"); draw(); } } class B extends A { public void paint() { super.draw(); System.out.print("C"); this.draw(); } public void draw() { System.out.print("D"); } } 답: BDCDD 2번 문제: 다음 설명하는 용어를 보기에 맞게 골라 기호를 작성하시오.

  • 2025년 6월 24일

    1번 문제: 다음 Java 코드에서 알맞는 출력 값을 작성하시오. class Connection { private static Connection _inst = null; private int count = 0; static public Connection get() { if(_inst == null) { _inst = new Connection(); return _inst; } return _inst; } public void count() { count++; } public int getCount() { return count; } } public class main { public static void main(String[] args) { Connection conn1 = Connection.get(); conn1.count(); Connection conn2 = Connection.get(); conn2.count(); Connection conn3 = Connection.get(); conn3.count(); conn1.count(); System.out.print(conn1.getCount()); } } 답: 4 2번 문제: 다음 C언어 코드에서 알맞는 출력 값을 작성하시오.

  • 2025년 6월 24일

    1번 문제: 다음은 Java 코드에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오. class Main { public static void main(String[] args) { int[] a = new int[]{1, 2, 3, 4}; int[] b = new int[]{1, 2, 3, 4}; int[] c = new int[]{1, 2, 3}; check(a, b); check(a, c); check(b, c); } public static void check(int[] a, int[] b) { if (a==b) { System.out.print("O"); }else{ System.out.print("N"); } } } 답: NNN 2번 문제: 다음 문제에서 설명하는 용어를 작성하시오.

  • 2025년 6월 24일

    1번 문제: 다음은 Java 코드에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오. public class Main{ static String[] s = new String[^3]; static void func(String[]s, int size){ for(int i=1; i<size; i++){ if(s[i-1].equals(s[i])){ System.out.print("O"); }else{ System.out.print("N"); } } for (String m : s){ System.out.print(m); } } public static void main(String[] args){ s[^0] = "A"; s[^1] = "A"; s[^2] = new String("A"); func(s, 3); } } 답: OOAAA 2번 문제: 다음은 파이썬에 대한 문제이다.

정보처리기사/기출

10건의 항목

  • 2025년 6월 24일

    1번 문제: 아래 설명에 맞는 RAID 단계를 숫자로 작성하시오. Striping(스트라이핑) 구현 방식 I/O 로드의 분산으로 매우 빠른 속도 데이터를 블럭으로 분할 저장하며, 각 블럭은 다른 디스크로 나뉘어 저장 답: 0 2번 문제: 다음 설명을 확인하여 해당하는 항목을 보기에서 찾아 적으시오.

  • 2025년 6월 24일

    1번 문제: 다음은 관계 데이터 모델에 대한 설명이다. 괄호안에 들어가는 용어를 작성하시오. ( )은 /는 관계 데이터의 연산을 표현하는 방법으로, 원하는 정보를 정의할 때는 계산 수식을 사용한다. 수학의 predicate calculus에 기반을 두고 있으며, 관계 데이터 모델의 제안자인 codd가 수학에 가까운 기반을 두고 특별히 관계 데이터베이스를 위해 제안하여 탄생하였다.

  • 2025년 6월 24일

    1번 문제: 아래는 C언어의 2차원 배열 형태이다. field의 경우 2차원 배열 형태는 예시처럼 출력되므로, 이를 참고하여 mines의 2차원 배열 형태를 작성하시오. void main{ field {{0,1,0,1},{0,0,0,1},{1,1,1,0},{0,1,1,1}}; mines {{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}}; int w = 4, h = 4; for(y=0; y<h; y++) { for(x=0; x<w; x++) { if(field[y][x] == 0) continue; for(i=y-1; i<=y+1; i++) { for(j=x-1; j<=x+1; j++) { if(calculate(w,h,j,i) == 1) { mines[i][j] += 1; } } } } } for(y=0; y<h; y++){ for(x=0; x<w; x++) { printf("%d", mines[y][x]); printf("\n"); } } } int calculate(w,h,j,i) { if (i >= 0 && i < h && j >= 0 && j < w) return 1; return 0; } 답: 1, 1, 3, 2 3, 4, 5, 3 3, 5, 6, 4 3, 5, 5, 3 2번 문제: 아래 예시를 보고 관계 대수에 대한 기호를 작성하시오.

  • 2025년 6월 24일

    1번 문제: 다음 Java 코드의 출력값을 작성하시오. class Static{ public int a = 20; static int b = 0; } public class Main{ public static void main(String[] args) { int a; a = 10; Static.b = a; Static st = new Static(); System.out.println(Static.b++); System.out.println(st.b); System.out.println(a); System.out.print(st.a); } } 답: 10 11 10 20 2번 문제: 다음 C언어 코드의 출력값을 작성하시오.

  • 2025년 6월 24일

    1번 문제: 다음은 C언어 코드의 문제이다. 보기의 조건에 맞도록 괄호안에 알맞은 코드를 작성하시오. 보기 입력값이 54321일 경우 출력값이 43215로 출력되어야 한다. int main(void) { int n[^5]; int i; for (i = 0; i < 5; i++) { printf("숫자를 입력해주세요 : "); scanf("%d", &n[i]); } for (i = 0; i < 5; i++) { printf("%d", ( ) ); } return 0; } 답: n$(i+1) % 5$ 2번 문제: 다음은 JAVA 코드 문제이다.

  • 2025년 6월 24일

    1번 문제: 다음은 Java 코드이다. 올바른 출력 결과를 작성하시오. public class main{ public static void main(String[] args) { A b = new B(); b.paint(); b.draw(); } } class A { public void paint() { System.out.print("A"); draw(); } public void draw() { System.out.print("B"); draw(); } } class B extends A { public void paint() { super.draw(); System.out.print("C"); this.draw(); } public void draw() { System.out.print("D"); } } 답: BDCDD 2번 문제: 다음 설명하는 용어를 보기에 맞게 골라 기호를 작성하시오.

  • 2025년 6월 24일

    1번 문제: 다음 Java 코드에서 알맞는 출력 값을 작성하시오. class Connection { private static Connection _inst = null; private int count = 0; static public Connection get() { if(_inst == null) { _inst = new Connection(); return _inst; } return _inst; } public void count() { count++; } public int getCount() { return count; } } public class main { public static void main(String[] args) { Connection conn1 = Connection.get(); conn1.count(); Connection conn2 = Connection.get(); conn2.count(); Connection conn3 = Connection.get(); conn3.count(); conn1.count(); System.out.print(conn1.getCount()); } } 답: 4 2번 문제: 다음 C언어 코드에서 알맞는 출력 값을 작성하시오.

  • 2025년 6월 24일

    1번 문제: 다음은 Java 코드에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오. class Main { public static void main(String[] args) { int[] a = new int[]{1, 2, 3, 4}; int[] b = new int[]{1, 2, 3, 4}; int[] c = new int[]{1, 2, 3}; check(a, b); check(a, c); check(b, c); } public static void check(int[] a, int[] b) { if (a==b) { System.out.print("O"); }else{ System.out.print("N"); } } } 답: NNN 2번 문제: 다음 문제에서 설명하는 용어를 작성하시오.

  • 2025년 6월 24일

    1번 문제: 다음은 Java 코드에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오. public class Main{ static String[] s = new String[^3]; static void func(String[]s, int size){ for(int i=1; i<size; i++){ if(s[i-1].equals(s[i])){ System.out.print("O"); }else{ System.out.print("N"); } } for (String m : s){ System.out.print(m); } } public static void main(String[] args){ s[^0] = "A"; s[^1] = "A"; s[^2] = new String("A"); func(s, 3); } } 답: OOAAA 2번 문제: 다음은 파이썬에 대한 문제이다.

  • 2025년 6월 24일

    1번 문제: 다음은 네트워크 보완에 관련된 문제이다. 괄호안에 알맞는 용어를 작성하시오. ( )은/는 ‘세션을 가로채다.’ 라는 의미로 다른 사람의 세션 상태를 훔치거나 도용하여 액세스하는 해킹 기법이다. TCP ( )은/는 TCP의 3-way 핸드셰이크가 완료된 후에 공격자가 시퀀스 번호 등을 조작하여 정상적인 세션을 가로채고 인증 없이 통신을 탈취하는 공격 공격이다.

정보처리기사/정리

3건의 항목

  • 2025년 6월 26일

    ⚙️ 소프트웨어 설계 ⚙️ 응집도 하나의 모듈이 얼마나 하나의 책임에 집중하는가높을수록 좋고, 낮을수록 유지보수 어렵고 오류 가능성 큼 응집 정도응집도 수준설명높음기능적 응집단 하나의 기능 수행순차적 응집앞의 결과가 다음 기능의 입력교환(통신)적 응집동일한 데이터 사용절차적 응집일정 순서대로 수행되는 기능 모여있음시간적 응집시간적으로 비슷한 ...

  • 2025년 6월 24일

    1. 네트워크 계층 구조 OSI 7계층 계층주요 기능프로토콜/장비응용(7)사용자 인터페이스HTTP, FTP, DNS표현(6)암호화/압축SSL, JPEG세션(5)세션 관리NetBIOS, RPC전송(4)신뢰성 전송TCP, UDP네트워크(3)경로 설정IP, ICMP, 라우터데이터 링크(2)프레임 전송이더넷, 스위치물리(1)신호 변환허브, 케이블 TCP/IP 4계층: 응용 → 전송 → 인터넷 → 네트워크 접속 2.

  • 2025년 6월 24일

    1. 트랜잭션(Transaction) ACID 특성 원자성(Atomicity): 트랜잭션 작업이 전부 성공하거나 전부 실패해야 함 (e.g., 계좌이체 시 A→B 이체 실패 시 A 출금도 롤백) 일관성(Consistency): 트랜잭션 후 데이터베이스 상태가 모든 제약 조건을 만족해야 함 격리성(Isolation): 동시 실행 트랜잭션이 서로에게 영향을 미치지 않아야 함 지속성(Durability): 완료된 트랜잭션 결과는 시스템 장애 시에도 유지되어야 함 트랜잭션 상태 전이: 생성 → 준비 → 실행 → 대기 → 완료 2.

코딩테스트

6건의 항목

  • 2025년 2월 28일

    sorted() 사용법 sorted()는 인자값으로 넣은 배열을 정렬하여 return해주는 python의 함수입니다. sorted(iterable, key, reverse) iterable: 리스트같이 순회할 수 있는 객체(map, list 등등) key : 함수를 넣어 사용자화된 정렬이 가능하게 함 reverse : 이 옵션이 True면 결과를 역순으로 반환 key 옵션 주로 lambda를 사용하고, 기본값은 lambda x : x라고 생각할 수 있습니다.

  • 2024년 9월 01일

    순열 알고리즘이란? n개의 원소 중에서 r개를 나열하는 모든 경우를 살펴보는 알고리즘입니다. 조합 알고리즘과 다른 점은 순열은 순서의 개념이 존재하므로 [1, 3, 2]와 [2, 1, 3]의 경우의 수를 다른 경우로 취급하고 센다는 것입니다. 공식 : _nP_r = n \cdot (n-1) \ \cdots \ (n-r+1) 예시 : [1, 2, 3, 4, 5] 5개 중 3개를 뽑는 순열은 _5P_3으로 나타낼 수 있습니다.

  • 2024년 9월 01일

    조합 알고리즘이란? n개의 숫자 중 r개의 수들을 뽑는 모든 경우의 수를 구하는 것입니다.순열 알고리즘과 다른 점은 수를 뽑는 경우의 수를 구하는 것이기 때문에 [1, 3, 2]와 [2, 1, 3]의 경우의 수를 동일하게 하나로 보고 센다는 것입니다. 공식 : _nC_r = \frac{_nP_r}{r!} = \frac{n \cdot (n-1) \ \cdots \ (n-r+1)}{r!} 예시 : [1, 2, 3, 4, 5] 5개 중 3개를 뽑는 조합은 _5C_3으로 나타낼 수 있습니다.

  • 2024년 9월 01일

    문제 BOJ 4779 문제 -가 3N개 있는 문자열에서 시작한다. 문자열을 3등분 한 뒤, 가운데 문자열을 공백으로 바꾼다. 이렇게 하면, 선(문자열) 2개가 남는다. 이제 각 선(문자열)을 3등분 하고, 가운데 문자열을 공백으로 바꾼다. 이 과정은 모든 선의 길이가 1일때 까지 계속 한다.

  • 2024년 8월 24일

    메모이제이션이란? 중복적으로 계산하는 값들을 저장해 둠으로써 불필요한 중복 계산을 막는 방법입니다.피보나치 수열 구현에서 이 방법을 사용하는 예시를 잘 확인할 수 있습니다. 문제 BOJ 10870 문제 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144…으로 이어나가는 피보나치 수열에서 입력값에 들어온 숫자번째의 피보나치 수의 값을 구하면 되는 문제입니다.

  • 2024년 8월 24일

    Sublime Text3란? 간단한 코드를 실행하기에 좋은 매우 가벼운 IDE입니다.코딩테스트 공부를 하면서 무거운 프로그램을 짤 일은 없기 때문에 코딩테스트 공부에 매우 적합합니다! 설치 방법 Sublime Text3 설치 링크를 클릭해서 OS X버전을 클릭하여 다운로드합니다 ...

패키지매니저

2건의 항목

  • 2024년 8월 20일

    정의 Node.js와 함께 설치되는 자바스크립트 프로그래밍 언어를 위한 패키지 관리자 다른 여러 개발자들이 만든 라이브러리나 모듈들을 쉽게 설치할 수 있게 도와주는 도구입니다. 설치한 모듈들은 node_modules란 폴더에 담기게 됩니다. 명령어 npm init 새 Node.js 프로젝트를 초기화합니다.

  • 2024년 8월 20일

    정의 Facebook, Google, Exponent, Tilde 등의 기업과 개인 기여자들에 의해 개발된 새로운 자바스크립트 패키지 관리자. 패키지 설치 과정을 병렬로 처리하여 NPM보다 빠른 설치 속도를 제공. 설치 sudo npm install -g yarn 명령어 yarn init 새 Yarn 프로젝트를 초기화합니다.

프로젝트

6건의 항목

  • 2025년 1월 29일

    Waggle 프로젝트에서 이미지 업로드가 필요한 상황으로는 회원 프로필 이미지가 있습니다. 때문에 AWS S3를 구성하고 처음으로 Rest API 환경에서 이미지를 요청받고 처리하는 과정을 구현할 수 있었습니다. 이미지 업로드 기능을 구현한 과정을 정리해봤습니다. 1) S3 버킷 생성 이미지가 들어갈 수 있는 공간을 생성하기 위해 S3 서비스에서 버킷을 생성했습니다.

  • 2024년 12월 31일

    백엔드는 서버 부하 최소화와 빈틈없는 로직도 중요하지만, 처리 후 얼마나 알아먹기 좋은 데이터를 전달할 수 있는가도 중요합니다. 때문에 하나의 포트폴리오가 될 이번 프로젝트에서 데이터를 최대한 이쁘게 Response하는 것 또한 저희 팀에서 중요한 과제였습니다. Response에 대한 고민 과정과 저희 팀 나름대로의 해결 방안에 대해 정리해보았습니다.

  • 2024년 12월 10일

    이번 프로젝트의 로그인은 가장 고민을 많이 해서 구현했습니다. OAuth2를 처음으로 사용하다 보니 코드를 작성할 때 마다 뭔가 엄청 비효율적인 것 같고 코드를 알아보기 힘들었습니다.그러다 보니 시중에 서비스하는 서비스들의 로그인 기능 수준으로 구현을 하기 위해 계속 갈아엎고 찾아보기를 반복하여 현재 우리 프로젝트에서는 OAuth2 로그인을 어떻게 구현했는지 정리해보았습니다.

  • 2024년 10월 02일

    이번 프로젝트를 진행하면서는 조금 간지나게 GitHub를 활용하고 싶었습니다.Issue도 더 현업자처럼 작성해 보고 싶었고, Pull Request를 요청하며 코드 리뷰도 하는 방향으로 진행하기로 결정했습니다. 이번 프로젝트를 진행하며 개발자끼리의 협업을 고민해 본 과정 기록입니다.

  • 2024년 9월 30일

    2024년 9월이 되고 첫날. 네이버 부스트캠프 챌린지 과정을 끝내고 이제 뭘 할까 고민하고 있었습니다.(네이버 부스트캠프 챌린지 과정 회고 보기) 그 때가 이 프로젝트의 시작이었습니다. 1) 만들게 된 계기 솔직히 제가 만들 생각은 없었습니다. 처음에는 이미 결성된 프로젝트 팀에 참가하기 위하여 어디든 껴달라고 인프런의 커뮤니티에 글을 작성했습니다.그 때 작성했던 글 연락이 올 것이라고 기대하진 않았었는데 한 분이 연락을 주셨습니다.

  • 2024년 8월 24일

    개발 기간 2024년 1월 25일 ~ 2024년 06월 30일 (약 5개월) 프로젝트 주제 자취생들의 자취 어려움을 해소하고자 자취생들끼리 팁을 주고 받는 커뮤니티의 장을 웹사이트를 통해 만들고자 하였습니다. 그리고 자취하면서 제일 어려운 오늘 뭘 해먹을지에 대해서 AI에게 도움을 받을 수 있도록 내 냉장고에 있는 식재료들을 넣어놓으면 이 재료들로 만들 수 있는 괜찮은 요리들과 이 요리의 레시피들을 제안받을 수 있는 기능도 추가하였습니다.

회고

5건의 항목

  • 2025년 7월 29일

    KDT 부트캠프를 수료하고, 프로젝트도 야무지게 했지만 계속 서류 탈락 또 서류 탈락…개발자 취준생의 쓴맛을 느끼며 통장 잔고를 걱정하던 중 한 문자를 받게 되는데! 돈이 궁하던 저는 고민하지 않고 바로 지원하게 되었습니다. 로켓단 인턴이란? 멋쟁이사자처럼 부트캠프를 수료한 수료생들끼리 1달간 하나의 프로젝트를 진행하는 인턴십입니다.프로젝트의 주제는 이미 정해져 있고, 그 중 가장 마음에 드는 주제를 1지망부터 3지망까지 작성하여 지원했습니다.

  • 2024년 11월 15일

    안녕하세요! 저 이번에 처음으로 우아한테크코스 7기에 지원하게 되어서 지난 한달동안 프리코스를 진행하게 되었습니다. 그래서 제가 한달간 프리코스를 진행하면서 느낀 점을 정리하여 회고로 작성해보고자 합니다. 프리코스란? 프리코스는 우아한테크코스 본 과정을 미리 경험해 보는 단계입니다.

  • 2024년 8월 11일

    안녕하세요! 저는 네이버 커넥트 재단에서 진행한 부스트캠프 9기의 챌린지를 어제 수료했습니다. 그래서 4주의 챌린지를 다 겪어본 경험을 토대로 제 한달의 회고, 그리고 부스트캠프 챌린지는 어땠는지 후기를 적어보고자 합니다. 부스트캠프 진행 중에 올렸던 회고도 보시고 싶은 분은 아래 링크도 구경해주세요! 1주차 회고 2주차&3주차 회고 막연한 시작 제가 부스트캠프를 지원하게 되었던 이유중 가장 큰 이유는 사실 혼자가 너무 힘들어서였습니다.

  • 2024년 8월 03일

    안녕하세요. 부스트캠프 9기 챌린지를 진행중인 김정욱입니다. 저번주엔 결국 회고를 못쓰게 되어서 이번에 본격적으로 부스트캠프를 진행한 2주차&3주차의 회고를 쓰게 되었습니다. 바쁘고 정신없게 달려왔기에 뜻깊었던 10일을 되짚어보겠습니다. 1주차 회고 보기 딜레마에 빠지다 아마 개발을 해보신 분이라면, 그 중 제한된 시간에 개발을 해보신 분들이라면 더욱 더 한번쯤은 생각해보신 부분일 것이라 생각됩니다.

  • 2024년 7월 20일

    안녕하세요!! 부스트캠프 9기를 웹 풀스택 분야로 참여하게 되면서 현재 챌린지 과정을 하고 있는 김정욱이라고 합니다. 이 회고를 보고계시는 분이 혹시 현재 같이 참여하고 계신 캠퍼, 혹은 수료하신 분들이라면 아시겠지만 저희 첫 주차… 왜 과정 이름이 챌린지인 것인지 정말 뼈저리게 느껴지는 한 주가 되었을 거라고 생각합니다.