분류 전체보기
-
[Java] HashMap이란 무엇인가?Language/Java 2021. 1. 25. 17:01
HashMap이란? HashMap은 Map 인터페이스를 구현하고 있는 대표적인 클래스입니다. 그리고 Map의 구조인 key-value쌍으로 구성되어 있습니다. 그리고 Map의 대표적인 특징은 하나의 key는 정확히 하나의 value만 가질 수 있다는 것입니다. public class HashMap extends AbstractMap implements Map, Cloneable, Serializable { } HashMap 클래스의 내부는 위와 같은 상속, 구현 관계를 가지고 있습니다. 이제 본격적으로 HashMap에 대해서 정리를 해보겠습니다. HashMap은 왜 필요한가? list 형태를 사용하지 않고 HashMap을 사용하는 이유는 성능 때문입니다. 만약에 HashMap을 사용하지 않고 list를 ..
-
개발자를 꿈꾸는 대학생의 2020년 회고Retrospect 2021. 1. 3. 03:35
회고를 처음 써보기에 어떻게 쓸까, 언제부터 회고를 해볼까란 생각이 듭니다. 주 내용은 2020년의 회고이지만, 2016년 부터 회고를 하면서 시작해볼까 합니다. 대학교에 입학하다.(16년 - 1학기) 고3 ~ 재수를 하는 기간에 나름 공부를 열심히(?) 했지만 입시에 실패했습니다. 공부를 안하고 결과가 좋지 않았다면 그러려니 했겠지만, 나름 공부를 열심히 했다고 생각했는데 결과가 공부를 안한 사람과 거의 같은 수준이었습니다. (그래서 엄청나게 자존감도 떨어지고 속상했던 기억이 납니다. 하는 척만 했나....) 다시 수능을 봐야하나 생각을 하다가 저의 지식의 한계와 현실을 받아들이고 그냥 성적에 맞는 대학교를 가야겠다고 생각을 했습니다. 당시에는 학교의 이름만을 생각했기에 과는 많이 신경쓰지 않았습니다...
-
[Git] 브랜치 병합(Merge) & 충돌(Conflict) & 해결(Resolve)에 대하여Github/Git 2020. 11. 19. 19:56
브랜치 병합(Merge)란? merge 명령어를 사용하면 여러 개의 브랜치를 하나로 모을 수 있다. 예를들어, 아래 그림과 같이 master 브랜치에서 뻗어 나오는 bugfix 브랜치를 봐보자. 현재 상황은 master 브랜치에서 뻗어나온 bugfix 브랜치에서 X, Y 커밋을 한 상태이다. 여기서 Merge를 하면 위의 그림과 같이 두 개의 브랜치가 합쳐지게 된다. bugfix 브랜치를 master 브랜치로 병합할 때, master 브랜치의 상태가 bugfix 브랜치를 만들었을 때의 상태와 같다면 매우 쉽게 merge 할 수 있다. bugfix 브랜치는 master 브랜치의 이력을 모두 포함하고 있기 때문에, master 브랜치는 단순히 이동하기만 해도 bugfix 브랜치와 합쳐질 수 있다. 이와 같은..
-
[Git] gitignore란 무엇일까?Github/Git 2020. 11. 19. 17:15
Github에서 Repository를 보다보면 위와 같이 .gitignore 파일을 본적이 있을 것이다. 이번 글에서는 .gitignore가 어떤 역할을 하는지에 대해서 정리해보려 한다. .gitignore란? .gitignore파일이란 Git 버전 관리에서 제외할 파일 목록을 지정하는 파일이다. git으로 프로젝트를 관리할 때, 그 프로젝트 안의 특정파일들은 Git으로 관리할 필요가 없는 경우가 있다. 예를들면 NodeJS-Express로 개발할 때 npm module Java 컴파일된(.class) 파일 AWS 비밀 키, JWT 비밀 키 등등이 있다. npm 모듈은 용량이 크기도 하고, 프로젝트를 clone 받은 다음에 직접 npm install 해주는 것이 더 효율적이기 때문에 올리지 않는다. 그리..
-
[Git] pull과 fetch의 차이는 무엇일까?Github/Git 2020. 11. 19. 13:58
pull과 fetch의 차이는 무엇일까? git pull: git remote 명령을 통해 서로 연결된 원격 저장소의 최신 내용을 로컬 저장소로 가져오면서 병합한다. git push의 반대 성격이라 생각하면 된다. git fetch: 로컬 저장소와 원격 저장소의 변경 사항이 다를 때 이를 비교 대조하고 git merge 명령어와 함께 최신 데이터를 반영하거나 충돌 문제 등을 해결한다. 일반적으로 브랜치를 만들지 않고 혼자서만 작업하면서 Git과 Github를 사용한다면 pull과 fetch를 사용할 일이 거의 없을 것이다. 하지만 대체적으로 Git을 사용할 때는 같이 협업하는 사람과 같이 사용할 것이다. 협업을 하다 보면 내가 로컬에서 작업하고 있을 때, 같은 팀원이 원격 저장소에 먼저 변경 사항을 커밋..
-
[Git] remote: 로컬 저장소와 원격 저장소를 연결하기Github/Git 2020. 11. 19. 12:05
Github에 있는 원격 저장소를 로컬 PC에 다운을 받고 싶다면 git clone을 사용하면 된다. 그러면 만약 이미 작업을 하고 있는 로컬 저장소가 있고 이를 원격 저장소와 연결하고 싶다면 어떻게 해야할까? 빈 원격 저장소를 로컬 PC로 clone받고 기존에 작업한 코드 파일들을 다 옮긴 후에 push하는 방법도 있겠지만 상당히 번거로울 것 같다. 이러한 상황 때 사용하는 명령어가 git remote이다. 바로 어떻게 사용하는지 차근차근 알아보자. 먼저 Github에서 아래와 같이 레포지토리를 하나 만들어보자. 이번에는 실습을 위해서 위와 같이 Add a README.file을 체크해서 만들었다. (하지만 평상시에 레포지토리를 만들 때는 체크하고 만들지 않는 것을 추천한다. 이유는 아래에서 설명한다)..
-
[NodeJS] nodemailer 모듈을 이용하여 메일 전송하는 법Server/NodeJS 2020. 11. 2. 10:28
이번 글에서는 NodeJS - Express를 이용해서 메일 전송을 하는 법에 대해 정리해보려 한다. nodemailer는 node서버에서 메일을 보낼 수 있는 메일 전송 모듈인데 이것을 이용하려 한다. 프로젝트 세팅 Express 프로젝트이름 ex) Express NodeJS_mailer npm install npm install nodemailer (모듈 설치) 그러면 위와 같이 프로젝트 구조를 볼 수 있을 것이다. (config, mail.js는 필자가 만든 것이다.) 이제 config 폴더와 routes 아래에 mail.js를 만들어보자. 1. config/senderInfo.json 먼저 config 폴더 아래 json형태의 파일을 하나 만들어주자. 해당 파일에는 보내는 이메일, 비밀번호를 입력..
-
[NodeJS] Passport로 카카오 로그인 구현하기Server/NodeJS 2020. 10. 27. 22:36
이번 글에서는 Passport 모듈을 이용하여 카카오 로그인을 구현하는 것에 대해서 정리하려 합니다. 먼저 카카오 개발자 페이지로 먼저 들어가보겠습니다. 그리고 [내 어플리케이션]을 클릭해보겠습니다. 여기서 [애플리케이션 추가하기]를 클릭해서 하나 만들어보겠습니다. 이것을 만들면 REST API Key를 발급받을 수 있는데 이것이 있어야 카카오 로그인을 구현할 수 있습니다. 그러면 위와 같이 [앱 키]를 발급 받을 수 있습니다. 우리가 사용할 것은 [REST API 키] 이다. 그리고 나서 Redirect URI 등록을 해줘야 한다. 이유는 아래 코드를 보면서 설명하겠습니다. Redirect URI 등록 위와 같이 본인이 사용할 URI를 설정하면 되는데 필자는 [http://localhost:3000/a..