BFF(BackEnd For FrontEnd)를 적용하는 이유에 대해서
·
🍞 BackEnd
요즘 서비스는 대부분 MSA(Micro Service Architecture) 기반으로 개발한다.서비스마다 API가 독립적으로 존재하다 보니, 프론트엔드는 여러 API를 호출해 원하는 데이터를 조합해야 한다. 이 과정에서 문제가 발생하는데 예를 들어,Web, Android, iOS 등 플랫폼별로 서로 다른 데이터 요구사항이 발생한다.원하는 데이터 형태를 얻기 위해 여러 API 응답을 조작하고 합치고 가공해야 하는 일이 생긴다.결과적으로 프론트엔드 단에서 비즈니스 로직이 과도하게 쌓이고, 렌더링 성능까지 저하되는 문제가 나타난다.이때 프론트엔드는 UI 스레드가 렌더링과 로직 수행을 같이 담당하게 되면, 화면 반응 속도는 느려지고 코드베이스는 복잡해져 유지보수조차 힘들어진다. 이 문제를 해결하기 위해 BFF..
[네트워크] TCP/IP 4계층 모델에 대해서
·
🍞 Computer Science/네트워크
TCP/IP 계층은 네 개의 계층을 가지고 있으며, OSI 7계층과 많이 비교한다. 1. TCP/IP 4계층 구조앞의 그림처럼 TCP/IP 계층과 달리 OSI 계층은 애플리케이션 계층을 세 개로 쪼개고 링크 계층을 데이터 링크 계층, 물리 계층으로 나눠서 표현하는 것이 다르고, 인터넷계층을 네트워크 계층으로 부른다는 점이 다르다.이 계층들은 특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계되었다. 예를 들어 전송 계층에서 TCP를 UDP로 변경했다고 해서 인터넷 웹 브라우저를 다시 설치해야 하는 것은 아니듯 유연하게 설계된 것이다. 애플리케이션 계층애플리케이션 계층은 FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용되는 프로토콜 계층이며 웹 서비스, 이메일 등 서비스를..
[CS] 프로그래밍 패러다임에 대해서
·
🍞 Computer Science
프로그래밍 패러다임은 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론이다. 예를 들어 객체 지향 프로그래밍은 프로그래머들이 프로그램을 상호 작용하는 객체들의 집합으로 볼 수 있게 하는 반면에, 함수형 프로그래밍은 상태 값을 지니지 않는 함수 값들의 연속으로 생각할 수 있게 해준다.프로그래밍 패러다임은 크게 선언형, 명령형으로 나누며, 선언형은 함수형이라는 하위 집합을 갖는다. 또한, 명령형은 다시 객체지향, 절차지향으로 나뉜다. 1. 선언형과 함수형 프로그래밍선언형 프로그래밍이란 무엇을 풀어내는가에 집중하는 패러다임이며, 프로그램은 함수로 이루어진 것이다라는 명제가 담겨있는 패러다임이기도 하다. 함수형 프로그래밍은 선언형 패러다임의 일종이다. 함수형 프로그래밍은 작은 순수함수들을 ..
[CS] 디자인 패턴에 대해서
·
🍞 Computer Science
디자인 패턴이란 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 규약 형태로 만들어 놓은 것을 의미한다. 1. 싱글톤 패턴싱글톤 패턴은 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴이다. 하나의 클래스를 기반으로 여러 개의 개별적인 인스턴스를 만들 수 있지만, 그렇게 하지 않고 하나의 클래스를 기반으로 단 하나의 인스턴스를 만들어 이를 기반으로 로직을 만드는 데 쓰이며, 보통 데이터베이스 연결 모듈에 많이 사용된다. 하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하기 때문에 인스턴스를 생성할 때 드는 비용이 줄어든다는 장점이 있다. 하지만 의존성이 높아진다는 단점이 있다. 장점 => 인스턴스 생성 비용 줄어듦단점 => ..
Webpack을 쓰는 이유에 대해서
·
🍞 FrontEnd
Webpack을 쓰는 이유는 무엇일까?웹사이트를 구성할 때 .js .css .images 파일 등 수많은 파일들이 모여 웹사이트를 구성하게 된다. 따라서 웹사이트에 접속했을 때 굉장히 많은 파일이 다운로드될 수 있는데, 이것에 비례하여 서버의 자원을 소모하고 웹사이트가 느리게 로딩이 된다. 브라우저는 이런 파일들을 개별로 로드할 때마다 HTTP요청이 발생하기 때문에, 성능 저하로 이어질 수 있다. 그래서 실제 서비스 배포 시에는 자원을 효율적을 묶어 최소한의 요청으로 빠르게 로드할 수 있도록 번들링이 필요하다. 또한, 많은 자바스크립트 패키지등을 사용하다보면 각각의 서로 다른 패키지들이 서로 같은 이름이나 함수를 사용하게 되면서 애플리케이션이 깨지게 되는데, 이러한 현상을 해결하기 위해 나온 개념이 묶는..
[백준] 10844 쉬운 계단 수 java
·
🍞 Algorithm/Baekjoon
https://www.acmicpc.net/problem/10844 풀이 과정dp 파트가 약해서 정리해보고자 한다.문제를 요약해 보자면 ' N자리 수가 있을 때, 인접한 모든 자릿수가 1씩 차이씩 나는 수가 몇 개인지 구하는 것'이다. 여기서 유의해야 할 점은 다음 두 가지를 조심해야 한다. 1) N번째 자릿수의 자릿값이 0인 경우: 다음 자릿수의 자릿값은 1밖에 올 수가 없다.2) N번째 자릿수의 자릿값이 9인 경우: 다음 자릿수의 자릿값은 8밖에 올 수가 없다. 즉 10 다음에 붙을 수 있는 값은 1밖에 없으므로 101이 되는 것이고,만약 19가 온다면 8밖에 올 수 없으므로 198이 되는 것이다.그 외의 값 (2~8)은 각 값보다 -1 또는 +1 인 값을 가질 수 있다. 그럼 자릿값은 0~9를 가질..
[백준] 17471 게리맨더링 java
·
🍞 Algorithm/Baekjoon
https://www.acmicpc.net/problem/17471 풀이과정먼저 문제에 대해서 간단히 설명해보자면 다음과 같이 그래프가 주어졌을 때2가지 구역으로 나눠서, 두 구역의 인구수 차이의 최솟값을 구하는 문제이다. 여기서 유니온 파인드 알고리즘을 생각할 수 있었다. 문제의 조건으로는각 구역은 1개 이상의 지역으로 이루어져야된다고 한다. (1) (2, 3, 4, 5, 6)(2) (1, 3, 4, 5, 6)....(1, 2) (3, 4, 5, 6)(1, 3) (2, 4, 5, 6)(1, 4) (2, 3, 5, 6)...(1, 2, 3) (4, 5, 6)(1, 2, 4) (3, 5, 6) 이런 식으로 2가지 구역이 나눠질 수 있어서지역의 개수 N개에서최소 지역의 개수인 1부터 최대 N / 2개까지 뽑..
[백준] 17406 배열 돌리기4 java
·
🍞 Algorithm
https://www.acmicpc.net/problem/17406 풀이과정크기가 N X M 배열이 있을 때 각 행에 있는 모든 수의 합이 가장 최소일 때를 구하는 문제이다. 회전 연산이 세 정수 (r, c, s)로 주어지고가장 왼쪽 윗 칸 (r - s. c - s)가장 오른쪽 아래 칸 (r + s, c + s)정사각형을 시계 방향으로 한 칸씩 돌리면 된다. 예를 들어, 배열 A의 크기가 6×6이고, 회전 연산이 (3, 4, 2)인 경우에는 아래 그림과 같이 회전하게 된다. r = 3 c = 4 s = 2가장 왼쪽 윗 칸 (3 - 2, 4 - 2) = (1, 2)가장 오른쪽 아래 칸 (3 + 2, 4 + 2) = (5, 6)A[1][1] A[1][2] → A[1][3] → A[1][4] → A[1][..
SSAFY(삼성 청년 SW 아카데미) 앰배서더 초청행사 후기
·
🍞 대외활동 & 부트캠프/삼성 청년 SW 아카데미
안녕하세요 SSAFY(삼성 청년 SW 아카데미) 앰배서더 박예진 입니다.싸피에 대해 관심을 가지고 있던 중 싸피 공식 홈페이지를 통해 앰버서더 모집안내를 보고 지원하게 되었는데 잊고 있다 문자를 받았는데 합격을 받았습니다.싸피(SSAFY) 앰버서더란?SSAFY 엠배서더에 관해 간단히 알아보자면 SSAFY에 대한 관심을 가지고 있고, SSAFY에 대한 다양한 소식들을 다른 분들에게 전달하는 홍보 활동을 진행하는 홍보대사입니다.초청회에서 홍보활동 가이드 및 사례에 대해 친전하게 잘 알려주시고 분위기 또한 처음보는 사람들이었지만 어색함 없이 초청회가 진행되었습니다.혹시나 다음에 지원하실분들은 홍보활동에 대해 걱정하지마시고 일단 지원해보세요!!!초청회 당일초청회 시작 11시 전에 역삼 멀티캠퍼스로 갔더니 입구에..
[Algorithm] 2차원 누적합
·
🍞 Algorithm
2차원 누적합으로 2차원 배열을 풀어보자.2차원 배열의 누적합도 1차원 배열의 누적합과 크게 다르지 않다. 1차원 배열에서 sum[N]은 1번째부터 N번째까지의 합을 나타냈다. 그럼 이차원 배열 sum[N][M]을 (0,0)부터 (N,M)까지의 합이라고 해보자.빨간 부분 (3, 3)부터 (5, 5)의 합을 어떻게 구할 수 있을까? prefixSum[5][5]는 (1,1)부터 (5,5)까지의 합을 나타내므로 해당 부분에서녹색 부분(prefixSum[2][5])을 빼주고, 노란 부분(prefixSum[5][2])을 빼주고, 두 번 빠진 녹색과 노란색이 만나는 부분(prefixSum[2][2])를 한번 더 더해주면 될 것이다.  그럼 (0,0)부터 (N,M)까지의 모든 위치의 값만 유효한 시간 내에 구할 수 ..