- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- suspend
- posting
- Kotlin
- 진짜학습지후기
- 책추천
- n3문법
- CustomTab
- Android
- androidstudio
- 진짜학습지
- rxjava
- errorhandling
- 인공지능
- 학습지
- jlpt
- PR
- pullrequest
- coroutine
- ai
- webflux
- 일본어문법
- 진짜일본어
- 안드로이드
- github
- 코틀린
- 책리뷰
- GIT
- KotlinInAction
- 일본어기초
- blog
목록기본기 채우기 (13)
코딩하는 개굴이
로그인/로그아웃을 구현할 때, 서버에서는 어떤 방식으로 이를 개발할까? 크게 세션 기반과 토큰 기반 방식으로 나뉘는데, 어 세션 기반 인증 서버가 클라이언트의 세션 정보를 저장하고 있는 stateful 한 방식으로, 서버가 클라이언트의 세션 정보를 기억하고 있다가 처리한다. 사용자가 POST /api/v1/users/signin 을 통해 로그인을 하게 되면 사용자의 정보를 검증한 후 서버에서는 세션 id 를 발급해주며 이 JSESSIONID 를 브라우저의 쿠키에 저장한다. 브라우저는 모든 요청마다 쿠키에 있는 세션 id 를 포함하고 서버는 세션 id 로 유저 정보를 세션 스토리지에서 조회한다. 일반적으로 서버 메모리 db 등을 사용해 세션을 저장한다. 세션을 만료 시켜서, 클라이언트의 권한을 즉각 회수 ..
코드 리뷰는 소프트웨어 개발 시 개발자에겐 매우 중요한 단계이다. 품질 향상과 버그 예방을 위해 개발자들이 코드를 검토하고 피드백을 주고 받는 과정이기에 항상 신중하고 공들여야하기도 하다. 그러나 이러한 코드 리뷰는 많은 시간과 노력을 필요로 하고 텍스트만으로 의사를 전달해야하기 때문에 효율적인 의사소통이 필요하다. 이를 위해 개발자들은 줄임말을 사용하곤하는데, 코드 리뷰 시 자주 사용되는 줄임말들을 정리해보자. NIT (Need Improvement or Suggestion): 개선이 필요한 부분이나 제안할 사항을 말한다. 주로 작은 스타일 또는 코드 품질 관련 문제에 대해 사용된다. DITTO (The Same as Before): 이전에 언급한 내용과 동일하다는 의미로 사용된다. 이전 피드백과 동일..
스스로 정리하고자 글을 작성하는데 어떤 프로그램을 사용하는지는 자유이다. 본인의 경우는 Notion 을 사용하는데, 다양하게 템플릿을 제공하고 보기 편하며 약간의 지불로 무제한 이용이 가능한 스페이스가 주어짐이 이유였다.그리고, 이렇게 작성된 글을 주로 Tistory 에 올려 포스팅하여 공유하곤하는데, 이런 과정에서 큰 불편함이 있다. 바로 Notion 과 Tistory 는 상호 호환이 좋지 않다는 것이다. 😭 Notion 에서 글을 작성하고 Tistory 로 붙여넣기를 한다면 형태가 그대로 유지되지 않고 특히 이미지가 들어가지 않는 문제가 있다.한두개의 이미지는 참고 붙여넣을 수는 있으나, 2-3개가 넘어가면 일일이 파일로 저장하고 붙여넣고 수정하는데 매우 큰 불편함이 느껴지기 마련이다. 이럴때, No..
컴퓨터를 새로 사거나, 이직을 하거나 환경이 변하였을 경우 편리하게 세팅되었던 모든 것을 처음부터 다시 해야하는 설렘과 귀찮음이 함께 오게된다. 본인의 경우 이직으로 새로운 맥북 세팅을 하며 새로이 이전에 설치한 것들과, 개발 시 도움이 되는 플러그인/프로그램들을 차근히 정리하여 차후에 새로 있을 환경 변화에 빠르게 적응할 수 있도록 하려한다. 아래 내용은 도움이 되는 새로운 프로그램들이 생길 경우 지속적으로 업데이트 하고 있음을 알립니다. 문서 정리 문서 정리 혹은 메모는 기본적으로 깔려있는 메모장/메모 앱을 사용할 수도 있지만, 본인의 경우 자주 사용하는 Notion 과 차후 포스팅할 Tistory 에 맞춰 마크다운 혹은 html 로 작성할 경우 등이 있다. 또한, 기본 앱에서 제공하지 않는 Head..
개발자라면 위의 짤을 한번씩은 본 적이 있을 것이다. 이름 짓기란 제일 힘들고 많이 시간을 소요하는 의도치 않은 부분이기도 하다. 본인은 실제로 현업에서 함께 사용하는 식별자의 네이밍에 대해 3시간 이상도 논의해본 적이 있다. 대체 네이밍은 왜 이렇게 시간을 잡아먹고 이렇게 중요한 것일까? 해당 내용은 Udemy의 '개발자 영어' 강의를 기반으로 작성되었습니다. 식별자 이름 식별자 종류 : 타입, 변수, 메서드, 함수, 모듈, 라이브러리, 네임스페이스 등이 존재한다. 이름의 중요성 이름은 코드 기반의 상당한 부분을 차지 코드 리뷰 시 지적되는 사항의 약 25%가 식별자 이름 이름은 표식이자 이해에 도움을 주는 일종의 문서 역할을 수행 프로그램 개발 초기에 만들어진 식별자의 품질이 계속 유지될 가능성이 큼..
자료 구조에서 많이 쓰이는 Map, Set, List 에 대해서 헷갈리는 Map-HashMap, Set-HashSet, List-ArrayList 간의 관계의 개념을 정리해보고자 한다. Map과 HashMap의 관계 Map은 key-value 형태를 가지는 자료형의 인터페이스로 value의 중복을 허용한다. HashMap, SortedMap 등이 해당 인터페이스를 구현한 예시이다. HashMap은 HashTable을 사용하고, Hash 알고리즘을 이용해 검색 속도가 매우 빠르다. key-value 를 묶어 하나의 table의 entry로 저장한다. TreeMap은 key-value를 한쌍으로 데이터를 구성해 이진 검색 트리의 형태로 저장한다. (정확히는 Red-Black Tree로 이진 검색 트리의 향상..
JWT 토큰 인증이란? JWT 토큰 인증은 유저를 인증/식별하기 위한 토큰 기반 인증으로, 토큰은 세션과 달리 서버가 아닌 클라이언트에 저장되어 메모리나 스토리지 등으로 세션을 관리했던 서버의 부담을 덜 수 있다. 토큰 자체에는 사용자의 권한 정보나 서비스를 사용하기 위한 정보가 포함된다. 데이터가 많아지면 토큰이 커질 수 있으며 토큰이 한 번 발급 된 이후 사용자의 정보를 바꾸더라도 토큰을 재발급하지 않는 이상 반영되지 않는다. JWT를 사용하면 RESTful 과 같은 무상태(Stateless)인 환경에서 사용자 데이터를 주고 받을 수 있게 된다. 세션을 사용하게 될 경우 서버에 세션을 저장하였지만 JWT와 같은 토큰을 클라이언트에 저장하고 요청 시 단순히 HTTP 헤더에 토큰을 첨부하는 것으로 단순하..
전략 패턴 전략 패턴은 전략에 일을 수행하는 방법이 여러가지일 때, 각 방법들을 추상화/캡슐화하고 로직을 사용하는 곳에서는 추상된 인터페이스만 사용함으로써 코드는 바뀌지 않지만 사용하는 곳마다 알고리즘은 바뀔 수 있게끔 하는 패턴이다. 예시로는 java 에서 자주 보이는 comparator를 들 수 있다. comparator 인터페이스 sort 시 비교하는 방법이 여러가지가 될 수 있으므로, comparator 가 직접 수행하는 로직은 추상화/캡슐화하고 사용하는 곳에서 추상된 인터페이스를 사용하면서 로직을 부분적으로 변경하는 방식 (ex. a 와 b를 비교 시, a 가 더 크다고 하고 싶다.) 이 인터페이스를 사용해서 원하는 비교 로직을 만들 수 있도록 하는 것이 concrete 한 stratagy를 만..
해당 내용은 Inflearn 의 코딩으로 학습하는 GoF의 디자인 패턴 강좌를 기반으로 정리되었음을 알립니다. 해당 내용은 주로 JAVA 기반으로 코드 설명이 진행됨을 알립니다. 행동 관련 디자인 패턴 Observer Pattern (옵저버 디자인 패턴) 다수의 객체가 특정 객체의 상태 변화를 감지하고 알림을 받는 패턴이다. Observer Pattern 은 아래 형태로 구현한다. Subject는 여러 옵저버들을 등록하거나 해지할 수 있는 기능을 수행한다. Cleint는 Subject를 이용해 여러 Observer를 등록하고, Subject가 제공하는 여러 메서드를 이용해 Subject의 상태들을 변경할 수 있다. 이때, Subject 는 자신에게 등록되어있는 모든 Observer들을 순회하며 옵저버가 ..
해당 내용은 Inflearn 의 코딩으로 학습하는 GoF의 디자인 패턴 강좌를 기반으로 정리되었음을 알립니다. 해당 내용은 주로 JAVA 기반으로 코드 설명이 진행됨을 알립니다. 객체 생성 관련 디자인 패턴 팩토리 메서드 패턴 어떤 객체를 생성하는 책임을 구체적인 클래스가 아니라 추상적인 인터페이스의 메서드로 감싸는 디자인 패턴이다. 만일 특정 클래스에서 모든 것을 구현한다면 로그를 보는 등으로 절차를 따라가야만하고, 로직이 복잡해진다. 또한, 만일 특정 클래스에서 모든 것을 구현할 경우, 확장을 위해서는 기존 코드의 변경이 불가피한 구조가 될 수 있다. 예를들어, Cat 이라는 클래스 하나에서 생성자 등의 분기로 KoreanCat, BritishCat 이라는 두 종류를 받는다고 한다면, 분기하며 구현되..