1. Java 입출력이란? Java의 입출력은 크게 두 가지 관점으로 나뉨 입력(Input) : 외부(키보드, 파일 등) -> 프로그램 내부출력(Output) : 프로그램 내부 -> 외부 (콘솔, 파일 등) 구분바이트 스트림문자 스트림대표 클래스InputStream, OutputStreamReader, Writer처리 단위1 byte (이미지, 바이너리 등)2 byte 문자 (텍스트 위주)예시BufferedInputStream 등BufferedReader 등 위와 같이 입출력 방식은 데이터 단위에 따라 두 가지로 분류됨 2. 표준 입출력 (System.in, System.out) 표준 입력 System.in // InputStream (바이트 스트림) 기본적으로 키보드 입력을 의미InputStrea..
AWS MFA에서 사용중인 패스키(디바이스)를 변경할 일이 생겨서 AWS MFA 변경 및 추가하는 방법을 공유합니다! 0. AWS MFA란? MFA (Multi-Factor Authentication)는 다단계 인증 방식으로, 사용자가 AWS에 로그인할 때 비밀번호 외에 추가적인 인증 수단을 요구하는 보안 기능임 위와 같이 2025년 6월 1일 기준 AWS에서는 총 3가지의 MFA 옵션이 존재함 AWS에서는 MFA는 보안권장사항인데 1. 계정 탈취 리스크 감소만약 누군가 비밀번호를 탈취하더라도, MFA 코드 없이는 접근 불가능하기에 계정을 탈튀당할 리스크가 줄어들고특히, 루트 계정은 모든 AWS 리소스에 대한 무제한 권한이 있어 보안 위협이 매우 크기에 필수적임2. AWS 보안 권장 사항에 포함됨..
Java Collections Framework란? Java Collections Framework (JCF)는 Java에서 데이터를 저장, 검색, 정렬, 삭제하는 데 사용되는 표준화된 자료구조(데이터 구조)와 알고리즘 집합임 인터페이스 기반 설계 JCF는 공통된 동작을 정의한 인터페이스(Collection, Map)을 중심으로 설계되었는데 각 자료구조는 이를 구현한 클래스들 (ArrayList, Hashset, HashMap 등) 으로 구성됨 List list = new ArrayList();list = new LinkedList(); // 구현체 변경 가능 => 다형성(polymorphism)이 지원되므로 구현체 교체가 쉬움 2개의 주요 루트 인터페이스 위 그림에서처럼 크게 Collection ..
Kotlin의 탄생 배경 및 특징Kotlin은 JetBrains에서 개발한 정적 타입의 프로그래밍 언어로, 2011년에 첫 공개되었고 2016년 1.0 버전이 정식 출시되었습니다. 정적 타입(Static Typing)이란?프로그래밍 언어에서 타입이란 변수나 함수의 값이 어떤 종류인지(ex. Int, String, Boolean 등)를 의미하는데정적 타입 언어는 컴파일 시점에 변수나 표현식의 타입이 정해지고 검사되는 언어이며 동적 타입 언어는 런타임 시점에 타입이 결정되는 언어입니다. JetBrains는 IntelliJ IDEA와 같은 개발 도구를 개발하는 회사로, 내부적으로 대부분의 코드를 Java로 작성해왔습니다. 하지만 Java는 수십 년의 역사를 가진 만큼 다음과 같은 여러 문제점을 안고 있었습니다..
안녕하세요! 저는 BOAZ 23기 엔지니어링 부문 공동 대표를 맡고 있는 한준교라고 합니다. 👋 어쩌다 보니 23기 합격 후기를 25기 모집을 앞두고 작성을 하게 되었는데 앞으로 지원하게 될 25기, 26기, ... 분들을 위해BOAZ가 어떤 동아리인지, 어떻게 합격하게 되었는지 등에 대한 기록을 남겨두려고합니다. BOAZ 란? 우선 홍보아닌 홍보부터 스윽 해보려고합니다🙇♂️ https://www.bigdataboaz.com/ BOAZ국내 최초 빅데이터 동아리 BOAZwww.bigdataboaz.com BOAZ는 Big Data is Our A to Z의 약자로, 무려~~ 국내 최초 빅데이터 연합동아리 입니다!!! 데이터 분석, 데이터 시각화, 데이터 엔지니어링 3가지의 트랙으로 나눠지고 부문 ..
Spring Security를 사용할 때 400 에러가 발생해야할 상황에 403에러가 발생하는 문제가 발생했습니다.. 왜 모든 에러가 403 Forbidden으로 응답될까? 현재 상황은 Spring Boot 애플리케이션에 Spring Security를 적용하고 API를 테스트중 분명 로직상으로는 400 Bad Request (예: 요청 DTO 유효성 검사 실패) 또는 409 Conflict (예: 중복된 리소스 생성 시도) 등이 발생해야 하는데, 뜬금없이 403 Forbidden 응답만 돌아오는 상황입니다. 또 그렇다고 에러가 아닌 정상 요청을 보내면 403이 아니라 200이 돌아오고 있습니다. Spring Security는 어떻게 에러를 처리하는가? Spring Boot와 Spring Security가..
이 글은 국민대학교 강승식 교수님의 '프로그래밍언어론' 수업을 토대로개인적으로 학습한 내용입니다. 4.1 언어 구문 고급언어를 정의할 때는 두 가지 측면에서 설명이 필요함구문 : 문법적인 형식 (Syntax)의미 : 동작의 의미 (Semantics)사람이 읽는 자연어로 설명하는 자연어 정의와 수학적 기호나 형식 언어(BNF 등) 으로 정확하게 정의하는 형식 정의가 있음=> 구문 형식 정의의 종류에는 BNF, EBNF, 구문 도표 등이 있음 고급 언어 프로그래머는 컴퓨터를 가상의 고급 언어 컴퓨터로 간주함=> 즉, 개발자마다 컴퓨터 하드웨어를 보는 관점이 다름 4.1.1 프로그래밍 언어의 어휘구조 프로그래밍 언어의 기본 문자 집합은 알파벳 문자 26개(A - Z) + 아라비아 숫자 10개 (0 - 9) ..
NginX를 이용해 HTTPS 설정을 한 Spring Boot 배포 환경에서 Swagger 사용시 요청이 제대로 가지 않는 에러가 발생함 Security 꺼져 있음EC2에 컨테이너로 spring boot가 돌아가는중임NginX에서 http, https 모두 요청 가능하게 설정해둠 Failed to fetch 우선 별다른 설정 추가 없이 기본 설정으로 Swagger를 사용중인데 Server를 살펴보면 http://172.17.0.2:8080 으로 되어있는걸 확인할 수 있음 이는 Spring boot 컨테이너의 Docker 내부 IP인데 Spring Boot에서 server.address를 별도로 작성하지 않으면, Swagger는 기본적으로 Spring Boot 어플리케이션이 바인딩된 주소를 Server..
이 글은 국민대학교 강승식 교수님의 '프로그래밍언어론' 수업을 토대로개인적으로 학습한 내용입니다. 3.1 설계 기준의 역사적 변천 주요 언어의 성공 요인을 보면 Fortran – 컴퓨터 제조회사 후원=> 실행의 효율성Cobol – 미 국방성 지원 => 영어와 유사한 문법 구조로 프로그램 판독성이 용이해서 비즈니스 영역이 넓음Lisp – 인공지능 분야에서 사용Pascal – 교육용, 마이크로컴퓨터 표준언어 역할=> 간단한 명령형 언어, 하향식 설계 증진PL/I – IBM의 적극 후원C – UNIX 운영체제의 성공Ada – 미 국방성 지원Algol 60 => 알고리즘 작성이 용이하도록 설계를 하였는데 블록 구조를 제공하기에 디버깅이 용이하고 recursion이 가능하며 개발 속도가 빨라짐 언어 자체의 성공..
이 글은 국민대학교 강승식 교수님의 '프로그래밍언어론' 수업을 토대로개인적으로 학습한 내용입니다. 2.1 디지털 컴퓨터 이전의 언어 최초의 알고리즘찰흙판, BC 1500 - 3000 바빌론 근처 메소포타미아60진법 사용(현재 시, 분, 초 개념에 사용), 부동 소수점, 가감승제 가능대수학 방정식 해결 음수, 0 개념 없음 (if x 알고리즘 반복 작성, 우수한 표기법이었음EuclidB. C. 300년, 최대공약수 알고리즘 기술=> 0 개념 없음, 수 1 이 제수(나눗셈에서 어떠한 수를 나누는 수)로 인식되지 않았음특수한 경우에 반복시킴Charles Babbage (1792 - 1871)Difference Engine계산 처리를 위한 기계유한 차(finite difference) 의 원리를 기본으로 함..
1. AWS Lambda 생성 Lambda 콘솔에서 새 함수 생성을 해줘야함 백엔드 서버와 동일한 Java17 런타임은 AWS 콘솔에서 직접 코드 편집이 불가능하고 JAR 파일을 업로드 해야함또한, Lambda에서 요청을 보낼 CloudRun 환경이 Python flask server 이므로 Python 런타임을 선택해줌(나머지는 기본 설정 그대로이고 필요성에 맞게 알아서 선택하면됨) 생성한 함수를 클릭하고 콘솔에서 코드를 누르면 이렇게 lambda_handler 함수 코드를 살펴볼 수 있음 우선은 테스트용도이기에 별다른 로직은 작성하지 않고 statusCode를 202로 바꿔 잘 동작하는지 확인해보기로함 => 코드를 수정하였으면 왼쪽의 Deploy를 눌러야 반영됨! 또한, 현재 테스트에서는..
이 글은 국민대학교 강승식 교수님의 '프로그래밍언어론' 수업을 토대로개인적으로 학습한 내용입니다. 1.1 프로그래밍 언어란 무엇인가? 인간이 컴퓨터로 수행하고자 하는 바를 컴퓨터에게 전달하기 위한 표현법의 발전 과정 1940년 이전 Hard-wired 방법으로 컴퓨터 내부 스위치 세팅 -> 컴퓨터의 내부 회로를 물리적으로 변경하여 프로그램을 수행해야 하므로 매우 제한적임1940년대 폰노이만 컴퓨터 (stored programming) -> 일련의 명령코드로 작성, main memory에 저장 어셈블리어 탄생 -> 기계 종속성(특정 컴퓨터 아키텍처에 맞게 작성), 저급수준의 추상화, 읽고 쓰기 어려움(기계어에 비해서는 훨씬 더 읽고 쓰기 쉬움) 프로그래밍 언어의 정의 프로그래밍 언어는 기계가 읽을 수 있..