Translate

2022년 9월 4일 일요일

[Linux] MTU 값에 따른 Apache <=> Tomcat 통신 불량 이슈 (mtu9000)


최근에 기이한 경험을 하게 되었다.
잘 되고 있던 서버에서 갑자기 웹페이지가 뜨지 않는다는 이슈였다.

브라우저 개발자도구를 통해 확인해보니 <head> 영역에 있는 특정 css 파일이 로드가 되지 않았다.
하지만 개발하던 담당자의 PC에서는 정상적으로 보였는데 알아보니 WAS로 바로 붙으면 문제가 없지만 Apache를 통해서 웹 접근 시 특정 파일이 로드가 되지 않았다.


증상

1. 브라우저에서 Tomcat 에 직접 접속할 시 이슈 없음

2. 브라우저에서 Apache를 통해 접속 시 특정 파일(css)이 로딩이 되지 않음



환경 및 구성

- 네이버 클라우드 서버를 사용 (Linux)

- WEB1, WEB2 <=> WAS1, WAS2 구성


1004lucifer

원인 분석 및 해결

1. Apache, Tomcat 설정에 별다른 문제가 없음

2. 별다른 서버 설정 없이 이슈가 발생함.

3. WAS 에서 localhost 로 telnet 을 통해 해당 css 파일 정상적으로 로딩됨.

4. Apache 서버에서 WAS 서버로 telnet을 통해 해당 css 파일 요청 시 응답이 받다가 중간에 끊김.

5. 어플리케이션을 통한 요청이 아니라 OS 명령어인 telnet 을 통해서 테스트를 했기에 OS 또는 네트워크의 이슈라고 추측함.

6. 인프라 및 네트워크 담당자 원인분석 중 사내 OS셋팅 정책이 mtu1500 인데 해당 서버에서는 mtu9000 으로 되어있는 것을 확인

7. 모든 서버의 mtu값을 1500으로 변경 및 OS 재기동 후 Apache 서버에서 WAS 서버로 telnet으로 HTTP 요청 시 정상적으로 응답 하는 것을 확인 (이슈 해결)



결론

1. 갑작스럽게 발생한 이슈이다보니 네이버클라우드에서 VM관련이나 네트워크와 같은 어떠한 작업이 수행한 이후에 이와 같은 이슈가 발생했다고 추측이됨.


2022년 7월 3일 일요일

[IntelliJ] 30일 무료 사용 버전 (오프라인 환경)



IntelliJ가 어느순간부터 인터넷에 연결이 안되면 30일 무료사용을 할 수 없게 변경이 되었다.


오프라인에서 30일 무료로 사용이 가능한 버전은 2021.1 (2021.1.3) 버전이다.
(윈도우 버전 기준)


위 버전을 다운로드 받아서 인터넷이 안되는 PC에서 30일 Trial 기능을 이용하면 된다.


최신버전이 아닌 이전버전의 IntelliJ를 다운받으려면 아래의 링크로 이동하면 된다.
 - https://www.jetbrains.com/idea/download/other.html


PS.
30일 Trial 버전 외에도 idea.key파일을 이용해 인텔리제이 정품인증을 받을 수 있었지만..
현재 최신버전 (2022.1.3) 에서 key 파일을 이용해 정품인증을 받았더라도 JetBrains Account에 로그인을 하지 않으면 인증파일이 없어지면서 인증이 풀리는 증상이 발생하게 되었다.

결국 예전과 같이 원래 가지고 있는 라이선스를 이용하여(idea.key) 오프라인에서 작업하려 할 시 앞으로는 그냥 위 2021.1.3 버전으로 작업을 하려 한다.


2022년 2월 6일 일요일

[Windows] 윈도우 10 자동로그인 설정 (레지스트리 수정 X)

 


최근 Windows 10 자동로그인을 두어번정도 설정을 하게 되었는데 굉장히 편리한 방법이 있어서 이렇게 블로그에 정리를 한다.


대부분의 블로그에서 설명하는 방법은 사용자계정(netplwiz) 을 열어서 사용자 이름과 암호를 입력해야 이 컴퓨터를 사용할 수 있음 항목에 체크하는 방법으로 알려주고있고, 해당 항목이 없는경우 레지스트리를 수정하는 방법으로 알려주고 있다.

나도 얼마전까지 위와 같은 방법으로 하다가 오늘 해당 방법을 다시 찾기위해 검색하던 중 엄청나게 쉬운 방법이 있는걸 알게되어 기록을 남긴다.


방법

1. Autologin 프로그램 다운로드

  - 공식 링크: https://docs.microsoft.com/ko-kr/sysinternals/downloads/autologon

  - 개인저장소: https://www.mediafire.com/file/0vgofsk7fbj5qov/AutoLogon_v3.10.zip/file

1004lucifer

2. Autologin 압축 풀기 및 실행


3. 윈도우 패스워드 입력 후 Enable 버튼 선택



PS.

Autologin 프로그램 다운로드 링크 주소를 보면 알겠지만 마이크로 소프트에서 공식적으로 제공하는 툴이며 안심하고 사용할 수 있다.

Microsoft 공식 문서 Windows에서 자동 로그온을 설정하는 방법(링크) 에서도 해당 프로그램에 대한 언급이 나와 있다.



참고

 - https://coolenjoy.net/bbs/37/229554

 - https://docs.microsoft.com/ko-kr/troubleshoot/windows-server/user-profiles-and-logon/turn-on-automatic-logon

 - https://docs.microsoft.com/ko-kr/sysinternals/downloads/autologon


2022년 1월 16일 일요일

[React] 하위 컴포넌트 함수 실행하기 (Using Redux connect)



환경

 - 언어: TypeScript

 - 기타: Redux connect 를 사용하는 상황



방법

 - GitHub 예제소스: https://github.com/1004lucifer/Test-JavaScript/tree/master/React/typescript-call-child-method-using-redux-connect

 - 데모 페이지: https://1004lucifer.github.io/Test-JavaScript/React/typescript-call-child-method-using-redux-connect/build/index.html


동작 화면



App.tsx (메인 컴포넌트)


AppSubNormal.tsx (일반 하위컴포넌트)


AppSubChanged.tsx (부모 컴포넌트에서 사용 가능하도록 수정)




참고
 - https://ko.reactjs.org/docs/forwarding-refs.html
 - https://ko.reactjs.org/docs/hooks-reference.html
 - https://stackoverflow.com/questions/55180124/forwarding-ref-in-a-functional-component-with-react-redux-v-6-0-1


2022년 1월 15일 토요일

[IntelliJ] src/main/java 디렉토리 하위 java 외 다른 파일(xml, png, ttf등) 빌드 안되는 이슈 해결방법

 



이슈

 - src/main/java 디렉토리 하위의 소스에 TTF 폰트파일과 png 파일이 있는 경우가 있었는데..
   다른 이클립스 사용하는 분들은 별 문제가 없어보였지만 IntelliJ를 사용하는 나는 해당 파일이 classes 디렉토리로 빌드가 되지 않아서 한동안 resources 디렉토리로 해당 경로와 동일하게 디렉토리를 만든 후 복사해서 사용하고 있었다.


알고보니 일반적으로 많이 사용하는 java, kt(코틀린) 과 같은 개발언어 파일만 빌드 시 classes 디렉토리에 들어가는 설정이 있었다.

설정위치와 방법은 아래와 같다.
 - Settings => Build, Execution, Deployment => Compiler

!?*.확장자명   <= 구분자(;) 를 확장자 패턴 사이에 넣어줘야 한다.






참고
 - https://www.jetbrains.com/help/idea/resource-files.html


[JavaScript] iframe 뒤로가기 (history back) 이슈 원인과 해결방법

 

본문에 iframe 이 들어가는 상황에서 뒤로가기가 예상했던 동작대로 작동하지 않아 알아봤는데..

stackoverflow를 포함한 다른 많은 글을 읽어보았지만 원하는 방법을 보지 못하고 어떻게 할지 여러가지 방법으로 고민하고 연구한 방법에 대해서 기술을 해본다.


테스트 크롬 버전: 94, 96


이슈


 1. iframe 내에서 자동으로 여러 페이지로 리다이렉트 되거나 사용자의 액션으로 여러페이지 이동 시 history 에 해당 페이지들이 스택으로 쌓이게 된다.
 2. 특히나 컨텐츠가 iframe 하나가 아니라 여러개를 보여줘야 할 수도 있다.

 PS.
  - 페이지 이동이 없는 단일 페이지만 iframe 내에서 보여지는 거라면 크게 문제되지 않는다.



여러가지 방법으로 테스트를 해봤을 때 다음과 같은 결론과 방법을 찾았다.

1004lucifer

뒤로가기 (Alt + ←) 는 현재로써는 완벽하게 커버 가능하지 않다.

history.back 또는 history.go 수행시 발생하는 popstate 이벤트(링크)를 통해 현재 화면에 iframe이 있는지 확인하고 iframe의 주소가 현재 사이트와 다른경우 계속해서 history.back()을 하려 했는데..

브라우저의 뒤로가기 버튼을 누르거나 뒤로가기 단축키를 이용 시 iframe 내부에서 이전페이지로 호출을 하는바람에 내가 개발하는 페이지에서 popstate 이벤트가 발생하지 않았다.
(iframe 내부에서 여러페이지 이동 없이 하나의 단일페이지만 있는경우는 문제가 없다.)

(뒤로가기 수행 시) 이벤트가 발생해야 뭐라도 처리를 할텐데 이벤트가 발생하지 않아 스크립트로 컨트롤 자체를 할수가 없었다.



사용자의 액션이 있는경우 뒤로가기 수행이 가능한다.

(하지만 F5를 눌러서 새로고침 하는경우 여전히 이슈가 있다.)

GitHub 예제소스: https://github.com/1004lucifer/Test-JavaScript/tree/master/Vanilla/TroubleShooting/history-back-page-with-iframe

데모 페이지: https://1004lucifer.github.io/Test-JavaScript/Vanilla/TroubleShooting/history-back-page-with-iframe/outerFirst.html



여기에는 두가지 단점이 있다.


 1. (스크립트를 수행하기 위해) 사용자가 특정 버튼을 누르는것과 같이 어떠한 액션이 있어야 한다.
 2. iframe이 있는 컨텐츠 모습에서 F5 와 같이 새로고침을 하게되는경우 history 스택에 쌓인 내용이 없어지지 않아 history 스택에 중복 데이터가 쌓이게 된다.
    따라서 위 스크립트를 수행 시 이전에 쌓인 history 스택 때문에 정상적으로 동작하지 않는다.

1004lucifer

위와같은 단점이 있지만..
Angular / Vue / React 와 같은 SPA 사이트에서는 그나마 사용할 수 있는 가장 나은 방법이 아닐까 싶다.