HOT
이번에 포스팅 할 주제는 자바/스프링과 Node.js의 차이점에 대한 내용입니다. 각각이 나오게 된 이유와 어떠한 이유로 사용되고 있는지에 대해 역사부터 시작하여 차근차근 적었으니 굉장히 알찬 포스팅이 될 것 같습니다. 제일 중요한 내용은 4, 5, 6번에 있기때문에 해당 내용으로 건너 뛰셔도 좋습니다. 1. 내가 사용하고 있는 프레임워크 개발자를 지망하시는 분들 혹은 IT업계 현업에서 종사하시는 분들이시라면 "대기업은 자바를, 스타트업은 Node.js를 대개 사용한다."라는 말을 많이 들어보셨을텐데요. 내로라하는 기업의 백엔드 개발자 채용 공고를 살펴보면 'Java 기반 개발 경험이 있는 분'을 찾는다는 문구가 눈에 띕니다. 이와 반대로 스타트업의 채용공고에서는 Node.js로 개발을 해 본 경험이 있..
학습목표 정규표현식(re)에 대한 이해 및 숙지 정규표현식이란? regular expression 특정 패턴에 상응하는 문자열을 '검색', '치환', '제거' 하는 기능을 가짐 정규표현식의 도움없이도 패턴을 찾는 작업(Rule 기반)은 불완전하거나, 작업의 cost가 높음 ex) 이메일 형식 판별, 전화번호 형식 판별, 숫자로만 이루어진 문자열 등 raw string 문자열 앞에 'r'이 붙으면 해당 문자열이 구성된 그대로 문자열로 반환한다. a = 'abcdef\n' #escape 문자열 print(a) ''' abcdef ''' b = r'abcdef\n' print(b) ''' abcdef\n ''' escape string이란 escape sequence를 따르는 문자들로서 다음 문자가 특수문자임..
이번 포스팅은 지난 포스팅에 이어 ArrayList에서 했던 것과 마찬가지로 LinkedList에서의 데이터 삽입, 데이터 삭제, 리스트 검색 등의 기능에 대해서 다뤄보도록 하겠습니다. 1. 연결리스트(Linked List)란? LinkedList는 Node라는 객체로 이루어져 있는데 Node는 데이터를 저장하는 field와 다음 노드를 가리킬 수 있는 next pointer field로 구성이 되어있습니다. 이말인 즉슨, 이 노드들이 연결된 형태의 자료구조를 바로 LinkedList라고 하는 것입니다. 예를 들어, 학교에서 어느 반의 모든 학생들의 데이터를 저장한다고 했을 때, 학생 한명 한명의 신상정보 자료를 노드로 만들고, 1번 학생의 신상정보 자료에 2번 신상정보 자료가 어디 있는 지 표시를 해 ..
최신글
1. 들어가기에 앞서순수 자바스크립트에 비해 뛰어난 생산성 향상을 가져다 주는 타입스크립트는 정적 타입을 명시함으로써 코드 자동 완성이나 잘못된 변수/함수 사용에 대한 사전 에러 알림을 통해 코드 디버깅을 매우 쉽게 만들어준다. 이러한 타입스크립트에는 "타입"을 정의하는 데 두 가지 방식이 존재한다: "types"와 "interfaces" 많은 사람들이 두 키워드의 차이를 느끼지 못하고 나 역시도 타입스크립트를 사용함에 있어서 어떠한 사용 기준 없이 두 키워드를 혼용해서 사용하곤 했었다. 하지만 사용할수록 점점 나만의 규칙들이 생겨나는 것을 느낄 수 있었고 이를 조금 더 명확히 해서 코드를 작성할 때 일관성을 지키고 싶어 많은 글들을 찾아보게 되었고 이번 기회에 이에 대한 회고를 이 포스팅에 남겨보려고 ..
· 프로젝트
1. 구 NextAuth.js, 현 Auth.jsAuth.js는 모든 JavaScript 런타임이 구성하는 모든 플랫폼에서 모던 애플리케이션의 "인증(authentication)" 부분을 위해 표준 웹 API를 기반으로 구축된 오픈 소스 패키지 모음입니다. 기존에 명칭은 next-auth로 많이 알려졌으나 next-auth@5.0.0-beta 이후 버전부터 @auth/*  네임 스페이스가 생겼고 Auth.js로 명칭이 바뀌었습니다. (이전 버전은 계속해서 next-auth로 패키지 이름이 구성됩니다.)  Auth.js | Getting StartedAuthentication for the Webauthjs.dev 2. 무슨 기능이 있나?2-1. 유연하고 사용하기 쉬움..
· 프로젝트
Overview 지금까지 꽤 많은 프로젝트를 진행해봤지만 로그인 관련 부분은 항상 걸림돌이 되는 부분 중 하나였다. ‘세션’이니 ‘jwt’니 하는 수많은 용어들을 제대로 익히지도 못한 채 로그인을 구현하려 했었고 항상 벽에 막혀 제대로 구현하지 못한 경험을 했었다. 그리하여 이번 프로젝트에서는 제대로 된 로그인 기능을 구현해보려 여러 삽질들을 해보았고 어떤 과정들을 거쳐 최종적으로 어떻게 구현할 수 있었는지와 관련된 기록들을 이 포스팅에 남기려 한다. "There is no silver bullet" 시작에 앞서 가장 중요한 점을 말하자면 소프트웨어 공학에는 모든 곳에 적용 가능한 솔루션은 없다는 의미로 "silver bullet은 없다"라는 말이 존재하는데, 로그인 즉 인증 방식에도 이 말이 적용되는 ..
· 프로젝트
1. Overview 새로운 프로젝트를 기획했고 이를 이제 개발을 시작하려고 한다. 프론트엔드와 백엔드를 모두 다루어야 하는데 나는 주도메인(primary-domain)이 백엔드이기 때문에 백엔드를 개발하는 것이 비교적 쉬워 백엔드를 먼저 구축한 후에 프론트엔드에서 UI와 API 연결을 마무리 하는 식으로 진행을 할 것이다. 2. 진행 및 완료사항 2-1. 기술 스택 선정 기술 스택을 선정함에 있어서는 신기술을 이용하고자 하는 방향으로 잡았고 이전 프로젝트를 Express.js와 react native를 사용한 경험이 있어 여기서 업그레이드 시켜 Express.js는 NestJS로, React는 NextJS로 진행해보기로 하였고 이에 대한 공부를 진행하였고 현재도 꾸준히 진행 중이다. NextJS를 공부..
디자인 패턴들은 소프트웨어 디자인 과정에서 자주 발생하는 문제들에 대한 일반적인 해결책들입니다. 이는 우리의 코드에서 반복적으로 되풀이되는 디자인 문제들을 해결하기 위하여 맞춤화할 수 있는 청사진(blueprint)들을 미리 만들어 놓은 것이라고 보면 됩니다. 우리는 JavaScript로 백엔드 애플리케이션을 구축할 때 Node.js를 많이 사용하곤 하는데요. 최근에 이를 지원하는 프레임워크인 NestJS는 객체지향 프로그래밍을 기반으로 구성하기 때문에 객체지향에서 사용되는 많은 아키텍처와 디자인 패턴들을 차용합니다. 하지만 아직 JavaScript을 사용하여 디자인 패턴을 설명하는 글은 많지 않았는데 최근에 좋은 글을 발견하여 이에 대해 공부한 내용을 바탕으로 작성한 포스팅이 되겠습니다. 원글: htt..
· NestJS
1. Testing 자동화된 테스트는 소프트웨어 개발에 들어가는 모든 공수(effort)의 핵심 파트로 여겨집니다. 테스트를 자동화하면 개발 도중에 개별 테스트 또는 테스트 묶음들을 빠르고 쉽게 반복하여 테스트 해볼 수 있게 됩니다. 또한 제품을 출시할 때 품질과 성능의 만족을 보장하기도 합니다. 이렇듯 자동화는 개발자들에게 커버리지(테스트 범위)를 증가하는데 도움을 주며 더 빠른 피드백 순환을 가능하게 합니다. 그리고 각 개발자들의 생산성을 증가시키고 개발 생명주기의 정점(소스 코드 제어 체크인, 기능 통합, 버전 릴리즈 등)에서 테스트가 실행됨을 보장합니다. 그러한 테스트는 unit 테스트, end-to-end(e2e) 테스트, integration 테스트 등을 포함하여 다양한 유형에 걸쳐 분포합니다..
cdragon
개발자로 살아남기