유럽연합(EU:European Union)  관세법전 영문본 입니다. 

저장용으로 보관중입니다. 

유럽연합_관세법전_영문본.pdf
1.94MB

노트패드++는 프랑스에 살고 있는 Don Ho라는 사람이 만든 텍스트 Editor로서 많은 기능이 추가된 메모장이라고 할 수 있습니다.

 

단순한 텍스트형 문서 작성이 가능하며, 여러 개의 파일을 한번에 열어두고 분할 화면으로 비교하며 볼 수도 있으며 문서의 일부 내용을 검색하고 변경할 수도 있습니다. 

 

무엇보다 노트패드++는 무엇보다, 프로그래밍 작업에 활용도가 높습니다. C, C++, C#, CSS, HTML, JAVA, MS-DOS, R, SQL, XML, 비주얼 베이직, 파이썬 등의 언어가 지원되며 플러그인을 설치할 시 여러가지 기능을 추가 이용할 수도 있습니다.

 

다운로드 Link

 

 

Downloads | Notepad++

 

notepad-plus-plus.org

 

 

'Tools > Etc' 카테고리의 다른 글

CHAT GPT 사용 가이드 #2  (0) 2023.02.27
chatGPT 사용법 #1  (0) 2023.02.24
[PPT] 쓸만한 디자인 레이아웃  (0) 2018.07.16
SAP JCO Jar File  (4) 2018.01.03
[용어사전]- 행정표준용어현황  (0) 2018.01.03

RCEP (Regional Comprehensive Economic Partnership) : 역내포괄적경제동반자협정

회원국 : ASEAN 10개국(브루나이, 캄보디아, 인도네시아, 라오스, 말레이시아, 미얀마, 필리핀, 싱가포르, 태국, 베트남), 한국, 중국, 일본, 호주, 뉴질랜드

 

RCEP 경제규모

(경제규모) ‘12년 기준 21조 1,887억 달러(전세계 29.5% 차지)
(수출입) ‘12년 기준 수출 5조 2,361억 달러, 수입 5조 2,335억 달러
‘92~’12 간 연평균 약 10% 증가
(해외직접투자) RCEP 역내로 유입된 FDI는 ‘12년 기준 3조 4,23억 달러로 증가 추세

 

관련 자료

일본세관 RCEP설명회 자료.pdf
3.53MB
RCEP_원산지증명서의 서식.pdf
0.09MB

'F.T.A' 카테고리의 다른 글

유럽연합(EU:European Union) 관세법전 영문본  (0) 2022.03.25
FTA 원산지 규정의 개념 #2  (0) 2020.08.14
FTA 원산지 규정의 개념 #1  (0) 2020.08.14
FTA 혜택을 받기 위한 원칙  (0) 2020.03.16
FTA란?(Free Trade Agreement)  (0) 2020.03.16

MS SQL에서 데이터를 편집할 때 스크립트를 작성하지 않고 편리하게 수정하는 방법으로 아래 그림과 같은 기능을 사용합니다.

 

하지만 데이터가 많을 경우 내가 찾는 데이터가 상위 200개안에 없을 경우 조건을 부여하여 해당 데이터를 편집하는 방법을 설명하겠습니다. 

 

상위 200개 행 편집을 클릭할 경우 아래 그림과 같이 상위 200개에 대해서 데이터가 조회됩니다.

 

조회된 데이터에 우클릭하여 팝업메뉴를 통해 데이터에 조건을 추가할 수 있습니다. 

 

아래 그림과 같이 필터 항목에 원하는 조건 값을 넣고 ctrl + R을 눌러 특정 데이터만 조회 및 편집할 수 있습니다. 

 

위의 기능으로 제공하는 조건은 모두 or 조건이기 때문에 SQL 문을 작성하여 편집할 데이터를 조회하는 방법도 있습니다. 

제목: Internet Explorer 11 데스크톱 애플리케이션 지원 종료 관련FAQ

오늘(5월 19일) Windows 10에서의 Internet Explorer (IE)는 Microsoft Edge로 통합된다고 발표했습니다. Microsoft Edge는 Internet Explorer보다 빠르고 안전하며 현대적인 웹 환경을 제공합니다. 또한 Internet Explorer 모드가있는 Microsoft Edge는 레거시 IE 기반 사이트 및 앱에 대한 기본 호환성을 제공하는 유일한 브라우저입니다. IE 모드가 포함 된 Microsoft Edge는 공식적으로 Windows 10의 Internet Explorer 11 데스크톱 애플리케이션을 대체합니다. Internet Explorer 11 데스크톱 애플리케이션은2022 년 6 월 15 일에 지원 종료됩니다. 전체 발표 내용을 읽으려면 블로그를 참조하십시오. IE 모드에 대해 자세히 알아 보려면 웹 페이지를 방문하십시오.

 

https://www.microsoft.com/ko-kr/edge/business/ie-mode

 

Edge IE(Internet Explorer) 모드 | Microsoft

Microsoft Edge IE 모드로 가치를 유지하고 호환성을 개선해 보세요. Microsoft Edge를 사용한 레거시 사이트 및 앱에 대한 지원이 어떠한 효과를 가져오는지 알아봅니다.

www.microsoft.com

 IE 11 데스크톱 애플리케이션이 종료되고 2022 년 6 월 15 일에 지원이 종료되면 어떤 플랫폼이 영향을 받습니까?

  (현재 발표시점 기준)

    • 반기 채널 (SAC- semi-annual channel)을 통해 제공되는 Internet Explorer 11 데스크톱 응용 프로그램:

         • Windows 10 desktop SKUs (20H2+)

         • Windows 10 IoT (20H2+)

    • 이 발표 당시 범위 외 (영향을 받지 않음):

         • Microsoft Edge의 Internet Explorer 모드
         • Internet Explorer 플랫폼 (MSHTML / Trident)

         • Internet Explorer 11 데스크톱 응용 프로그램:

             • Windows 8.1

             • Windows 7 ESU

             • Windows 10 Server SAC (all versions)

             • Windows 10 IoT LTSC (all versions)

             • Windows 10 Server LTSC (all versions)

             • Windows 10 client LTSC (all versions)

• Windows 10 LTSC 및 Server는 어떻습니까?

    • Windows 10 LTSC 및 서버는이 변경에 영향을 받지 않습니다. Microsoft Edge

 

• Microsoft Edge가 이미 설치되어 있으면 어떻게합니까?

    • 이미 Internet Explorer보다 빠르고 안전하며 최신 브라우저를 사용하고 있으며 마이그레이션에 도움이되는 몇 가지 단계를 완료했습니다. 다음 단계는 조직에 기존 브라우저 종속성이 있는지 확인하는 것입니다. Microsoft Edge에서 기존 브라우저 지원을 사용하려면 Internet Explorer 모드를 설정해야합니다. Internet Explorer mode webpage 에서 자세히 알아보고 Getting Started guide를 읽어보십시오.

 

• 이 발표는 우리 조직에 어떤 의미가 있습니까??

    • 조직에 IE11에 종속 된 레거시 앱 및 사이트가 있는 경우 Getting Started Guide에 따라 IE 모드 구성을 시작할 수 있습니다. 변화관리에 대해 우려가 있을 수 있는데, Internet Explorer Retirement Adoption Kit의 콘텐츠를 확인하여 조직의 사용자와 리더에게 예정된 변경 사항을 알리고 Microsoft Edge로 이동하는 데 도움을 받으십시오.

 

• 이 발표는 개발자에게 무엇을 의미합니까??

    • IE 용으로 개발 된 앱은 IE 모드를 통해 Microsoft Edge에서 작동해야합니다. 문제가 발생하면 App Assure팀(ACHELP@microsoft.com) 에 연락하여 문제 해결 지원을 요청하십시오.

    • 최신 웹 사이트 또는 응용 프로그램에서 작업하는 개발자의 경우 Internet Explorer를 최신 브라우저와 나란히 지원하는 것이 점점 더 어려워지고 있음을 알고 있습니다. 이 발표는 사용자를 Internet Explorer에서 최신 Microsoft Edge 브라우저로 이동하는 전환을 시작하지만 시간이 걸리므로 Internet Explorer에 대한 지원을 종료 할 계획을 개발하는 것이 좋습니다. Internet Explorer에서 Microsoft Edge로 사용자를 전환하기 위한 가이드 문서 (Moving users to Microsoft Edge from Internet Explorer article)를 확인하십시오.

 

• 이번 발표가 일반 소비자에게 의미하는 바는 무엇입니까??

    • Microsoft Edge는 Internet Explorer보다 빠르고 안전하며 최신 검색 환경을 제공하며 점점 더 많은 웹 사이트에서 더 이상 Internet Explorer를 지원하지 않습니다. Internet Explorer 데스크톱 응용 프로그램이 2022 년 6 월 15 일에 종료되면 지원이 종료됩니다. 이 날짜 이후에는 IE11 데스크톱 애플리케이션이 비활성화되고 사용자가 액세스를 시도하면 Microsoft Edge로 리디렉션됩니다. 사용자가 IE11이 필요한 웹 사이트를 발견하면 Edge에서 IE 모드에서 열어야 합니다. Microsoft Edge를 벗어나지 않고도 Internet Explorer가 필요한 웹 사이트를 열 수 있습니다. Microsoft Edge의 Internet Explorer 모드에 대해 자세히 알아보세요.

 

• MSHTML (Trident) 엔진이란 무엇입니까? IE 모드와 어떤 관련이 있습니까?

    • MSHTML (Trident) 엔진은 Internet Explorer 11의 기본 플랫폼입니다. 이것은 IE 모드에서 사용하는 것과 동일한 엔진이며 계속 지원 될 것입니다 (즉,이 발표의 영향을 받지 않음). MSHTML 플랫폼에 의존하는 사용자 지정 또는 타사 앱이있는 경우 계속 작동 할 것으로 예상 할 수 있습니다. 향후 앱 개발을 위해 WebView2를 사용하는 것이 좋습니다.

 

• IE 모드는 언제까지 지원 되나요?

    • IE 모드 지원은 적어도 2029 년까지 Windows 클라이언트, 서버 및 IoT 릴리스의 수명주기를 따릅니다. 또한 Microsoft는 때가되면 IE 모드 경험을 종료하기 전에 1년동안 통지합니다. Windows 지원 날짜는 Product Lifecycle page에 문서화되어 있으며 지원 종료 날짜 이후에 운영 체제 보안 업데이트를 받으려면 ESU (확장 보안 업데이트) 라이선스가 필요할 수 있습니다. 현재 출시 된 Windows 버전의 서비스 종료 날짜는 다음과 같습니다.

 

• 만약 마이크로소프트에 예외 적용을 요청한다면, 2022년 6월 15일 이후에 IE 11을 계속 사용할 수 있습니까?

    • Microsoft Edge 는 기존 웹 사이트와의 호환성을 위해 Internet Explorer 모드와 최신 웹 사이트와의 세계적 수준의 호환성 및 성능을 위해 오늘날의 많은 브라우저를 지원하는 기술인 Chromium 프로젝트를 함께 지원합니다.

    • 따라서 2022년 6월 15일 이후에는 예외요청이나 IE11 데스크톱 애플리케이션의 지원을 연장하지 않습니다.

    • IE11 을 사용하는 일반 소비자는이 지원 페이지에 설명 된 단계 (Microsoft Edge 의 Internet Explorer 모드)에 따라 Microsoft Edge 에서 IE 모드를 실행할 수 있습니다.

    • 기업의 IT 전문가는 조직의 사용자가 레거시 IE 기반 사이트 및 앱에 액세스 할 수 있도록 Microsoft Edge 에서 IE 모드를 설정해야 합니다. IE 모드를 설정하려면 Getting Started guide 의 리소스를 사용하세요

 

 

• Internet Explorer 11 데스크톱 응용 프로그램이 장치에서 제거됩니까??

    • 아니요. IE 모드가 작동하려면 IE11 엔진이 필요하기 때문에 IE11 데스크톱 응용 프로그램은 장치에서 제거되지 않습니다. 그러나 IE11 데스크톱 응용 프로그램이 2022 년 6 월 15 일에 종료되면 영구적으로 비활성화 됩니다.

 

• iexplore.exe가 장치에서 제거됩니까?

    • 아니요,하지만 사용자가 액세스를 시도하면 IE11을 열 수 없으며 Microsoft Edge로 리디렉션됩니다.

 

• 브라우저 기본값이 Internet Explorer 11이 아닌 경우 사용 중지가 브라우저 기본값에 영향을 줍니까?

    • 아니요, 이번 사용 중지는 기본값이 Internet Explorer 11로 설정된 경우에만 브라우저 기본값을 변경합니다. IE11이 브라우저 기본값으로 설정되어 있으면 이제 Microsoft Edge를 갖게됩니다.

• Internet Explorer 11 데스크톱 응용 프로그램이 2022 년 6 월 15 일에 종료되면 Internet Explorer 기반 사이트 및 앱이 Microsoft Edge에서 자동으로 열리나요?

    • IE11 데스크톱 응용 프로그램이 사용 중지되면 IE11이 Microsoft Edge로 리디렉션됩니다. Internet Explorer 기반 웹 사이트 및 앱을 열려면 Internet Explorer 모드 (조직)를 설정하거나 Internet Explorer 모드 (일반 소비자)를 활성화해야 합니다. 조직인 경우 Getting Started guide를 사용하여 IE 모드를 설정할 수 있습니다. 일반 소비자인 경우 Microsoft Edge 지원 문서에서이 Internet Explorer 모드의 단계에 따라 IE 모드를 사용하도록 설정할 수 있습니다.

 

• 내 사이트 중 일부가 Internet Explorer 모드를 사용하는 Microsoft Edge에서 작동하지 않으면 어떻게합니까? 웹 사이트 호환성 문제에 대한 도움을 받으려면 어떻게합니까?

    • 기업이고 사이트 로드 오류와 같은 호환성 문제가있는 경우 App Assure 팀에 연락하여 문제 해결 지원을 받으십시오. 웹 사이트를 통해 지원 요청을 제출하거나 이메일(ACHELP@microsoft.com)을 통해 연락 할 수 있습니다.

    • 일반 소비자가 가정에서 페이지를 로드하는 중에 오류가 발생하는 경우 Microsoft Edge 지원 문서에서 Internet Explorer 모드의 안내에 따라 IE 모드에서 로드 해보세요. 문제가 지속되면 '도움말 및 피드백'의 점 3 개 설정 메뉴에있는 제품 내 피드백 도구를 통해 피드백을 보내거나 단축키 Alt + Shift + I를 사용하여 알려주십시오. 피드백을 제출할 때 다음을 확인하십시오. '진단 데이터 보내기'상자를 선택합니다.

 

• IE 그룹 정책이 IE 모드에서 작동합니까?

    • IE 그룹 정책이 IE 모드에서 작동하도록 최선을 다하고 있습니다. 어떤 이유로 든 문제가 발생하면 AppAssure에서 지원을 요청하십시오. 웹 사이트를 통해 지원 요청을 제출하거나 이메일 (ACHELP@microsoft.com)을 통해 연락 할 수 있습니다.

 

 

글: 션 린더세이(Sean Lyndersay)

Kotlin 프로그래밍 언어 알아보기 

기본문법에 대해서 모두 설명하기에는 양이 많아 링크로 대체하도록 하겠습니다. 

아래 사이트에서 기본적인 문법 및 잘못된 코드 스타일등을 확인 할 수 있으며 내용은 크게 무겁지 않으니 깊이 있는 내용을 원하시는 경우 별도의 다른 방법(검색이나 도서, 온라인 동영상강좌)등을 확인하시기 바랍니다. 

 https://developer.android.com/kotlin/learn?hl=ko

 

Kotlin 프로그래밍 언어 알아보기  |  Android 개발자  |  Android Developers

Kotlin 프로그래밍 언어 알아보기 Kotlin은 전 세계 Android 개발자가 널리 사용하는 프로그래밍 언어입니다. 이 주제는 활용도를 높이기 위한 Kotlin 단기 집중과정입니다. 변수 선언 Kotlin은 두 키워드

developer.android.com

 

Kotlin 개발을 위한 환경 설정

 

먼저  IntelliJ IDEA기반의 안드로이드 스튜디오를 다운받도록 합니다. 설치 파일의 용량은 800 ~ 900 MB이며 설치 과정중 추가 다운로드 단계가 있습니다.  

https://developer.android.com/studio?hl=ko

 

Download Android Studio and SDK tools  |  Android Developers

The official IDE for Android app developers.

developer.android.com

다운로드 버튼 클릭 후 약관 동의 단계가 나오며 동의하면 다운로드가 진행됩니다.

 

설치파일은 exe 형태로 Install 되어지며 일반적인 프로그램 설치와 유사하게 Next를 클릭하여 무난하게 설치 할 수 있습니다. 

  • 설치 중간에 컴포넌트 약관 동의가 나오는데 모두 Accept를 눌러 동의(컴포넌트 별로)해주셔야 합니다. 동의시 컴포넌트 다운로드를 실행합니다.
  •  기존에 설치했던 이력이 있는 사용자를 위해서 환경설정을 가져다 사용할 수 있는데 기존 사용자는 기존 설정파일 경로가 자동으로 찾아지면 사용하셔도 되며, 처음 사용자는 Do not import settings를 선택합니다.

 

  •  Install Type을 물어보는 경우 무난하게 Standard를 선택합니다.
  • 테마는 원하는 테마를 선택한 후 Next 버튼을 눌러 진행합니다.

 

모든 설치가 정상적으로 진행되었을 경우 아래와 같은 화면을 볼 수 있습니다.  여기까지 안드로이드 스튜디오 설치에 대한 부분은 진행이 다 되었다고 볼 수 있습니다. 

 

'Development > Android-Kotlin' 카테고리의 다른 글

Android-Kotlin 시작하기  (0) 2022.03.08

코틀린(Kotlin)이란?

 

코틀린은 ‘젯브레인스(JetBrains)’라는 회사에서 만든 안드로이드 개발을 위한 프로그래밍 언어로, 2016년도에 정식 발표되었습니다. 코틀린은 기존에 안드로이드 어플리케이션 개발에 활용되는 자바(Java) 언어를 보완하고 대체하기 위해 탄생했는데요. 때문에 기존에 자바 언어로 동작하던 환경에서 코틀린 언어도 100% 호환되는 것이 특징입니다. 이는 기존에 자바로 개발하던 프로그램은 모두 코틀린으로도 개발할 수 있다는 의미입니다.

 

2017년 열린 구글 I/O라는 컨퍼런스에서 코틀린은 공식 지원 언어로 채택되었습니다. 공식 지원 언어로 채택이 되었다는 건 과연 어떤 의미일까요? 구글이 코틀린을 공식 지원 언어로 채택하면서, 코틀린 플러그인을 안드로이드 스튜디오(Android Studio) 3.0에서 바로 다운로드하여 이용할 수 있게 되었다는 의미입니다. 이외에도 안드로이드 공식 문서의 예제 코드도 코틀린으로 제공되는 것을 확인할 수 있습니다.

 

Android 개발이 Kotlin 우선인 이유

Google은 컨퍼런스, 고객 자문위원회(CAB), Google 개발자 전문가(GDE) 및 자사 개발자 연구를 통해 개발자로부터 직접 받은 의견을 검토했습니다. 많은 개발자가 이미 Kotlin을 즐겨 사용하고 있으며 Kotlin 지원 추가에 관한 요청이 분명했습니다. 개발자가 말하는 Kotlin을 사용한 코드 작성의 이점은 다음과 같습니다.

  • 표현력이 높고 간결함: 적은 노력으로 많은 작업을 할 수 있습니다. 상용구 코드를 적게 사용하면서도 아이디어를 풍부하게 표현할 수 있습니다. Kotlin을 사용하는 전문 개발자 중 67%가 Kotlin을 통해 생산성이 높아졌다고 말합니다.
  • 더 안전한 코드: Kotlin에는 null 포인터 예외와 같은 일반적인 프로그래밍 실수를 방지하는 데 도움이 되는 여러 언어 기능이 있습니다. Kotlin 코드가 포함된 Android 앱은 다운될 가능성이 20% 낮습니다.
  • 호환성: Kotlin에서 자바 기반 코드를 호출하거나 자바 기반 코드에서 Kotlin을 호출합니다. Kotlin은 자바 프로그래밍 언어와 100% 호환되므로 프로젝트에서 Kotlin을 원하는 만큼 사용할 수 있습니다.
  • 구조화된 동시 실행: Kotlin 코루틴을 사용하면 비동기 코드를 차단 코드처럼 쉽게 사용할 수 있습니다. 코루틴은 네트워크 호출부터 로컬 데이터 액세스에 이르기까지 백그라운드 작업 관리를 크게 단순화합니다.

 

Kotlin 우선이란 무엇을 의미할까요?

Jetpack 라이브러리, 샘플, 문서, 교육 콘텐츠와 같은 새로운 Android 개발 도구와 콘텐츠를 빌드할 때 Google은 Kotline 사용자를 염두에 두고 디자인하는 동시에 자바 프로그래밍 언어에서 Google의 API를 사용할 수 있도록 지원을 계속 제공합니다.

  JAVA Kotlin
플랫폼 SDK 지원
Android 스튜디오 지원
린트
가이드 문서 지원
API 문서 지원
AndroidX 지원
AndroidX Kotlin 전용 API(KTX, 코루틴 등) 해당 사항 없음
온라인 교육 최상의 결과
샘플 최상의 결과
다중 플랫폼 프로젝트 아니요
Jetpack Compose 아니요
컴파일러 플러그인 지원 아니요 예: Kotlin Symbol Processing API는 Google에서 경량 컴파일러 플러그인을 개발하기 위해 만들었습니다.

 

다음에는 설치 과정을 설명하도록 하겠습니다.

'Development > Android-Kotlin' 카테고리의 다른 글

코틀린(Kotlin) 기본 문법 및 환경 설정  (0) 2022.03.08

설치한 소프트웨어의 설정이나 서버의 환경설정을 고려할 때 논리 프로세서의 개수를 알아야 할 경우가 있습니다.

 

논리 프로세서(=스레드)란 무엇인가?

논리 프로세서를 알기 전에 CPU부터 알아야 합니다.

중앙처리장치라고 많이 들었고 영어로는 CPU ( Central processing unit) 이라고 한다. 시스템을 통제하고 프로그램의 연산을 수행하는 핵심 제어장치라고 볼 수 있다. 또는 이와 동일한 기능 가지고 있는 하드웨어를 말합니다.

 

2000년 이전까지는 CPU의 Core = 물리적 CPU프로세서 라고 볼 수 있다. 즉 4 코어는 4가지 일을 한 번에 할 수 있다.

그러나 2000년 초반 하이퍼스레딩 기술이 적용되면서 한개의 코어가 두 개의 작업을 동시에 할 수 있게 되었다.

즉, 하이퍼 스레딩 기술이 적용되었을 때 4코어는 8가지 일을 한 번에 할 수 있게 되는 것입니다.

 

쓰레드(Thread)란 무엇인가?

위에서 설명한 8가지 일을 한다고 가정하였을 때 이 8가지 일을 8 스레드라고 볼 수 있다. 즉, 스레드는 논리적인 작업 처리 단위를 말합니다.

 

 

논리 프로세서 확인방법

방법 1.

시작에서 msinfo를 검색합니다. 

시작 -> 검색 -> msinfo32 입력 시 해당 그림처럼

시스템 정보라는 프로그램이 검색됩니다. 

 

해당 시스템 정보를 클릭하여 논리 프로세서를 확인할 수 있습니다. 

 

 

 

 

 

 

 

 

 

 

 

방법 2.

작업 관리자를 호출하여

성능 탭의 논리 프로세서의 개수를 확인할 수 있습니다.

Log4j 란?

Apache에서 만든 로깅용 자바기반의 오픈소스 라이브러리이다. 디버깅용이나 로그 적재에 주로사용한다.

Log for java라는 뜻을 줄여서 Log4j 라고 하며 Jakarta-project에서 Java를 위한 프로젝트 중 하나이다.

간단히 말해 로그를 출력하기 위한 라이브러리이다.

 

log4j 가 없어도 로그는 출력할 수 있지만 각 소스마다 sysout을 이용해 로그를 출력한다면 디버깅 로그가 필요 없을 경우에는 모두 추적하여 삭제하는 번거러움이 있고 sysout은 호출하면 할 수록 성능이 저하된다. 

(궁금한 경우 루프문을 작성하여 sysout을 계속 출력해 보면 알 수 있다.)

 


취약점

최근 log4j에 대한 취약점으로 큰 이슈가 발생하였다.  JNDI Injection 취약점을 이용하여 서버에서 악성 코드를 실행할 수 있다.  아래와 같은 위험이 있다고 한다.

  • 대상 컴퓨터(서버)의 모든 권한 취득 가능
  • 비밀번호 없이 내부망 접근 가능
  • 악성 프로그램(랜섬웨어 등) 실행 가능
  • 기업의 중요한 자료 삭제 등

 


취약점 조치

버전 업그레이드를 위해 공홈에서 사용중인 JDK 버전에 맞는 라이브러리를 다운로드 받는다. 

https://logging.apache.org/log4j/2.x/download.html#

 

Log4j – Download Apache Log4j 2

<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apa

logging.apache.org

파일을 다운로드 받은 후 압축파일의 내용을 보면 필요한 파일보다 더 많은 파일이 있다. 

지금 우리가 수행할 작업은 1.x 버전에서 2.x 버전으로 변경하는 작업이므로 해당 작업을 중점으로 설명하겠다. 

( log4j2-2.x.x 버전 업그레이드는 라이브러리만 교체하면 되는것으로 알고 있음)

 

 

 

<라이브러리 교체>

프로젝트의 상황에 따라 일부 라이브러리는 차이가 있을 수 있다. 

(예를 들면 remix / jdbc가 붙은 log4j 관련 라이브러리)

그러나 버전 업그레이드에 반드시 필요한 파일은 3개가 있으며 slf4j를 사용하는 경우 1개의 교체해야하는 파일이 있다.

log4j-core-2.x.x.jar log4j-api-2.x.x.jar log4j-web-2.x.x.jar log4j-slf4j-impl-2.x.x.jar
추가 Slf4j 사용시 추가
( 교체 : slf4j-log4j12-1.x.x.jar)

 

기존 프로젝트에 삭제되어야하는 라이브러리는 다음과 같다.

  • log4j-1.x.x.jar
  • slf4j-log4j12-1.x.x.jar  (slf4j를 사용하지 않는 경우에는 해당 파일이 없을 수 있으나 대부분의 프로젝트에는 있다.)

추가되어야 하는 라이브러리 

  • log4j-core-2.x.x.jar
  • log4j-api-2.x.x.jar
  • log4j-web-2.x.x.jar
  • log4j-slf4j-impl-2.x.x.jar  / log4j2-2.x.x용 바인딩 파일 (slf4j를 사용하지 않는 경우 제외)

slf4j를 사용하며 기존에 존재하는 라이브러리 중 유지해야하는 라이브러리

  • slf4j-api-1.x.x.jar    /  기존 소스에서 API를 사용하고 있으므로 삭제하지 않음

 

 

<설정 변경 : WEB.XML>

log4j2.xml 경로설정 - log4j-2.x 버전에서는 web.xml에서 경로나 파일명을 명시하지 않으면 기본값으로 classpath: 경로에서 log4j2-test.xml 또는 log4j2.xml 파일을 찾는다고 한다. (log4j 에서도 동일했던 것 같은데..) 

하지만 명확하게 하기 위해 별도의 설정을 하도록한다.

<!-- 대상파일 web.xml -->

<!-- AS-IS  : 변경 전-->
<context-param>
	<param-name>log4jConfigLocation</param-name>
    <param-value>classpath:/log4j.xml</param-value>
</context-param>

<listener>
	<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

<!-- To-be : 변경 후-->
<context-param>
	<param-name>log4jConfiguration</param-name>
    <param-value>classpath:/log4j2.xml</param-value>
</context-param>
<listener>
	<listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
</listener>

web.xml에 해당 코드가 없는경우 추가하도록 한다.

경험으로는 spring 3.1 버전에서는 해당 코드가 없는 프로젝트가 있었으며 spring 3.2 이후부터는 해당 코드가 있었다.

 

 

 

<설정 변경 : LOG4J2.XML>

log4j2.xml 파일에 대한 작성법은 여기서 다루지 않도록 한다.
     관련링크 :   https://logging.apache.org/log4j/2.x/manual/configuration.html

 

Log4j – Configuring Log4j 2

Configuration Inserting log requests into the application code requires a fair amount of planning and effort. Observation shows that approximately 4 percent of code is dedicated to logging. Consequently, even moderately sized applications will have thousan

logging.apache.org

 

사용중인 설정파일의 내용은 아래와 같다. 

<!-- 신규작성 파일 : log4j2.xml -->
<?xml version="1.0" encoding="UTF-8"?>

<Configuration status="DEBUG">
	<Properties>
		<Property name="logNm">log_pattern_Layout</Property>
		<Property name="layoutPattern">[%d{ISO8601}][%5p] [%c{4}]: %m%n</Property>
	</Properties>
			
	<Appenders>
		<Console name="console" target="SYSTEM_OUT">
		    <PatternLayout pattern="${layoutPattern}" />
		</Console>
		<RollingRandomAccessFile
			name="rolling_log"
			fileName="./logs/file.log"
			filePattern="./logs/pjt/pjt-%d{yyyy-MM-dd_HH}_%i.log"
			immediateFlush="false"
			append="true"
			ignoreExceptions="false">
			<PatternLayout pattern="${layoutPattern}" />
			<Policies>
				<!-- 30MB 용량이 초과시 DefaultRolloverStrategy 정책만큼 넘버링 -->
				<SizeBasedTriggeringPolicy size="30 MB" />
				<!-- 일별 로그 파일 생성-->
				<TimeBasedTriggeringPolicy interval="1" modulate="true" />
			</Policies>
			<!-- 롤링 파일 1000개 까지 생성 -->
			<DefaultRolloverStrategy max="1000" />
		</RollingRandomAccessFile>
		
		<Async name="async_log" includeLocation="true">
			<AppenderRef ref="rolling_log" />
		</Async>

		
	</Appenders>

	

	<Loggers>
		<!-- 스프링 프레임워크에서 찍는건 level을 info로 설정 -->
		<logger name="org.springframework" level="info" additivity="false" >
			<AppenderRef ref="console" />
			<AppenderRef ref="async_log" />
		</logger>
		<Logger name="jdbc.connection" level="info" additivity="false">
			<AppenderRef ref="async_log" />
		</Logger>
		<Logger name="jdbc.audit" level="error" additivity="false">
			<AppenderRef ref="async_log" />
		</Logger>
		<Logger name="jdbc.resultset" level="error" additivity="false">
			<AppenderRef ref="async_log" />
		</Logger>
		<Logger name="jdbc.resultsettable" level="error" additivity="false">
			<AppenderRef ref="async_log" />
		</Logger>
		
		<Logger name="jdbc.sqltiming" level="error" additivity="false">
			<AppenderRef ref="async_log" />
		</Logger>
		<Logger name="com.ibatis" level="error" additivity="false">
			<AppenderRef ref="async_log" />
		</Logger>
		<Logger name="java.sql" level="error" additivity="false">
			<AppenderRef ref="async_log" />
		</Logger>
		<Logger name="com.kpmg.kr" level="error" additivity="false">
			<AppenderRef ref="async_log" />
		</Logger>
		

		<Root level="debug">
			<AppenderRef ref="async_log" />
			<AppenderRef ref="console" />
		</Root>
	</Loggers>

</Configuration>

 

 

<설정 변경 : JAVA CODE내 사용>

slf4j를 사용했다면 과거 1.X 버전을 사용할때랑 동일하므로 변경할 내용이 없으나. 사용하지 않는 다면 아래 예제를 참조하여 수정하도록 한다.( 보통은 slf4j를 상당수 사용하기 때문에 ....)

import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;

// logger name이 현재 클래스 경로인 것을 찾는다. 
private static Logger logger = LogManager.getLogger(this.getClass()); 

prvate static void write(String s){
	logger.info(s);
}

 

작업을 완료하고 콘솔(예를 들면 이클립스)에서 Was 기동시 붉은색 로그가 아닌 검정색 로그가 주르륵 올라간다면 적용이 완료되었다고 볼 수 있다. 

설정오류(설정에 오류는 있으나 컴파일 오류가 안나는 상태)의 경우 Was 기동시 붉은색 로그만 나타나게 된다면

즉, 스프링 관련 로그같은 별도의 검정색 텍스트가 보이지 않는다면 설정이 잘못되었다고 볼 수 있다. 

 

<오류 발생 Case>

모두 적용을 완료한 후 톰켓 기준 WAS 기동시 에러메세지가 나타나는 경우가 있다. 

 org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19

해당 현상은 톰켓 버그로 이 문제가 해결된 버전은 Tomcat을 사용함으로써 해결이 가능하다.

  • Tomcat 9.0.x : 9.0.0.M18 이후
  • Tomcat 8.5.x : 8.5.12 이상 
  • Tomcat 8.0.x : 8.0.42 이상
  • Tomcat 7.0.x : 7.0.76 이상

해당내용 관련 StackOverflow

https://stackoverflow.com/questions/23541532/org-apache-tomcat-util-bcel-classfile-classformatexception-invalid-byte-tag-in

 

org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15

I'm porting a webapp from Tomcat 7 to another server with Tomcat 7 but with Java 8. Tomcat starts successfully but in log catalina.out I get: org.apache.tomcat.util.bcel.classfile.ClassFormatExce...

stackoverflow.com

 

개요

Apache HTTP Server에서 입력값 검증이 미흡하여 발생하는 버퍼오버플로우 취약점(CVE-2021-44790)
공격자가 조작된 요청을 mod_lua*모듈로 처리 할 때 버퍼 오버플로가 가능한 취약점

 

영향받는 버전

Apache HTTP Server 2.4.51 및 이전 버전

 

해결방안

1. 취약점 업데이트 (패치 적용 前 업무시스템의 서비스 영향 검토 후 적용할 것)
    -   2.4.51 및 이전 버전의 경우, 최신 버전(2.4.52) 업그레이드 적용[2]
 
2. 임시 조치방안
    - mod_lua 모듈 非활성화 (디폴트로 비활성화 되어있음)
    ※ 모듈 확인방법 : 소스 트리의 httpd.conf 내 "LoadModule lua_module modules/mod_lua.so" 검색 > 주석 처리

+ Recent posts