전체보기 106

[RFC 해석하기]왜 CORS 에러가 발생하는 걸까? - RFC 6454

웹 개발을 진행해본 사람은 한 번쯤 CORS에러를 마주쳤을 겁니다. 보통 다른 도메인에 정보를 요청할 때 발생하는데요. 이번 포스트에는 RFC 문서를 바탕으로 왜 이 에러가 발생하는지 알아보도록 하겠습니다. RFC 문서를 참고하여 최대한 올바른 정보를 토대로 작성했습니다. 1. SOP 첫 번째 이유는 아주 간단합니다. 브라우저는 기본적으로 SOP(Same-Origins Policy)를 준수하기 때문입니다. 그렇다면 SOP는 무엇일까요? 이 내용은 RFC 6454에 잘 명시되어 있습니다. 먼저 Origin이라는 용어의 의미부터 알아보겠습니다. 1.1. Origins 3.2. Origin ... user agents group URIs together into protection domains called ..

카테고리 없음 2022.10.06

[2022 KAKAO TECH INTERNSHIP 코딩테스트] - 행렬과 연산 (Python) 풀이

들어가며 아래 문제 설명은 풀이를 쉽게 이해할 수 있도록 프로그래머스의 내용을 그대로 인용했음을 밝힙니다. 정확한 자료는 아래 링크를 참고하시기 바랍니다. https://school.programmers.co.kr/learn/courses/30/lessons/118670 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 당신은 행렬에 적용할 수 있는 두 가지 연산을 만들었습니다. ShiftRow 모든 행이 아래쪽으로 한 칸씩 밀려납니다. 즉, 모든 행에 대해서 i번째 행은 i+1번..

카테고리 없음 2022.09.14

웹 개발자로 스타트업에서 살아남기 : Demo

들어가며 스타트업에서 일한 지 벌써 몇 달이 지났다. 스타트업에서 웹 개발자로 살아가면서 여러 고난을 겪고 내가 해결한 방법과 탐구 과정에 대해서 정리해보려고 한다. 아직 많이 미숙한 글이지만 이 글이 다른 스타트업에서 힘겹지만 노력하는 개발자들에게 도움이 되었으면 좋겠다. 환경 나는 이제 막 시드 투자를 유치하는 스타트업에 웹 개발자로 참여하게 되었다. 이 시기의 스타트업은 실제로 사용자를 모으고 비즈니스 모델을 단단하게 구현하기 보단 투자자, 협업체 그리고 예비 사용자의 피드백을 받고 거기서 새로운 시도를 통해 어떤 가치를 찾을 수 있을지 탐구하는게 가장 큰 목표다. 즉, 시도와 보완이 계속해서 이루어진다. 마치 인공지능이 올바른 방법을 찾기 위해서 학습을 하고 평가를 반복하듯 보이지 않는 정답을 향..

카테고리 없음 2022.09.08

[Elastic Beanstalk] AWS에 Spring Boot 프로젝트 배포하기

1. Spring Boot 배포 방법 Spring Boot 공식문서를 보면 AWS에서 스프링부트를 배포할 수 있는 다양한 방법에 대해서 설명하고 있습니다. 그 중 Elastic Beanstalk을 가장 대표적으로 안내하고 있는데요, CLI를 통해서 배포하는 방법을 링크로 소개해주고 있지만 여기서는 GUI를 통해서 간단하게 배포해보고 또 그 과정에서 생긴 자잘한 버그에 대해서 공유해보고자 합니다. 2. Elastic Beanstalk을 이용한 배포 과정 2.1 AWS Management console에서 beanstalk을 검색합니다. 2.2 새 환경 생성을 클릭하고 환경 티어를 선택합니다. 우리는 Spring Boot를 이용한 웹 서버를 배포할 예정이므로 웹 서버 환경을 선택하도록 합니다. 2.3 웹 서..

카테고리 없음 2022.07.15

Docker-Compose 개발 환경 설정 일대기(local, dev, prod)

들어가며 회사에서 웹 프로젝트를 개발하면서 협업 단계에서 서로 다른 개발환경과 로컬/테스트/배포 환경의 구성으로 인해 많은 문제점을 마주쳤었다. 이번 포스트에는 이와 관련된 문제들가 이를 어떻게 해결했었는지를 기록해보고자 합니다. 문제점 꽤 오래전의 일이지만 설명의 흐름을 위해서 처음부터 시작해보겠습니다. 1. 서로 다른 개발환경 팀 프로젝트를 진행하면서 다른 개발자가 커밋한 코드를 받아서 내 로컬에서 실행하면 한 번쯤은 오가는 말들이 있습니다. A : "커밋 해주신거 설치해봤는데 안 돌아가는데요?" B : "어 저는 돌아가는데요? 왜 그러지..." 확인해보면 .gitignore로인해 SSH/Oauth2 key, Database Profile 등 민감한 데이터가 공유되지 않은 것 부터 환경 변수 차이 등..

카테고리 없음 2022.06.29

사용자를 위한 효과성, 운영을 위한 효율성

들어가며 오늘은 나의 개발철학을 정리해보려고 한다. 너가 뭔데?라고 스스로도 생각하지만, 미숙한 내가 성장을 하려면 지금 내 생각을 정리해야 문제점이 무엇인지 파악하고 성장을 할 수 있다고 생각하기 때문이다. 제목의 뜻 경영학과에서 수업을 들은 적이 있다면, 효과성과 효율성에 대해서 매번 듣게 된다. 복수전공을 하면서 교수님께서 "2학년 여러분은 다들 아시겠지만 한 번 더 설명할게요~"라고 해주셔 알게 되었다(물론 나는 복전이라 처음 들었지만... 배려 감사합니다 교수님ㅠㅠ). 효과성은 "목표를 어느정도 달성했는가?"를 뜻한다. 효율성은 "목표를 달성하는데 어느정도 비용을 사용했는가?"를 뜻한다. 아래는 당시 교수님이 예시로 들어주신 말씀을 그대로 인용한 것이다. 벽에 붙어 있는 파리를 잡을 때, 해머로..

카테고리 없음 2022.06.27

개발자 블로그에 대한 충격

들어가며 꽤나 자극적인 재목이다. 하지만 내 심정을 표현하기에는 이것보다 적절한 제목은 없다고 생각했다. 최근에 개발과 관련된 잘못된 지식이 얼마나 잘 퍼지는 것인지 그리고 이런일이 왜 일어나는 것인지에 대한 경험과 생각을 적어보려 한다. 무슨 일인데? 2022년 3월, 면접 공부에 도움이 되는 깃헙 레포지토리를 추천받아서 읽어봤다. 바로 아래의 블로그인데 Star를 12.6k나 받고 레포지토리의 목적과 콘텐츠가 잘 정리되어있어서 면접 공부하기에 좋은 자료처럼 보였다. 초반을 읽어본 결과 너무 깊지도 않으면서 어떤 부분을 공부해야하는지 넓고 얇게 지식들이 정리되어 있었다. 그런데 자료구조 부분을 읽다가 눈을 의심하게 만드는 한 문장이 있었다. Java Collection 에서 ArrayList 도 내부적..

카테고리 없음 2022.06.25

Dive Data Structure with Java Collection

Overview 이 장에서는 여러 Data Structure의 개념과 자바에서는 실제로 어떻게 구현되어 있는지 알아보도록 한다. Linear Data Structure Array 논리적 저장순서와 물리적 저장순서가 일치한다. 즉 메모리에서 연속적으로 데이터가 기록되는 자료구조이다. 이 특성 덕에, 특정 아이템을 인덱스를 알면 O(1)안에 접근이 가능하지만(random access), 아이템 삭제나 추가를 진행할 때, 연속성을 유지해야 하기 때문에 최대 O(n)의 시간복잡도가 발생한다. 보통 자바에서는 []를 통해서 Array를 생성하며, 아래와 같이 스택 영역에 Array의 레퍼런스를 저장하고 힙 영역의 메모리에 연속적으로 데이터를 할당하고 있다. 이 때, 메모리의 크기는 고정적이다. 또한 Array에서..

새로운 프로젝트에 관하여 - 3. Github Project 활용법

들어가며 Github은 Git Remote Repository로 사용하는데 아주 대중적인 웹사이트다. Github에는 프로젝트 관리를 위한 다양한 기능을 가지고 있어서 이번 포스트에는 이를 우리 프로젝트에서 활용한 방법에 대해서 간략하게 소개하겠다. 1. 선택이유 지난 포스트에서도 말했듯, PM(Project Management)를 위한 툴은 여러가지가 있다. 그러나 용도에 따라 서로 분산된 툴을 사용해야 하고 이를 연동하는 과정이 가벼운 프로젝트를 시작하는 사람들에게는 오히려 짐이 된다. 그런데 Github Repository에는 Issue, Milestone, Actions, Project, Wiki 등 다양한 프로젝트 관리 도구가 한 곳에 존재하기 때문에 따로 설정할 필요가 없어 편의성이 좋다. 물..

새로운 프로젝트에 관하여 - 2. 문제 정의

들어가며 지난 포스트에는 개발방법론과 이를 실현하기 위한 툴들에 대한 내용을 작성하였다. 이번에는 새로운 프로젝트에서 문제를 정의한 과정에 대해서 알아보도록 하겠다. 1. 시작 교수님께서 소개해주신 스타트업 대표님과 개발팀장님께 자문을 받았을 때 가장 인상깊었던 말씀은 클라이언트, 팀원들 간의 생각 차이를 줄이는게 가장 중요하다는 것이었다. 자세히 말하면 같은 내용을 얘기하고 있어도 미묘하게 비즈니스 로직이나 유저 스토리에 대한 이해에 차이가 발생할수 있으며 이를 바로잡지 않으면 나중에 개발을 진행할 때 문제 정의로 회귀하여 다시 개발을 진행할 수도 있는 나비효과가 발생한다는 것이었다. 따라서 이번 프로젝트에서는 생각 차이를 줄이는데 집중하여 아래와 같이 3가지 문제정의 방법을 사용하고 검증했다. 2. ..