전체 글 (53) 썸네일형 리스트형 Jwt Token 저장소에 대해 프로젝트를 진행하면서, JWT 토큰을 이용하여 로그인단을 구현하는 일이 대부분이었다. 그 때마다 공통적으로 나오는 질문이 있었는데, "토큰은 어디에 저장하는게 좋을까?"였다. 찾아보니, Local/Session Storage와 Cookie에 저장하는 2가지 방법이 존재했다. 두 가지 모두 Session저장소처럼 사용자의 인증 상태를 별도 저장소로 유지할 필요가 없는 무상태성을 띔 당시에는 모두가 Cookie를 사용했기 때문에 의식없이 이를 사용했지만, 그 이유를 알아봐야할 것 같아 포스트를 작성하게 됐다. Web Storage web storage 는 HTML5 부터 지원되는 기술로 클라이언트(브라우저)에 데이터를 저장할 수 있는 방법이다. Local/Session Storage가 있는데, Session.. 네트워크 구성요소 1. 네트워크 인터페이스 카드(=랜카드) - 2계층 장비 - 컴퓨터를 네트워크에 연결하기 위한 하드웨어 장비 - 직렬화 : 전기적 신호 -> 데이터 신호(패킷) / 데이터 신호(패킷) -> 전기적 신호로 상호변환 패킷: 데이터 전송단위 - NIC는 MAC주소를 갖고 있다. 따라서, 받은 패킷의 도착지 주소 =/ NIC의 MAC주소이면, 패킷을 폐기하고 맞으면 이를 CPU에 전송 MAC 주소 : 네트워크 하드웨어마다 하나씩 할당 된 물리적 주소로 유일해야하지만, 최근에는 변경이 가능하다 - 흐름 제어 : 데이터를 받지 못할 때, 통신 중지 요청을 할 수 있음 - 네트워크 하드웨어를 식별하는 주소 2. 허브 - 1계층 장비 - 거리가 멀수록 줄어드는 전기 신호를 재생성 - 여러 대의 장비를 연결 - 들어온 .. Docker에 대한 고찰 처음에는 SpringBoot의 Docker Image를 생성하고 내 세컨컴에서 Image를 pull 받아 springboot이미지의 개발환경 위에서 개발을 진행하려는 생각이었다. (즉, 가상환경이라고 생각하고 있었던것 같다...) 하지만, 이미지를 pull 받아 실행해보니.. 기존 소스코드를 바탕으로 돌아가는 것이었다.... (gradlew build를 해서 jar만든게 돌아가고 있었던 것...) 이걸 보고 혼란이 왔다... "docker가 개발환경을 설치해주는 것이 아니었나..? 나는 그래서 그 위에서 작업하려고 했는데.. 이러면 코드 수정을 못하는데...?"라고... 그래서 지인과 이 현상에 대해 토론을 했다. (지인이 나를 이해시켜주려 2시간동안 노력한건가,,,) 여튼 그래서 얻게 된 건 sprin.. 네트워크 (프로토콜 / OSI 7계층) #1 프로토콜 - 네트워크 통신 시, 필요한 규약 - 물리적 측면 : 데이터를 전송하는 매체 (이더넷) - 논리적 측면 : 장치간 통신을 위한 규격 (TCP/IP, SMTP, HTTP) #2 OSI 7계층 현재는 TCP/IP 프로토콜 스택 (4계층)을 사용하지만, OSI 7계층 자체는 네트워크의 주요 레퍼런스 모델이다. #2.1 물리(피지컬) 계층 - 전기신호를 장비가 전달 받으면, 전기신호를 재생성하여 내보냄 - 주소가 없다. 따라서, 신호가 들어온 port를 제외한 모든 포트에 전기신호를 전달한다. - 구성 요소 - #2.2 데이터 링크 계층 - 물리계층으로부터 전달받은 전기신호를 알아볼 수 있는 데이터로 변환한다. - 주소 정보를 정의하고 정확한 주소로 통신한다. - 구성 요소 : 네트워크 인터페이.. 카카오 2021 신입 공채 순위 검색 문제풀이 Java 틀린코드 PowerSet(틀림) 과 DFS(맞음)로 info의 set들을 구한 것의 차이도 잘 모르겠고..... info의 HashMap을 나는 가지고 올때마다 Sorting해주려고 했는데, 한번에 해주는게 시간이 더 적게 걸렸다...왜지...? import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; public class kakao_2021_순위검색3 { static HashMap hm; static String[] lst; static int cnt; static int[] answer; public static void main(String[] args) {.. CPU 실행시간 하드웨어 이벤트가 발생하는 시점을 결정하는 클럭을 이용하여 성능의 척도가 만들어짐 클럭 사이클 = 클럭의 시간간격 클럭 주기 = 한 클럭 사이클에 걸리는 시간 클럭 속도 = 1 / 클럭주기 궁극적인 CPU의 성능 척도는 CPU의 실행시간이다. CPU 실행 시간 = CPU 클럭 사이클 수 * 클럭 사이클 시간 = CPU 클럭 사이클 수 * ( 1 / 클럭속도) (CPU 클럭 사이클 수 = 명령어 수 * 명령어 당 평균 클럭 사이클 수(=CPI)) Docker (SpringBoot, MariaDB 연결) 프로젝트를 진행하면서, docker를 사용해 mariadb의 이미지를 내려받아 사용했었습니다. 하지만, 왜 사용하는지 몰랐고, 이제와서 봐도 당시에는 사용할 이유가 없었다고 생각이 됩니다.... (아,팀원들 간 mariadb의 버전 맞춰준거....? 그게 좋았으려나.... 흠...글쎄...) 여튼, 그래서 이번에는 저의 데스크탑의 로컬환경에서 진행하고 있는 프로젝트의 개발환경들을 이미지로 만들고 그것들을 노트북에 내려받아 진행해볼 생각입니다! 아마, 이게 도커의 장점이라고 판단이 되었습니다...! 어디서든 편리한 개발 환경....?! 1. SpringBoot 개발 환경을 Docker에,, 1-1 ) SpringBoot Build 과정 ./gradlew build 먼저 springboot 프로젝트를 bui.. 프로젝트를 진행하면서 ... 정리 1. 라이브러리 버전에 관해 이전에 Gson을 사용하여 Json을 파싱하였다. 이번에 같은 기능이 필요해서 Gson을 다시 사용하려했지만 Maven이 아닌 Gradle이기 때문에 새로 dependency를 찾아넣어줘야했다. 이 과정에서 무의식적으로 최신 버전의 Gson을 적용했더니 계속 오류가났다... Gson API에 들어가보니, 사용하려는 method가 deprecated되어 사용할수가없었다... 이 과정에서 그냥 이전 버전을 사용하면 되는건데 그걸 생각하지 못하고 다른 방법을 사용하느라 시간을 너무 많이 소비해버렸다... => 결론 : 버전이 높다고 좋은것도 아니고, 내가 진행하는 프로젝트에 맞게 사용해야한다. (나중에 유지보수할 때 유의해야할 듯) 2. 21년 02월 12일 기준 Vue3에서 Bo.. 이전 1 2 3 4 5 6 7 다음