본문 바로가기

전체 글 237

스프링 서큐리티(Spring Security) 구조 이해하기 스프링 서큐리티(Spring Security) 구조 이해하기 스프링 서큐리티 (Spring Security)? 그거 어떻게 하는 건데?Spring Security는 말 그대로 Spring 기반 애플리케이션에 보안을 제공하는 프레임워크입니다. 제공하는 기능은 아래와 같습니다. 인증 / 인가 (아래서 설명)일반적인 보안 위협 방어 (CSRF, XSS, SQL Injection)세션(Session) 관리다른 Spring의 프로젝트들과 연동 보안에 관한 기본적인 용어를 알아보자리소스Resource보호하고자 하는 대상접근 주체Principal접근하는 사람 (일반적으로 아이디)자격 증명Credential접근하는 사람이 본인이라는 걸 증명할 수 있는 정보 (일반적으로 비밀번호)역할RolesPrincipal이 가지고 있는 권한인증Authentication정말 그 사람이 맞는지 .. 2023. 4. 11.
여러가지 프로그래밍 패러다임 알아보기 (명령형, 함수형, 논리형 등) 여러가지 프로그래밍 패러다임 알아보기 (명령형, 함수형, 논리형 등) 세상에는 정말 다양한 프로그래밍 언어가 있습니다. 웹 개발자가 필수적으로 배워야 한다고 여겨지는 프로그래밍 언어만 나열해도 5개는 무조건 넘을 거 같습니다.  하지만 프로그래밍 언어가 다 같은 프로그래밍 언어가 아니라는거 알고 계셨나요? 프로그래밍 언어의 짧은 역사1. 처음 프로그래밍 언어는 기계어와 1:1 매칭되는 어쎔블리(Assembly)에서 시작했습니다.2. 구조적 프로그래밍 : 더 복잡한 구조를 쉽게 표현하기 위해 if, else, while, for 등을 도입3. 절차적 프로그래밍 : 함수를 도입해 코드의 반복, 복잡도를 줄임4. 객체지향 프로그래밍 : 프로그램을 객체들의 협력으로 봄5. 함수형 프로그래밍 : 구체적인 방법을 묘사하지 않고, 원하는 것을 함수들을 사용해 선언프로그래밍 언어의 궁극.. 2023. 4. 8.
코딩 테스트에서 최대공약수(GCD), 최소공배수(LCM) 유클리드 알고리즘으로 구하기 코딩 테스트에서 최대공약수(GCD), 최소공배수(LCM) 유클리드 알고리즘으로 구하기 코딩 테스트를 풀다 보면 의외로 최대 공약수, 최소 공배수를 구해야 할 일이 많습니다. 직접적으로 최대 공약수 / 최소 공배수를 구하라고 하는 문제도 있지만, 아래의 문제는 모두 간접적으로 최대 공약수 / 최소 공배수를 구해 푸는 문제들입니다. 기약 분수로 만들기 n개로 나눌때 모든 사람이 같은 개수를 가질 수 있게 하기 무식하게 최대 공약수 구해보기 두 수의 약수를 모두 구한다 공통된 약수만 남긴다 거기서 가장 큰 수가 최대 공약수! 최소 공배수는 최대 공약수만 구하면 자동으로 최소 공배수의 의미가 뭘까요? x, y의 최소 공배수라 하면, x, y 모두와 나누어 떨어지는 가장 작은 수 즉, 만약 아래와 같이 x, y가 이루어져 있다면 x, y의 최소 공배수는 a, b, c 3개의 숫자로 모두 나누어 .. 2023. 4. 7.
쿠버네티스가 뭘까? 작동원리, 아키텍처 정리! 쿠버네티스가 뭘까? 작동원리, 아키텍처 정리! 쿠버네티스 (Kubernetes, K8S)가 뭘까? 컨테이너(Container)를 관리해 주는 소프트웨어 IT 업계가 하나의 큰 서버를 여러개의 마이크로서비스로 나누면서, 각각의 마이크로서비스가 독립적으로 작동할 필요가 생겨, VM보다 가벼운 컨테이너를 사용하게 됐습니다. 처음에는 수동으로 관리하거나, Docker Compose 같이 간단하게 관리하는 것으로 충분했지만, 점점 컨테이너들의 복잡도가 증가하면서 쿠버네티스를 사용해 컨테이너를 관리하게 됐습니다. 컨테이너는 보통 Docker를 떠올리지만, 쿠버네티스는 Docker를 포함해서 Containerd, CRI-O, rkt도 지원합니다. 쿠버네티스에 관한 흥미로운 사실들 구글에서 처음 개발했습니다. Golang이라는 프로그래밍 언어로 개발 됐습니다. 전.. 2023. 4. 2.
로드 밸런서(Load Balancer)에 쓰이는 알고리즘 로드 밸런서(Load Balancer)에 쓰이는 알고리즘 Load Balancer란?서버의 트래픽(요청)을 분산시키는 장치우리가 컴퓨터에 너무 많은 프로그램을 켜 놓으면 느려지고, 최악의 경우 블루스크린이 뜨며 작동을 중지하듯, 서버 또한 너무 많은 요청을 받으면 부담이 됩니다. Load Balancer는 부하(Load)를 밸런싱(Balance)해 주는 장치를 말합니다. 네이버 홈페이지를 생각해 보면, 하루에 네이버를 찾는 사람이 1000만명은 될 겁니다. 이 모든 요청은 1개의 서버가 받는다면 네이버 홈페이지는 터지는게 일상일테지만, 로드 밸런서가 한 요청은 춘전의 데이터센터에 보내고, 한 요청을 서울로 보내는 식으로 분산시킨다면 터지지 않을 것입니다. 그렇다면 로드 밸런서는 어떤 식으로 트래픽을 분산시킬까요?흔히 쓰이는 알고리즘Round Robin라운드 로.. 2023. 4. 1.
마이크로서비스(MSA)를 쓰는 이유 마이크로서비스(MSA)를 쓰는 이유 초반에 프로그래밍을 공부하면서 틈틈히 IT 기업들의 발표회를 보곤 했는데, 거의 알아들을 수 없어서 충격을 받았던 적이 있습니다. 아직 갈 길이 멀구나 좌절하고, 반년 정도 열심히 공부한 후 다시 봤는데, 놀랍게도 똑같이 거의 알아들을 수 없었습니다. 나중에 알고 보니, 제가 알아듣지 못한 내용은 모두 MSA 관련 내용이였습니다. MSA(마이크로서비스 아키텍처), 말 그대로 서비스를 작게(마이크로하게) 만든다는 것입니다.대기업들은 굳이 왜 MSA를 사용할까요? MSA를 배워 보면 그 이유가 명확해 집니다. MSA에 관한 공부를 앞두고 계신다면, 그 전에 MSA가 정말 왜 필요한지 알려드리겠습니다. 크면 클 수록, 관리가 힘들고 예상치 못한 오류들이 많이 나온다구글이나 마이크로소프트 같은 실리콘벨리의 큰 .. 2023. 3. 28.
코딩 테스트 속도 높이기 : 내가 자주 쓰는 Java 문법 설탕(Syntax Sugar) 총정리 코딩 테스트 속도 높이기 : 내가 자주 쓰는 Java 문법 설탕(Syntax Sugar) 총정리 문법 설탕이 뭐야? 말하는건 똑같아도 짜증나게 말하는 사람이 있고, 듣기 좋게 말하는 사람이 있듯, 코드도 하는건 똑같아도 읽기 쉬운 코드가 있고 읽기 힘든 코드가 있습니다. 문법 설탕은 꼭 써야 하는건 아니지만 2가지 장점이 있어 알아두면 좋습니다. 1. 더 읽기 쉬운 코드를 쓸 수 있습니다. 2. 자주 쓰는 기능을 내가 직접 구현하지 않고 내장함수를 써 더 빠른 코딩이 가능합니다. 어떻게 활용할까? 우선, 문법 설탕이 아무리 코딩을 빠르게 해 주고 읽기 쉬운 코드를 만들어 준다고 해서 영어 단어 외우듯 외울 필요는 없다고 생각합니다. 대신, 저는 많이 써 보면 자연스럽게 적재적소에 활용할 수 있게 됐습니다. 자연스럽게 활용하기 위해 추천하는건 항상 코딩 테스트나 코드를 작성하고 리팩토링(Refacto.. 2022. 12. 14.
Github Pages에 React Router 적용된 React App 배포하기 Github Pages에 React Router 적용된 React App 배포하기 Github Pages라는, Github에서 무료로 제공하는 호스팅 서비스가 있습니다. 보통은 HTML/CSS/JS로 만들어진 간단한 페이지를 배포하지만, React App도 build하면 결국 HTML/CSS/JS로 이루어져 있기 때문에 React App도 배포 가능합니다. 하지만 문제가 있습니다. React Router를 사용한 React App을 Github Pages에 배포하면 제대로 동작하지 않고 아래와 같은 화면이 나온다는 겁니다. 이건 왜 발생하고 어떻게 해결할까요? 왜 안 될까? React Router에서는 HTML history라는 기술을 사용해 URI 이동을 구현하고 있는데, Github Pages에서는 HTML history를 지원하지 않는다고 합니다. 그래서 React Router가.. 2022. 11. 11.
클라우드가 뭘까? IaaS, PaaS, SaaS 이건 또 뭘까? 클라우드가 뭘까? IaaS, PaaS, SaaS 이건 또 뭘까? 아마존, 마이크로소프트, 구글까지. 미국의 빅테크 기업들이 클라우드 사업에 집중하고 있습니다. 클라우드가 뭐고, 뭐가 그렇게 좋길래 그럴까요? 이 외계어 같은 IaaS, PaaS, SaaS는 뭘까요? 클라우드(Cloud)가 뭔지 간단히 서버라는 말은 우리 일상생활 속에서도 많이 사용됩니다. 근데 서버가 정확히 뭘까요? 서버는 역할의 개념입니다. 서버는 우리가 쓰는 컴퓨터, 스마트폰과 크게 다르지 않습니다. 하지만 서버는 서빙(제공하는) 역할을 하는 컴퓨터를 말합니다. 우리가 웹 사이트에 접속하면 서버한테 웹 사이트 내용을 달라고 요구합니다. 문제는, 매우 많은 사람이 동시에 서버에 요청을 한다는 겁니다. 그래서 서버는 우리가 아는 컴퓨터보다 크고, 많고, 빠릅니다. 당연히 이런 서버를 관리하는건 돈도 많.. 2022. 10. 28.
인터넷이 대체 뭘까? 인터넷이 대체 뭘까? 인터넷은 어떻게 동작할까요?인터넷은 현대사회를 이루는 가장 핵심적인 기술이고, 우리의 문화와 삶을 바꿨지만 사실 본질은 매우 간단합니다.곰곰이 생각해보면, 우리가 인터넷에서 하는 모든 일은 누군가가 다른 컴퓨터에 올려놓은 데이터를 보는 일입니다.넷플릭스는 누군가가 넷플릭스 컴퓨터(서버)에 올려놓은 동영상을 보는 것이고,구글은 누군가가 구글의 컴퓨터(서버)에 올려놓은 정보들의 묶음을 보는 것입니다. 근데 이상하다고 느끼실 수도 있습니다. 넷플릭스, 구글은 미국 회사인데, 한국이 미국과 연결되어 있다고?그렇습니다. 전 세계 바다에는 해저케이블이라고 하는 케이블이 있고, 이 케이블은 전 세계에 있는 컴퓨터를 연결하고 있습니다.해저케이블이 어디에서 어디로 연결되어 있는지 궁금하시다면 아래 링크에서 확인해 보실 .. 2022. 10. 27.
유명한 IT기업의 본사는 어디에 위치해 있을까? 네카라쿠베당토직두야 본사 위치 총 정리! 유명한 IT기업의 본사는 어디에 위치해 있을까? 네카라쿠베당토직두야 본사 위치 총 정리! 네카라쿠베당토직두야... 언뜻 보면 암호처럼 보이는 이 말은 사실 요즘 핫한 연봉을 많이 주는 IT기업을 줄여서 부르는 말입니다. 이 암호를 차례대로 정리해보면 아래 표와 같습니다. 줄임말 이름(회사이름) 뭐 하는 회사야? 네 네이버 - 카 카카오 - 라 라인 일본, 대만, 동남아 국민 메신저로 유명한 '라인' 개발 쿠 쿠팡 - 베 베달의 민족 (우아한 형제들) 음식 배달 플랫폼 '배달의 민족' 개발 당 당근 중고 거래 플랫폼 '당근마켓' 개발 토 토스 (비바리퍼블리카) 종합 금융 플렛폼 '토스' 개발 직 직방 부동산 거래 플렛폼 '직방' 개발 두 두나무 코인 거래소 '업비트' 개발 야 야놀자 숙박/교통 플랫폼 '야놀자' 개발 실제 서비스 이름과 회사 이름이 다른 회사는 참고상 괄호 안에 넣었습니다,. .. 2022. 10. 23.
Clean Code, 읽기 쉬운 코드를 쓰는 법 Clean Code, 읽기 쉬운 코드를 쓰는 법 처음 프로그래밍을 배우면 문법을 잘 지키는 것만으로도 벅찹니다. 열심히 코드를 쳤는데 console창에 뜨는 무수한 에러를 보면 한숨만 나옵니다. 하지만 점점 프로그래밍에 익숙해지면 요구사항에 맞게 코딩하는 거는 어느 정도 할 수 있게 되지만, 이게 끝이 아닙니다. 더 좋은 프로그래머가 되려면 코드를 단순히 옳바르게 쓰는 거뿐만 아닌, 읽기 쉽게 써야 합니다. 이런 읽기 쉬운 코드를 흔히 Clean Code, 즉 깨끗한 코드라 부릅니다. Clean Code가 왜 중요하고, 어떻게 하면 Clean Code를 쓸 수 있을까요?Clean Code는 왜 중요할까?Clean Code가 중요한 이유는 내가 쓴 코드는 한 번 쓰고 끝이 아니라, 계속 살아 숨쉬기 때문입니다. 즉, 내가 쓴 코드는 나를 포함한 누군가가.. 2022. 9. 17.
도커(Docker)가 뭐고 어디에 쓰는걸까? 도커(Docker)가 뭐고 어디에 쓰는걸까? 요즘 도커(Docker)라고 불리는 기술이 굉장히 인기가 많습니다. 개발자로서 아래의 이미지의 파란색 고래를 한 번쯤은 보신 적이 있으실텐데요. 이 도커! 도대체 뭐고 어디에 쓰는 걸까요? 간단하게 알려드리겠습니다. 도커가 뭐야? 도커(Docker)는 쉽게 말해 가상머신(VM) 같은거라고 생각하면 됩니다. 근데 가상머신의 단점을 빼고 장점만 모은겁니다. 가상머신이 뭘까요? 저는 몇 년째 맥북을 쓰고 있는데, 가끔 어렸을 때 하던 메이플스토리가 하고 싶을 때가 있어요. 하지만 맥북에서는 메이플스토리가 돌아가지 않습니다...! 그래서 맥북에 원도우를 깔아서 메이플스토리를 하곤 했습니다. 이때 MacOS가 돌아가고 있는 상태에서, 또 다른 OS인 Windows를 가상머신의 형태로 설치한 겁니다. 이런 가상머신.. 2022. 8. 16.
프로그래밍 학원/부트캠프 총 정리! 프로그래밍 학원/부트캠프 총 정리! 개발자라는 직업은 매력적인 직업입니다. 진입 장벽이 다른 직업에 비해 적은데 연봉은 높은 편이니 많은 분들이 하려는 게 이해가 갑니다. 정부 입장에서도 개발자라는 직업은 4차 산업 직군이기도 하고, 부가 가치도 높으니 실력 있는 개발자가 많은 게 국가에 나쁜 영향은 끼치지 않습니다. 그래서 관련 학원도 많고 지원도 많은데, 너무 많아서 헷갈리지 않으신가요? 저도 학원을 가기 위해 알아본 정보들을 간단하게 정리해 봤습니다.컴퓨터 학원이라 해도 다 같지는 않다! 컴퓨터 학원의 4가지 종류우선, 같은 컴퓨터 학원이라고 불려도 다 같은 컴퓨터 학원이 아닙니다! 제 마음대로 컴퓨터 학원을 4가지 종류로 나누자면 아래와 같습니다.일반적인 국비지원학원좋은 국비지원학원민간 부트캠프우테코국비지원이라는 건 학원비 전액을 .. 2022. 6. 10.
스텐포드 (Stanford) 대학교 컴공과는 어떤걸 배울까? 총 정리! 스텐포드 (Stanford) 대학교 컴공과는 어떤걸 배울까? 총 정리! 전공 필수어느 대학이나 전공 필수라고 불리는, 그 전공이라면 반드시 들어야 하는 과목이 있습니다. 스텐포드 대학에서는 총 6개의 과목을 들어야 합니다.SystemsCS106 Programming Abstraction - C++를 활용한 기초적인 컴퓨터 공학 지식(데이터 구조, 알고리즘, 프로그래밍 방법론 등 )CS107 Computer Organization and Systems - UNIX 상에서 하드웨어에서 소프트웨어로의 구조CS110 Principles of Computer Systems - 큰 스케일의 시스템 만들기(프로세스, 파일 시스템, 네트워킹)TheoryCS103 Mathematical Foundations of Computing - 컴퓨터 과학을 공부하기 위해 필요한 수학 지식CS109 .. 2022. 3. 2.
엠브레인 좌담회 참석 후기 엠브레인 좌담회 참석 후기 최근 부업을 열심히 하고 있지만, 아무래도 인터넷으로 클릭 몇 번 하는걸로는 큰 돈을 벌기는 힘들다. 그런 와중에 좌담회라는걸 알게 되서 참가하기로 했다. 비밀유지서약서를 썼기 때문에 자세한 내용은 말하지 않겠지만, 좌담회가 대충 어떤 것이고, 참여할 만한 가치가 있는지 말해보고자 한다! 좌담회란? 좌담회는 쉽게 말해서 직접 만나서 특정 주제에 관해 이야기를 듣는 것이다. 이걸 왜 하는 걸까? 보통은 기업이 특정 제품군에 관해 더 자세히 알고자 할 때나, 정부가 정책을 수립할때 의견을 듣고자 할때 하는거 같다. 설문조사로 할 수도 있지만, 설문조사는 신원이 불확실한 불특정 다수에게 얕게 묻는거라면, 좌담회는 신원이 확실한 소수에게 깊게 묻는 것이다. 보통 설문조사 부업은 많이 받아도 1000원을 받기 힘.. 2021. 11. 23.
리얼티인컴(O)의 스핀오프 주식(ONL)은 왜 안 들어올까? 리얼티인컴(O)의 스핀오프 주식(ONL)은 왜 안 들어올까? 2021년 10월 경에 리얼티 인컴이 VER이라는 또 다른 리츠 회사와의 합병이 마무리 된다고 밝혔다. 그에 따라 리얼티 인컴 안에 오피스 리츠의 비중이 약 9%에 달하게 되어, 이를 오리온(ONL)이라고 불리는 새로운 회사로 분할해 상장하기로 했다. 이에 대해 자세히 알아보자! 왜 오피스 리츠를 분사할까? 일단 리얼티 인컴이 오피스 리츠를 분사하는 이유는 한 마디로 오피스 리츠는 리얼티 인컴의 철학(꾸준한 월배당)에 적합한 자산이 아니기 때문이다. 오피스 리츠는 일반적으로 새로운 새입자를 찾기 어려우며, 시설을 새로운 새입자에 맞게 개조하는데 큰 비용이 들어 공실률이 높다. 그래서 이런 리스크를 줄이기 위해 오피스 리츠만 따로 분리해 상장하는 모양이다. 스핀오프란? 스핀오프란 회사의 일부 사업 부분을 .. 2021. 11. 22.
증권 계좌를 왜 여러 개 쓸까? 증권 계좌를 왜 여러 개 쓸까? 개요 주위 사람들을 보면 주식투자를 하는 대부분의 사람들이 증권 계좌를 하나가 아닌 여러 개를 사용하는 거 같다. 증권 계좌를 여러 개 사용하면 관리하는데 불편하기만 할거 같은데 왜 여러 개 사용할까? 개인적으로 증권계좌를 여러개 사용하는 이유와, 다른 사람들에게 물어 가장 흔한 증권 계좌를 여러 개 사용하는 이유를 모아 봤다! 용도를 나누기 위해서 똑같이 '투자'라고 부르지만, 사실 사람마다 투자하는 이유는 다양하다. 그 뿐만 아니라, 많은 사람들이 한 가지 이유가 아닌 여러 가지 이유로 투자한다. 그렇기 때문에 이런 용도에 따라 계좌를 나누는건 어찌 보면 당연한 것이다. 예를 들어, 전세금으로 투자를 한다면 당연히 살 수 있는 종목이 한정되어 있을 것이다. 중소형주 위주가 아닌 대형 우량주 위주로 매.. 2021. 11. 13.
알라딘에서 중고책 파는 법, 후기, 얼마나 받을까? 알라딘에서 중고책 파는 법, 후기, 얼마나 받을까? 옛날에는 책을 산다는 행위 자체가 좋았다. 뭔가 그 책을 소유하면 그 지식도 내가 소유하는 느낌? 하지만 지나고 나서 생각해 보니 굳이 책을 그렇게 많이 샀어야 되나 싶다. 도서관에서 빌려 볼 수도 있고, 밀리의 서재같은 전자책 구독 서비스로 볼 수 도 있는데... 아무튼 그런 것도 있고, 최근에 돈이 좀 필요해서 집에서 굴러다니는 쓸데 없이 많아 이사갈 때 마다 큰 짐이 되는 책들을 조금씩 팔아보기로 했다. 우선 중고나라나 당근마켓에 하나하나 팔 수도 있었지만, 언제 팔릴 지도 모르고, 또 채팅으로 협상하고, 실제로 가서 거래하고, 택배 보내고 하는 일을 할 여유가 도저히 되지 않아 평소 자주 이용하던 알라딘에 책을 팔기로 했다. 책을 사려고는 많이 가봤어도 팔려고 가본적은 처음이라 왠지 모르게 떨렸다.. 2021. 11. 12.
블로그 글 주제 찾는 법 블로그 글 주제 찾는 법 블로그를 시작하고 몇 개월은 나름 쓸게 넘쳐날 수 있다. 평소에 생각했던 것들이나 쓰고 싶었던 것들을 써 내려 가다 보면 블로그가 즐겁기도 하다. 하지만 곧 깨달고 만다. 쓸게 없다! 쓸 수 있는 주제는 다 쓴거 같은데, 글 수는 아직 한참 부족한거 같고, 도대체 블로그에 무엇을 써야 할까? 일상에서 항상 블로그 주제 찾기 블로그 주제는 가만히 앉아서 1시간 생각한다고 10개가 나오지 않는다. 블로그는 기본적으로 글쓰기이고, 글쓰기는 영감이 중요하다. 그래서 시간을 들여서 주제를 찾는다고 생각하기 보다는 일상에서 항상 블로그의 주제가 될 만한 것을 메모하는 습관을 가져야 한다. 예를들어, 며칠전 외출을 했는데 스쿠터를 타는 사람들이 보였다. 이를 보고 바로 스쿠터에 관련해서 글을 써야 겠다고 생각했다. .. 2021. 8. 19.
앱태크(App-Tech) 해 본 후기 앱태크(App-Tech) 해 본 후기 소개 앱 태크는 앱 재태크의 줄임말로, 앱으로 돈을 버는 것이다. 핸드폰으로 클릭 몇 번 하는 것 만으로 돈을 벌 수 있다는 유튜브 영상에 끌려 앱태크를 시작하게 되었다. 처음에는 솔깃했지만 한 달 동안 해 본 결과 앱 태크는 안 하는 편이 좋다는 결론에 도달했다. 오늘은 개인적인 앱태크 경험을 공유해 볼까 한다. 너무 적은 돈 아래는 한 시간 정도를 써서 번 돈이다. 문제는 이 돈도 지속적으로 벌 수 있지는 않다는 점이다. (앱 태크에 있는 모든 미션을 할 수 있는 것은 아니다. 앱을 설치하는 미션이라면 이미 설치한 앱일 수도 있고, 자동차 보험 상담 미션이라면 자동차가 없을 수도 있다.) 앱 태크도 엄연히 시간을 써서 버는 돈이기 때문에 정말 돈이 필요하다면 앱 태크 보다는 짧게 편의점 알바를 하는게.. 2021. 8. 9.
반응형