분류 전체보기

·💻 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..
·💻 CS
시작하기에 앞서 JVM 메모리 구조 이야기가 나오는데간단하게 설명하자면 JVM은 운영체제 위에서 실행될 때 각각의 운영체제로부터 메모리를 할당 받고 그 메모리를 용도에 따라 여러 영역으로 나누어 관리하기에 해당 이야기를 하는 것으로 생각하면됨  결론은 int는 primitive type(원시 타입) 이고 integer는 wrapper class(래퍼 클래스) 임 int 단순히 숫자 값을 나타내는 Java의 8개 원시 타입 중 하나임=> 메서드나 속성을 가질 수 없는 단순한 데이터 타입 Java의 8개 원시 타입boolean : ture 또는 false (8bit)char : 유니코드 문자 데이터 (16bit)byte : -128 ~ 127 (8bit)short : -32768 ~ 32767 (16bit)..
·💻 CS
결론부터 말하면 Java는 하이브리드 언어로, 컴파일과 인터프리터의 장점을 결합한 방식으로 동작함  Java의 컴파일러, 인터프리터 동작 방식   1. 컴파일 단계 : Java 소스 코드는 자바 컴파일러(javac)를 통해 바이트 코드(.class 파일)로 변환됨=> 이 바이트 코드는 플랫폼 독립적이며 Java Virtual Machine(JVM)에서 실행될 수 있는 중간 언어임 2. 인터프리터 단계 : JVM은 바이트 코드를 자바 인터프리터를 통해 기계어로 변환하고 실행함=> 바이트 코드를 라인별로 해석하고 실행하는 방식임 3. JIT(Just-In-Time) 컴파일 : JVM은 자바 인터프리터 방식 외에도 JIT 컴파일러를 사용하여 바이트 코드를 기계어로 컴파일할 수 있음=> 런타임시(실행 중)에 성..
·💻 CS
이 글은 국민대학교 강승식 교수님의 '프로그래밍언어론' 수업을 토대로 개인적으로 학습한 내용입니다.  기계어란? 기계어는 컴퓨터가 직접 이해하고 실행할 수 있는 가장 기초적인 프로그래밍 언어로, 0과 1로 구성된 이진 코드로 작성됨=> 이 언어는 특정 컴퓨터 아키텍처에 따라 다르게 결정되며, 하드웨어와 직접 상호 작용함 기계어는 하드웨어에 대한 명령을 직접 전달할 수 있기에 번역 과정이 없고 이에 따라 실행 속도가 매우 빠름=> 하지만, 사람이 이해하기 어렵고, 작성 및 수정이 매우 복잡함  기계어의 주요 특징을 살펴보면 이진 코드 : 0과 1로만 구성됨 (2진수)=> 명령어는 특정 수의 비트로 구성됨하드웨어 종속성 : 특정 컴퓨터 아키텍처에 맞춰져 있음 => 각 CPU 아키텍처에 맞춰져 있음 (x86,..
로컬에서 Spring Boot 빌드하고 docker image 만들어서 docker hub에 올리고..EC2 들어가서 docker hub에 있는 이미지 pull 받아서 run 시키기... 개발을 하면 할수록 CI/CD의 중요성이 깊게 느껴지는 것 같다... 배포에 있어서 나와 같이 귀찮음 혹은 어려움을 느끼고 있는 다른 분들을 위해 기록을 남기려고한다  시작하기에 앞서 슬픈 사연 (Jenkins 도입기..) 일단 시작하기에 앞서 Jenkins을 도입하기까지의 슬픈 전설이 있다.. https://hanjungyo.tistory.com/126 코드가 변경될 때마다 빌드, 테스트, 배포 등의 작업을 자동으로 실행할 수 있음 Github" data-og-host="hanjungyo.tistory.com" dat..
JJunGyo
'분류 전체보기' 카테고리의 글 목록