전체 글

네, 저 밑바닥에서 왔습니다
·💻 CS
Java Collections Framework란? Java Collections Framework (JCF)는 Java에서 데이터를 저장, 검색, 정렬, 삭제하는 데 사용되는 표준화된 자료구조(데이터 구조)와 알고리즘 집합임 인터페이스 기반 설계 JCF는 공통된 동작을 정의한 인터페이스(Collection, Map)을 중심으로 설계되었는데 각 자료구조는 이를 구현한 클래스들 (ArrayList, Hashset, HashMap 등) 으로 구성됨 List list = new ArrayList();list = new LinkedList(); // 구현체 변경 가능 => 다형성(polymorphism)이 지원되므로 구현체 교체가 쉬움 2개의 주요 루트 인터페이스 위 그림에서처럼 크게 Collection ..
·💻 CS
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가..
·💻 CS
이 글은 국민대학교 강승식 교수님의 '프로그래밍언어론' 수업을 토대로개인적으로 학습한 내용입니다. 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..
·💻 CS
이 글은 국민대학교 강승식 교수님의 '프로그래밍언어론' 수업을 토대로개인적으로 학습한 내용입니다. 3.1 설계 기준의 역사적 변천 주요 언어의 성공 요인을 보면 Fortran – 컴퓨터 제조회사 후원=> 실행의 효율성Cobol – 미 국방성 지원 => 영어와 유사한 문법 구조로 프로그램 판독성이 용이해서 비즈니스 영역이 넓음Lisp – 인공지능 분야에서 사용Pascal – 교육용, 마이크로컴퓨터 표준언어 역할=> 간단한 명령형 언어, 하향식 설계 증진PL/I – IBM의 적극 후원C – UNIX 운영체제의 성공Ada – 미 국방성 지원Algol 60 => 알고리즘 작성이 용이하도록 설계를 하였는데 블록 구조를 제공하기에 디버깅이 용이하고 recursion이 가능하며 개발 속도가 빨라짐 언어 자체의 성공..
·💻 CS
이 글은 국민대학교 강승식 교수님의 '프로그래밍언어론' 수업을 토대로개인적으로 학습한 내용입니다.   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를 눌러야 반영됨!  또한, 현재 테스트에서는..
·💻 CS
이 글은 국민대학교 강승식 교수님의 '프로그래밍언어론' 수업을 토대로개인적으로 학습한 내용입니다.  1.1 프로그래밍 언어란 무엇인가? 인간이 컴퓨터로 수행하고자 하는 바를 컴퓨터에게 전달하기 위한 표현법의 발전 과정 1940년 이전 Hard-wired 방법으로 컴퓨터 내부 스위치 세팅 -> 컴퓨터의 내부 회로를 물리적으로 변경하여 프로그램을 수행해야 하므로 매우 제한적임1940년대 폰노이만 컴퓨터 (stored programming) -> 일련의 명령코드로 작성, main memory에 저장 어셈블리어 탄생 -> 기계 종속성(특정 컴퓨터 아키텍처에 맞게 작성), 저급수준의 추상화, 읽고 쓰기 어려움(기계어에 비해서는 훨씬 더 읽고 쓰기 쉬움) 프로그래밍 언어의 정의 프로그래밍 언어는 기계가 읽을 수 있..
HTTPS를 설정하게 된 이유 세션 로그인을 구현하기위해 세션 쿠키를 사용하려면 SameSite = None과 Secure = true 설정이 필요함 하지만 계속 로그인이 안되길래 확인해보니... 위와 같은 설정을 하려면 HTTPS를 적용해야 한다는 것을 알게되었고 추후 프론트에서 녹음한 음성을 넘겨주는 로직을 구현할 때도 HTTPS가 필요하다는 것을 알게되어 HTTPS를 적용하기로 하였음 기왕이면 과금 때문에 무료로... 사용할 것들 NginX NginX는 오픈 소스 웹 서버 소프트웨어로 정적 콘텐츠 제공, 리버스 프록시, 로드 밸런서, HTTP 캐시 서버 등 다양한 기능을 수행할 수 있음 => 이벤트 기반 비동기 아키텍처를 사용하여 최소한의 리소스로 수천 개의 동시 연결을 처리할 수 있음 여기서는 H..
1. Github Secrets 설정  Github Actions를 적용할 Repo의 Setting에서 Secrets and variables에 들어가주면New repository secret로 환경 변수를 설정할 수 있음 DOCKERHUB_USERNAME=> Docker Hub 사용자 이름DOCKERHUB_PASSWORD=> Docker Hub 비밀번호EC2_HOST=> EC2 퍼블릭 IPEC2_USER=> EC2에 SSH로 접속할 때 사용할 사용자 이름임(우분투 EC2를 사용중이기에 ubuntu로 지정하였음)EC2_SSH_KEYhttps://hanjungyo.tistory.com/127 Jenkins을 이용한 Spring Boot 배포 자동화로컬에서 Spring Boot 빌드하고 docker imag..
JJunGyo
개발 바닥