전체 글 10

[Spring] Failed to start bean 'subProtocolWebSocketHandler' 에러 해결

에러 발생 Spring에서 WebSocket을 이용해서 테스트 코드를 작성 하던 중 에러가 발생했다. org.springframework.context.ApplicationContextException: Failed to start bean 'subProtocolWebSocketHandler'; nested exception is java.lang.IllegalArgumentException: No handlers at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:181) ~[spring-context-5.3.9.jar:5.3.9] at org.springframewor..

Spring 2021.09.17

Spring Security를 이용한 암호화

글의 목적 Spring Security를 다루면서 양이 너무 방대해 제대로 이해하고 사용하기 위해서, 하나하나씩 뜯어가며 이해하고, 배운 내용을 공유하기 위해 작성된 글입니다. 이번 글은 Spring Secyrity의 암호화에 대에서 알아보도록 하겠습니다. 아직 학생이라 설명이 틀릴 수도 있고 설명이 부족할 수도 있으니 해당 부분은 댓글로 작성 부탁드립니다. Spring Security Spring Security는 인증과 권한 그리고 일반적인 공격으로부터의 보호를 제공하는 프레임워크입니다. Spring Security는 Spring 기반의 Application의 보안을 위한 실질적인 표준으로 사용됩니다. Spring Security 사용 Spring Boot에서 gradle파일에 Spring Secur..

Spring 2021.07.18

[Network] 내 PC를 서버로 만들기 4 - 사설(Private) IP와 공용(Public) IP

IPv4에는 특수한 용도로 사용되는 약속된 주소의 범위가 있습니다. 우리는 이를 통해서 Private Network와 Public Network를 구분할 수 있습니다. 사설(Private) IP Private Networkm는 외부에 노출되지 않은 네트워크를 말합니다. 주로 가정, 사무실, 기업 등에서 Private Network를 구축합니다. 사설 IP는 IETF에서 지정된 주소 범위에 따라 구분됩니다. A클래스 : 10.0.0.0 ~ 10.255.255.255. 맨 앞에 8비트를 제외한 나머지 24비트를 주소 할당에 사용 할 수 있습니다. B클래스 : 172.16.0.0 ~ 172.31.255.255.255. 맨 앞에 12비트를 제외한 나머지 20비트를 주소 할당에 사용 할 수 있습니다. C클래스 :..

Network 2021.06.21

[Network] 내 PC를 서버로 만들기 3 실습 - 주소지정

복습 지난 글에서는 서브넷 마스크를 이용해 IPv4주소를 네트워크 부분과 호스트 부분으로 구분 하는 것을 배웠습니다. 이번 시간에는 실제로 네트워크를 구분 해 보고 PC에 주소를 할당 한 뒤 서로에게 ping을 시도해 보겠습니다. 네트워크 토폴로지 아주 간단히 구현한 네트워크 토폴로지 입니다. Cisco에서 제공하는 Packet Tracer라는 프로그램을 사용 했습니다. 2대의 PC와 1대의 스위치(네트워크 2계층 장비. 3계층 역할까지 수행하는 MLS도 있음)가 있습니다. 네트워크 주소는 192.168.0.0 이 되고 서브넷 마스크는 255.255.255.0이고 /24로 표현 할 수도 있습니다. 지난 시간에 호스트 주소 범위내에서(0~255) 첫번째 주소, 마지막 주소는 각 네트워크 주소와 브로드 캐스..

Network 2021.04.14

[Network] 내 PC를 서버로 만들기 3 - Subnet Mask

복습 이전 글에서 IP에 대해서 배웠습니다. IP 주소는 주소 지정을 담당합니다. 그리고 주소 지정을 서브넷 마스크로 구역을 나눠서 할 수도 있습니다. 이번 글에선 서브넷 마스크를 이용해서 네트워크 주소와 호스트 주소를 구분하는 방법을 알아보겠습니다. IPv4 주소 항목 IPv4에는 주소를 지정하기 위한 항목들이 있습니다. 네트워크 주소 호스트 주소 서브넷 마스크 위 3가지 항목을 고려해 IPv4 주소를 할당 할 수 있습니다. 네트워크 주소 네트워크 주소는 IPv4 주소에서 내가 속한 구역을 나타냅니다. 아파트를 예로 들어보겠습니다. 우리집은 1303호 입니다. 그리고 아파트 단지에는 10개의 동이 있습니다. 그냥 우리집은 OO아파트 1303호야 하면 정확한 동을 모르기 때문에 찾아오기 힘듭니다. 그래서..

Network 2021.04.08

[Network] 내 PC를 서버로 만들기 2 - IP(Internet Protocol)

복습 전 시간에 저희는 "네트워크에는 네트워크 장치들이 있고 이를 노드라 부르고 이들은 매체를 이용해 서로 연결된다. 그리고 이들을 구분하기 위해서 IP를 사용한다"라고 배웠습니다. 이번 시간에는 IP에 대해서 알아보겠습니다. Internet Protocol 인터넷 프로토콜(IP, Internet Protocol)은 송신 측과 수신 측이 네트워크에서 정보를 주고받는 데 사용하느 정보 위주의 규약(Protocol)입니다. OSI 네트워크 계층에서 주소 지정과 패킷 분할 및 재조립 기능을 담당합니다. 여기서 IP가 OSI 7계층에서 어디에 속하는지 패킷을 어떻게 분할하고 재조립 하는지는 몰라도 됩니다. 저희는 IP가 주소 지정 기능을 담당한다는 것에 초점을 맞추겠습니다. IP version IP에는 대표적으..

Network 2021.04.04

[Network] 내 PC를 서버로 만들기 1 - 네트워크

이 글의 목표 이 글은 내 PC를 서버로 만들기 위해서 필요한 네트워크의 기본 지식을 쌓는 것에 초점을 두고 있습니다. 범위 서버를 만들기 위해서 필요한 지식까지만 이해 할 수 있게 적어 볼려 합니다. 범위는 아래와 같습니다. 1. 네트워크 2. IP(Internet Protocol) 3. 서브넷 마스크와 IP 주소 지정 방법 4. Private IP, Public IP 5. TCP와 UDP 6. 포트포워딩 글 포스팅이 끝나면 읽은 분 모두 포트포워딩을 설정하기 위해 기본 개념을 이해하고 본인이 원하는 대로 설정 하실 수 있을 것입니다. 네트워크? 네트워크란 "분산되어 있는 여러대의 컴퓨터를 통신말을 이용해서 연결 한 것"을 말합니다. 인터넷에 접속해서 웹 서핑을하고, 친구와 카톡을 주고 받고, 영화를 ..

Network 2021.04.03

[Socket] 공유기의 공인 IP와 포트 포워딩을 이용한 외부에서 접속하기(c++, 파이썬)

오늘 교수님에게 "서버에 접속할 때 공인 IP를 이용해서 접속을 하고싶다."라고 질문을 드렸다. 교수님의 대답은 "공유기 공인 IP를 가져와서 공유기에 포트 포워딩을 해봐"라고 알려주셨다. CCNA를 배우면서 포트 포워딩에 대한 개념은 어느정도 알고있었다. 그래서 저녁먹고 바로 시도를 해봤다. 소켓을 제대로 배운적도 없고 인터넷에 있는 소스를 주워와서 리팩토링해서 구현중이라 아직 모르는 부분이 많았다. 아직 많이 모르는 내 생각엔 "음... 일단 서버에서 IP랑 포트 설정하고 클라이언트도 IP, 포트 설정하고 공유기 관리자 열어서 지금 PC로 내가 설정해준 포트 들어오도록 설정해주면 되겠지.."라 생각하고 작업을 시작했다. 일단 처음 공유기의 공인 IP는 "ipconfig.co.kr"을 웹 브라우저 창에..

Socket 2020.06.04

<Baekjoon> 알고리즘 2920번 음계 문제

문제 다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다. 1부터 8까지 차례대로 연주한다면 ascending, 8부터 1까지 차례대로 연주한다면 descending, 둘 다 아니라면 mixed 이다. 연주한 순서가 주어졌을 때, 이것이 ascending인지, descending인지, 아니면 mixed인지 판별하는 프로그램을 작성하시오. a = list(map(int, input().split(' '))) if(a[0] == 1): count = 1 for num in a: if(num == count): count += 1 if(num == 8): print("ascendi..

Android Studio에서 DialogFragment.show() 호출시 Can not perform this action after onSaveInstanceState 에러 with Kotiln

MainActivity에서 DialogFragment를 상속받은 DectionChooser라는 클래스를 만들고 DetectionChooser().show(supportFragmentManager, "") 라고 호출 했더니 IllegalStateException: Can not perform this action after onSaveInstanceState 라는 에러가 발생했다. 전에도 이와 비슷한 에러가 발생한 적이 있는데 dismiss()를 호출하니까 같은 에러가 발생했었다. 이때는 구글링 해보니 dismissAllowingStateLoss()라는 함수를 호출해주면 간단히 해결 되었다. 그래서 showAllowingStateLoss()라는 함수가 있을꺼 같아서 찾아보니 없다. 그래서 구글링을 하다가 ..