반응형

개발자 11

FP 그리고 OOP 에 대한 고찰

함수형 프로그래밍(Functional Programming) 함수형 프로그래밍이란, 프로그래밍의 여러가지 패러다임중 하나(OOP 같은거처럼) 함수의 조합으로 작업을 수행하며, 중요한것은 이 작업이 이루어지는 동안 작업에 필요한 데이터와 상태는 변하지 않음 객체지향 프로그래밍(Object-Oriented Programming) 객체 지향 프로그래밍 (Object-Oriented Programming, OOP)은 프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고, 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 위 까지가 대충 검색하면 나오는 간단한 정의이고, 여기서 각각의 패러다임에 대한 세부적인 내용을 다루는것은 의미가 없기에 생략한다. 내가 이것에 대해 고찰을..

생각 2023.02.19

Spring Cloud Config Server 환경 변수를 분리해보자 (1)

실제 서비스에 적용할 아키텍처를 고민하던 중 Spring 에서 지원해주는 기술을 알게 되었고 그것을 구현하는 내용입니다. Spring Cloud Config 를 활용하면 환경변수들을 프로젝트 레포지토리 상에서 완전히 분리할 수 있습니다. 환경 변수 주입은 MSA 아키텍처와 관련해서 설계할 때 한번쯤은 생각 해보게되는 문제입니다. 여러 서비스가 어떻게 하면 환경 변수를 잘 주입 받을 수 있을까? 처음 제가 생각한 조건은 이러합니다. 환경 변수는 각 서비스의 레포지토리에 존재해서는 안된다. 환경 변수가 수정 되었을 때 수정된 내용을 잘 참조 할 수 있어야 한다. 여러 서버의 환경변수를 한 곳에서 체계적으로 관리할 수 있어야 한다. 민감한 환경변수는 통신을 할 때 암호화될 수 있어야 한다. 1. build.g..

Java 2022.12.01

Spring boot + Minio + Docker 예제를 만들어보자(1)

본 게시물은 2개로 나누어져 있습니다. (1) 에서는 전반적인 환경을 설정하는 파일을 설명합니다. Minio를 이용한 File 저장을 익히는 목적이 있으며, Minio의 동작원리와 사용법을 익히는데 중점을 두었기 때문에 서비스 운영에 목적을 두고 계시다면 수정이 필요할 수 있습니다. 우선, 제가 생각한 전체적인 아키텍처를 그림으로 보자면 이렇습니다. 가장 서버에게 부하를 주는것은 빈번한 다운로드, 클라이언트 입장에서도 가장 많이 이용하는 서비스가 다운로드 일 것입니다. 그래서 다운로드의 순서가 조금 특이한데 세부 설명을 좀 드리자면 1. 다운로드를 하고싶은 file을 요청합니다.(파일 경로를 특정할 수 있는 request) 2. 서버는 request에 있는 특정 경로를 추정하고 minio에게 파일 접근권..

Java 2022.11.21

WAS란 그리고 그 종류들

WAS 가 무엇인가요 ❓ DB 조회나 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 Application Server Web contatiner 혹은 Servlet Container라고도 불린다. Container란 jsp, Servlet을 실행시킬 수 있는 소프트웨어를 말한다. 💡WAS 의 종류 Tomcat 주요기능 JSP/Servlet Container중 하나로 사용자에게 JSP요청을 받으면 서블릿으로 바꾸어 실행 SP 페이지를 웹서버에 요청하면 이 페이지를 해석하고 실행 Web Server에서 요청한 동적 페이지를 읽어 프로그램을 실행 그 결과를 다시 HTML로 재구성하여 Web Server에게 전달 특징 Servlet Container를 지원함 플랫폼에 제약이 없음(Windows, L..

Java 2022.06.20

순수함수란

순수함수란 동일한 인자가 들어갈 경우 항상 같은 값이 나와야 한다. 부수적인 효과가 일어나면 안 된다. return 값으로만 소통한다. 순수함수는 평가 시점이 중요하지 않다.만약 순수함수가 아니라면 동일한 인자를 넣어도 다른 값이 나오는 경우 어떠한 시점에서 함수를 평가할지가 굉장히 중요한데 순수함수는 동일한 인자를 넣으면 항상 같은 값이 나오기 때문에 굳이 평가시점을 따질 필요가 없다. function add(a, b) { return a + b; } console.log(add(10, 5)); console.log(add(10, 5)); console.log(add(10, 5)); 생각 어디든 붙일 수 있는 레고형태로 만든다고 보여진다. 전역 변수나 다른 인자 값을 가지고 오지 않는 한 메서드 안에서..

Programing 2022.05.16

Process와 Thread

❓프로세스(Process) 란 사전적 의미 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체) 운영체제로부터 시스템 자원을 할당받는 작업의 단위 즉, 동적인 개념으로는 실행된 프로그램을 의미한다. 🔎 특징 기본적으로 프로세스당 최소 1개의 스레드(메인스레드)를 가지고 있다. 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다. 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC, inter-process communication)을 사용해야 한다. Ex) 파이프, 파일, 소켓 등을 이용한 통신 방법 이용 🪶 할당 받는 자원 : CPU 시간, 운영되기 위해 필..

OS 2022.03.22

flutter 기본 프로젝트 구조

플러터 프로젝트 구조 myapp android // 컴파일된 안드로이드 앱 ios // iOS 앱 lib // 99%의 시간을 할애할 장소 main.dart // 프로젝트의 진입점. main() 반드시 포함 test // 테스트 widget_test.dart .gitignore pubspec.yaml // 모든 다트 프로젝트에 필요하며 의존성과 메타데이터를 관리 pubspec.lock // 편집하면 안되는 잠금 파일을 생성한다. 모든것은 위젯 * 자주 사용되는 위젯 구조 : Button, Toast, MenuDrawer애니메이션 : FadeInPhoto, Transform 위치와 정렬 : Center, Padding 스타일 : TextStyle, Color, Padding 레이아웃 : Row, Colum..

Flutter 2022.03.22

Java Thread 기초

스레드 관리 정보 데몬 스레드 JVM이 스스로 필요에 의해 사용하는 스레드이다. 대표적인 예로 GC가 있다. 내가 작성한 스레드도 데몬 스레드로 표시하여 JVM이 인식하게 할 수도 있다. 일반 스레드가 모두 종료되면 데몬 스레드가 살아 있더라도 프로그램은 종료된다. 스레드 상태 NEW 스레드가 생성되었지만 아직 실행할 준비가 되지 않은 상태이다. start() 메소드가 호출되면 RUNNABLE 상태가 된다. RUNNABLE 스레드가 현재 실행되고 있거나 실행 준비되어 스케줄링을 기다리는 상태이다. WAITING 스레드가 어떤 Object 타입의 객체 a에 대해 a.wait()을 호출하고 무한 대기하면서 다른 스레드가 a.notify(), a.notifyAll()을 불러주기를 기다리고 있는 상태이다. 스레..

Java 2022.02.04
반응형