본문 바로가기

전체 글

(215)
GraphQL In Action | GraphQL API GraphQL API 그래프QL서버에 데이터를 요청할 때는 그래프QL 쿼리 언어로 작성된 요청을 보낸다. 그리고 이 요청에는 트리형 필드가 포함된다. 그래프QL 커뮤니케이션의 핵심은 요청 객체이다. 그래프QL 요청은 문서(Document)라고도 불린다. 문서는 쿼리, 변경, 구독과 같은 작업 요청을 텍스트로 가지고 있다. 또한, 이런 주요 작업 외에도 기타 작업을 구성할 때 사용하는 조각도 텍스트로 저장된다. 요청 그래프QL 요청에는 변수의 값을 나타내는 객체도 포함되며, 처리와 관련 메타 정보도 포함될 수 있다. 요청 문서에 작업이 하나만 포함돼 있다면 서버는 해당 작업을 알아서 실행한다. 이 경우 작업에 이름을 붙일 필요가 없지만, 일반적으로는 모든 작업에 이름을 붙이는 편이 좋다. 만약 내가 3가지..
Next.js 환경 변수 환경 변수 Loading Environment Variables Next.js는 .env.local에 저장한 환경변수를 process.env로 읽어 올 수 있다. # .env.local DB_HOST = localhost DB_USER = myuser DB_PASS = mypassword 환경변수는 빌드 타임에 평가된다. process.env는 표준 JavaScript 객체가 아니므로 비구조화할당을 통해 가져올 수 없다. 무조건 process.env.PUBLICK_KEY와 같은 방법을 사용해야한다. 흥미로운 방법은 Next는 $var을 통해 환경 변수를 재사용할 수 있다는 것이다. 예제는 아래와 같다. # .env HOSTNAME=localhost PORT=8080 HOST=http://$HOSTNAME..
GraphQL In Action | GraphQL 소개 GraphQL 소개 발명은 필요에서부터 시작된다. 페이스북이 그래프QL을 만들기로 한 이유는 모바일 애플리케이션 개발 시 발생하는 여러 기술적인 문제를 해결하기 위해서였습니다. 하지만 현재 그래프QL이 인기를 얻고 있는 이유는 기술적 문제보다는 커뮤니케이션 문제를 해결하기 때문이다. 커뮤니케이션은 아주 어려운 기술이다. 커뮤니케이션 능력을 키우면 다양한 방면에서 삶이 윤택해진다. 마찬가지로 소프트웨어의 각기 다른 부품 간에 발생하는 커뮤니케이션의 품질을 향상시키면 해당 소프트웨어를 이해하기 쉬워질 뿐만 아니라, 개발, 유지관리, 확장도 쉬워진다. 그래프QL이 판도를 바꿀 수 있다고 생각하는 것도 이 때문이다. 서로 다른 소프트웨어 (프론트엔드와 백엔드)가 커뮤니케이션하는 방법을 바꿔버리는 게임 체인저이다..
무식하게 풀기 알고리즘 문제를 풀 때 공부를 열심히 할수록 복잡하지만 우아한 답안을 만들고 싶은 마음이 커지기 마련이고, 그래서 바로 앞에 보이는 쉽고 간단하며 틀릴 가능성이 낮은 답안을 간과하기 쉽다. 이런 실수를 피하기 위해 문제를 마주하고 나면 가장 먼저 스스로에게 물어보자. 무식하게 풀 수 있을까? 흔히 전산학에서 무식하게 푼다 (brute force)라는 말은 컴퓨터의 빠른 계산 능력을 이용해 가능한 경우의 수를 일일이 나열하면서 답을 찾는 방법을 의미한다. 이렇게 가능한 방법을 전부 만들어 보는 알고리즘을 가리켜 흔히 완전탐색(exhaustiive search)라고 부른다. 완전 탐색은 사실 컴퓨터의 장점을 가장 잘 이용하는 방법이다. 컴퓨터의 최대 장점은 결국 속도가 빠르다는 것이기 때문이다. 특히 현실세..
HTTP 완벽 가이드 | URL과 리소스 URL과 리소스 URL은 인터넷의 리소스를 가리키는 표준이름이다. URL은 전자 정보 일부를 가리키고 그것이 어디에 있고 어떻게 접근할 수 있는지 알려준다. 인터넷의 리소스 탐색하기 URL은 통합 자원 식별자(Uniform Resource Identifier) 혹은 URI라고 불리는 더 일반화된 부류의 집합이다. URI는 두가지 주요 부분집합인 URL과 URN으로 구성된 종합적인 개념이다. URL을 사용하면 리소스를 일관된 방식으로 지칭할 수 있다. 대부분의 URL은 동일하게 '스킴://서버위치/경로' 구조로 이루어져있다. 따라서 인터넷 상의 모든 리소스를 가리키고 가져오기 위해, 그리고 모든 사람이 같은 방식으로 이름을 써서 리소스를 찾을 수 있도록 단일 방식의 작명 규칙을 가진 것이다. URL은 애플..
HTTP 완벽 가이드 | 웹의 기초 HTTP 개관 전 세계의 웹 브라우저, 서버, 웹 애플리케이션은 모두 HTTP (HyperText Transfer Protocol)을 통해 서로 대화한다. HTTP는 현대 인터넷의 공용어이다. HTTP는 전세계의 웹 서버로부터 대용량 정보를 빠르고, 간편하고, 정확하게 사람들의 PC에 설치된 웹브라우저로 옮겨준다. HTTP는 신뢰성 있는 데이터 전송 프로토콜을 사용하기 때문에 데이터가 지구 반대편에서 오더라도 전송중 손상되거나 꼬이지 않음을 보장한다. 웹 클라이언트와 서버 HTTP클라이언트와 HTTP서버는 월드 와이드 웹의 기본 요소이다. 웹 브라우저는 서버에게 HTTP 객체를 요청하고 사용자의 화면에 보여준다. 리소스 웹서버는 웹 리소스를 관리하고 제공한다. 가장 단순한 웹 리소스는 웹서버 파일 시스템..
충남대학교 SW 아카데미 조교 기록 3, 4주차 3~4주차는 Git Flow를 주제로 Git의 전체적인 내용을 다루었다. 우선 내가 다룬 내용은 다음과 같다. - Git과 Github의 차이 - VCS(Version Control System) - Commit, Conventional Commit의 이해 - Checkout - Branch - GitFlow - SourceTree 이번 2주동안 Git의 개념과 기초를 많이 찾아보면서 나에게도 도움이 되었던 것 같다. 명확하게 이해해야 명확하게 설명할 수 있기 때문에 기초를 다루는 내용이라도 최대한 읽도록 노력을 했고 오히려 부족했던 기초를 더 탄탄하게 다지는 계기가 되었다. 이번 실습을 통해 학생들이 Git을 이해하고 Git 협업을 할 수 있도록 기초를 다졌다. Push, PR에 익숙해 질 수 있도록 ..
CodeDeploy Ubuntu 22.04 오류 CodeDeploy를 사용해서 Github develop 브랜치에 변경이 가해졌을 때 자동으로 배포를 해주는 사이클을 만들어보자. AWS CodeDeploy는 EC2, 서버리스 Lambda 함수 또는 Amazon ECS 서비스로 애플리케이션 배포를 자동화해주는 배포 서비스이다. 1개의 어플리케이션은 여러개의 Deployment 그룹을 가질 수 있다. EC2 인스턴스 Ubuntu 18.04 버전을 선택했다. (22.04 버전으로 이틀동안 삽질을 한 결과 22.04 버전에서 돌아가긴하지만 인증 이슈가 있었다.) EC2 인스턴스에 IAM 역할을 부여했다. 부여한 역할은 위와 같다. + Elastic IP (탄력적 IP)도 부여하고 ssh 접속을 완료했다. 접속한 후에는 EC2 인스턴스 기본 세팅( node, ..