환경

OS : CentOS 8.2
JDK : OpenJDK 1.8.0_252-b09
WAS : WebSphere 9.5

오류메시지

org.springframework.beans.factory.BeanDefinitionStoreException: 
Parser configuration exception parsing XML from file ; 
nested exception is javax.xml.parsers.ParserConfigurationException: 
Unable to validate using XSD: 
Your JAXP provider [oracle.xml.jaxp.JXDocumentBuilderFactory@e2a8c01f] does not support XML Schema. 
Are you running on Java 1.4 with Apache Crimson? Upgrade to Apache Xerces (or Java 1.5) for full XSD support. 

 

해결방법

- JVM OPTION 에 아래 내용을 추가

-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl  
-Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl 
-Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`

 

CentOS 7.5, OpenJDK 1.8.0_212, Tomcat 8.5 에서도 같은 오류가 발생한 적이 있어서 같은 방법으로 해결 했다.

 

다만, 해결 방법의 출처를 정확히 적어놓지 않아서 아쉽다.

WebSphere 9.5 에 엔터프라이즈 애플리케이션을 설치 중에 아래와 같은 메시지와 함께 오류가 발생 했다.

JEUS 6.0 에서 잘 돌아가고 있던 WAR 파일 이었다.

 

com.ibm.websphere.management.application.client.AppDeploymentException: [Root exception is org.eclipse.jst.j2ee.commonarchivecore.internal.exception.DeploymentDescriptorLoadException: WEB-INF/web.xm

세부사항은 로그를 참조하라고 하지만, 로그에도 아무것도 남지 않았다. 

 

여러모로 찾다 보니 web.xml 이 규격에 맞지 않으면 저런 오류가 날 수 있다고 한다. (출처)

다만 이번 경우에는 session-config, welcome-file-list, jsp-config, login-config, locale-encoding-mapping-list 항목이 중복 선언되어서 나온 문제는 아니었다.

 

하나하나 web.xml 파일을 잘라 붙이며 테스트한 결과 

아래 표의 내용들이 문제가 되어서 수정 하였다.

수정 전 수정 후
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.com</url-pattern>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.com</url-pattern>
</filter-mapping>

<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>

 

포스트를 다 쓰고 나서야 똑같은 내용을 검색 해서 찾았다. (WebSphere)

나보다 훨씬 자세히 설명해놓았다.

 

웹 애플리케이션 (웹사이트, 단일 페이지 애플리케이션, REST API 및 기타)을 작성하기 위한 가장 빠른 방법은 무엇일까? 이 책에서 소개 하고 있는 것은 Node.js 의 Express  이다.

 

Node.js 는 기본 언어로 자바스크립트를 사용 하기 때문에 프론트엔드에서 사용하던 언어로  서버 프로그램을 개발 할 수 있기 때문에 진입 장벽이 낮다.

 

거기에 Express 라는 웹 애플리케이션 개발 최적화 되고 배울것이 최소한인 프레임워크를 제공 하기 때문에 (최소한의 프레임워크를 제공하고 사용자가 기능 중에서 필요한 것만 추가하여 사용할 수 있도록 한다.)  빠르게 개발을 시작 하고 끝낼 수 있다.

 

책은 Node.js 및 Express 에 대한 간단한 소개로 시작해서 “메도라크 여행사 웹사이트” 라는 예제 (웹사이트 및 API 제공) 를 작성하며 웹사이트를 개발는 전반적인 내용과 그에 따라 Express 의 기능을 사용 하는 방법을 배운다. 

 

- 요청과 응답 객체 다루기

- 템플릿 엔진 핸들바 (handlebars) 사용하기

- 서버로 데이터(및 파일) 전송하기

- 쿠키와 세션 다루기

- 데이터베이스 다루기

- 이메일 다루기

 

또한 Express 의 사실상 모든것이라고 할 수 있는 미들웨어 대해 다룬다. (익스프레스 애플리케이션은 미들웨어의 조합이다.) 

 

미들웨어란 간단하게 말하면 요청과 응답 과정에 중간에서 원하는 작업을 처리 하는 함수이다. 함수의 매개변수로 다음 처리될 함수를 줄 수 있어서 작업을 정해진 순서대로 처리할 수 있도록 한다. 책에서는 미들웨어에 대한 정의와 널리 쓰이는 미들웨어를 소개 한다.

 

마지막으로 사이트 오픈 및 오픈이후의 유지보수에 대한 내용을 간략히 소개한다. 짧은 내용이지만 반드시 실천해야할 내용을 담고 있다.

 

전반적인 웹에 관한 내용을 다루지만 그렇게 어렵지는 않은 책이다. 다만 너무 기초가 없으면 곤란한 부분이 존재한다. 자바스크립트는 책을 보기전에 미리 공부하는 것이 좋겠고, 웹의 구조등에 대해서는 책을 보면서 모르는 단어가 나올 때 마다 찾아보며 함께 공부하면 편하다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

우연치 않게 위키독스에서 검색해서 몇 챕터를 읽고

라고 느껴서 바로 구입해서 막힘 없이 끝까지 훌훌 읽어 버렸다.

개발자 라고는 하지만 (밖에서는 그냥 회사원이라고 함)  정말 생계형 잡부로 입에 풀칠하며 살아왔는데 그 동안 겪었던 많은 내용들이 다 정리 되어 있는것 같아서 읽으면서 '그렇지 그렇지'를 연발 했다.

특히 '5.8 회사는 학교가 아닙니다.' 부분은 한부씩 인쇄해서 신입사원이 들어오면 자리 옆에 붙여놓고 싶을 정도이다. (나는 이 말을 2002년도에 학원에서 처음 들었다.) 

 

내가 초보라 신입이라 모르는데 왜 내게 알려주지 않아? 왜 나를 챙겨주지 않지? 라는 말은 돈 내고 교육 듣는 곳에서나 하세요. 다른 분들도 바쁘고 설혹 안 바쁘다고 해도 저런 말 하는 사람을 챙겨주는 것이 당연한 일은 아닙니다.

SI 쪽에서 오래 있어보신 분들께는 추억을 회상하는 읽을 거리가 될 수 있고, 이제 처음 생계형 개발자를 시작하려는 분들께는 SI 상세 집중 공략 같은 책이다.

꼭 사서 보자.










 

 

 

 

자바스크립트를 지원 하는 백엔드 런타임인 Node.js 가 나온지도 벌써 11년이다. 그동안 다수의 버전이 릴리즈 되었고 (현재 최신 버전은 15.14) , NPM 에는 100만개 이상의 패키지가 등록 되어 있지만 노드의 아버지인 라이언 딜은 2020년 5월 새로운 백엔드 기술을 개발했다.

 

 

 

이름은 NODE 를 뒤집어 놓은듯한 DENO.

 

책에서는 라이언 딜이 DENO 를 탄생시킨 배경과 설치 부터 시작 하는 주요 사용법, 또한 DENO 의 주 언어인 타입스크립트에 대해서 소개 하고 있다. 

 

가장 흥미롭게 읽은 부분은 DENO 의 보안 강화 부분이다.

스크립트를 실행하는 OS 가 보안을 처리하도록 하지 않고 사용자가 직접 허용할 권한을 지정하도록 강제 하는 부분은 아이폰의 개인 정보 보호 기능을 통해서 익숙한 내용인데, 서버에서 스크립트를 실행 하는 과정에서도 이에 대한 제약을 할 수 있는 부분이 아주 흥미로웠다. 내가 잘 알지못하는 모듈들이 내가 허용하지 않은 작업을 하지 못하게 하는 것은 사실상 왜 여태까지 그런 제약이 없었는지 싶을 정도 이다. 그리고 실행방법도 아주 간단하다. 단순히 스크립트 시작 부분에 플래그를 추가 하기만 하면 된다.

 

DENO 가 Node.js 를 대신할지에 대한 여부는 여러 내용들을 읽어봐도 알기가 어렵다. 하지만 백엔드 런타임을 새로 배워야 한다면 DENO 로 시작 하는 것도 나쁘지 않을듯 하다.

 

책의 마지막에서 언급 하지만 이 책을 번역하는 2021년 1월에는 DENO 의 버전이 1.7.1 이었다. 현재 이 리뷰를 쓰는 시점의 DENO 의 버전은 1.9.0 이다.

 

DENO 개발팀은 얼마나 열심히 일하고 있는 것인가.



"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

 

보안에 관련된 행위라고는 시큐어코딩 가이드에 따라서 코드를 작성 한다던지, 보안취약점 진단결과에 따른 내용을 조치 하는 작업 밖에 해본적이 없다.

애초에 어떤 웹 애플리케이션의 취약점을 찾는다던지 해킹을 한다던지 하는 행위에 대한 생각을 해본적이 거의 없었기 때문에 당연히 어떻게 하는지도 알지 못했다.

책은 정찰, 공격, 방어 세 단계로 나누어 웹 애플리케이션 보안에 관련된 전반적인 이야기를 하고 있다.

정찰은 웹 애플리케이션의 구조와 기능을 조사 하여 기술과 구조에 대한 깊은 이해를 얻고, 그것을 문서화 하는 여러가지 방법을 이야기 한다. 

공격은 해커가 현대 웹 애플리케이션에 침투하기 위해 공통적으로 사용하는 기법을 다룬다.
XSS, CSRF, SQL Injection 등 그나마 많이 들어본 용어들이 등장 한다.

 

방어편에서는 웹 애플리케이션을 보호 하는 방법에 관한 이야기를 진행 한다. 내용을 책의 각 주제가 연관성을 가지도록 순서를 배치 하여 앞에서 나온 주제들에 대한 추가적인 설명을 진행해 나간다. 그리고 애플리케이션 보호에 관한 실질적인 방법에 대해서 이야기 해 나간다.

아래와 같은 구문들이 인상 깊었다.

p. 246
“웹 애플리케이션 보호는 중세시대 성의 방어와 같아서 모든 잠재적 진입로를 최대로 방어하는 것은 불가능 하므로 우선순위를 세우는 것이 중요 하다.”

p.248
“취약점을 찾는 전통적인 방식은 고객이 알려주거나 대중에게 널리 공개되는 것이다. (이 방법은 최악이다.”

보안이라고는, 단순히 개발시에 시큐어코딩 가이드에 따라서 코딩을 하고, 개발 후에 pmd 를 적용하여 테스트하고 매년 보안취약점 진단검사를 받고 패치 하는 작업이 전부였었는데, 실질적으로 어떻게 조사하고 침입하는지에 대한 방법을 배우는 것이 매우 재미있고 의미 있었다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

한번 코드를 작성하여 여러 플랫폼에서 사용 할 수 있는 것은 엄청나게 큰 장점이다. 플러터는 이런 장점을 가진 모바일 SDK 이다. 누구나 플러터를 이용하여 간단한 방식으로 모바일 쉽게 만들 수 있다고 저자는 이야기 한다.

책의 대상 독자를 보면 앱을 개발한 경험이 있다고 가정하고 있다. 수박 겉핥기 식으로 안드로이드 책을 읽어본적은 있지만, 실제로 앱을 개발해 본 경험은 없었기에, 책에서 나온 여러가지 용어들을 따로 인터넷을 검색해가며 찾아봐야 했다. 

플러터는 dart 라는 프로그래밍 언어를 사용 하는데, 2장에서 이에 대하여 설명 하고 있다. 책의 내용들 중에서 가장 쉽게 읽을 수 있는 부분이었다. 경험해본 언어라고는 java, python 정도 인데, java 와 매우 비슷해 보이지만 더 간결하고 쓰기 편하다고 느꼈다.

플러터는 앱개발에 필요한 모든 것을 제공 하고 이를 쉽게 설치하고 활용 할 수 있다. 부록과 flutter 홈페이지를 참고 하여 mac os 환경에서 homebrew 를 설치 하고 fludder sdk 를 다운로드 하여 설치하고 카운터 앱을 만들어 실행 하는데 채 한시간 걸린것 같지 않다. (가장 많은 시간이 소요된 것이 xcode 를 다운로드 하는 시간 이었다.)

어찌어찌 xcode 도 설치하고 소스파일을 작성할 에디터인  vscode 를 실행하여 카운터 앱 프로젝트를 확인 해 봤는데, 역시나 전혀 알 수 없는 구조의 프로젝트이다. 걱정할 필요는 없다.책의 3장에서 플러터의 기본 프로젝트 구조 부터 플러터 앱이 어떻게 구성되는지 자세하게 설명 한다.

모든 것은 위젯이다라는 설명 처럼 플러터는 어떤 위젯을 사용할 수 있는지에 대해서 아는 것이 중요 하다. 각각의 위젯을 조합 하여 화면을 구성 하기 때문에, 어떠한 위젯들이 있으며 어떤 상황에 어떤 위젯을 사용하는 지가 매우 중요 하다. 이에 대한 기초적인 설명이 4장에 있다.

라우팅, 상태관리, 비동기 처리, 데이터 처리 등 잘 알 수 없지만 중요한 내용들이 나머지 뒷부분을 채우고 있는데, 위젯 다루기에 조금만 더 익숙해지면 다시 읽어 볼 계획이다.

매년 새로운 언어를 최소 하나는 배워라 라는 실용주의 프로그래머의 책 내용을 다시 한번 상기하며, 올해의 목표는 플러터로 앱을 하나 개발해 보는 것으로 하려고 한다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

대한민국 치킨전 을 탐독했기에 또다른 치킨의 역사에 관한 이야기인가 얼핏 생각 했지만

 

대한민국 치킨전

한국인의 소울푸드로 자리매김한 치킨을 본격적으로 다룬 최초의 책이다. 농촌.농업 사회학을 전공한 젊은 학자 정은정은 표준 표기인 ‘프라이드치킨’ 대신 ‘후라이드치킨’을 고집한다.

www.aladin.co.kr

일반적인 의미의 치킨이 아니라, 원래 의미의 chicken 에 관한 이야기 이다.

 

원 제목은 "鳥肉以上,鳥学未満 : HUMAN CHICKEN INTERFACE" 새(닭)고기 이상, 조류학 미만

 

조류학의 대상으로서의 닭에 대한 내용을 먹을거리와 연관 지어 재미있게 풀어내고 있다. 

닭가슴살, 날개, 넓적다리로 시작해서 마지막엔 머리까지 먹을 수 있는 부분은 다 먹어 본다. 

 

"우리는 일상적으로 닭고기를 먹는다. 먹을 때는 이 고기의 구조를 세세히 관찰할 수 있고 고기가 붙어 있는 뼈의 형태를 확인할 수 있다. 그리고 다양한 부위의 고기를 먹으면 새의 전체 형태를 지근거리에서 파악할 수 있다."

 

쉬운 내용이 아닐진데, 무척이나 쉽게 쓰여 져서 손에 쥐고 끝까지 어렵지 않게 읽었다.

다만, 간간히 나오는 개그는 참으로 이해하기 어렵다.

 

xbox one 500G 을 사용 하고 있는중인데

용량 때문에 추가로 연결 하여 사용 하고 있던 외장 hdd 가 문제를 일으켰다.

 

마침 사놓은 ssd 도 있었고, 유튜브로 확인 하니 난이도도 그렇게 어렵지 않아보여

내장 hdd 를 ssd 로 교체하는 작업을 진행 하였다.

 

준비물 : 교체용 2.5인치 sata ssd (1T), 별드라이버 T9, T10, 플라스틱 오프닝툴, 스퍼저, 8G 이상 빈 usb (NTFS로 포맷)

 

참조 1 : Replace the Hard drive in your Xbox One : youtu.be/yg7Ai63BaGI 

참조 2 : support.xbox.com/ko-KR/help/hardware-network/console/system-update-solution/offline-system-update

 

오프라인 시스템 업데이트 수행하기 | Xbox Support

오프라인에서 Xbox 콘솔을 업데이트하는 방법을 알아봅니다.

support.xbox.com

방법 : 

1. 참조 1을 확인 하여 xbox one 을 뜯고 내장된 hdd를 ssd로 교체 한다.

플라스틱 오프닝 툴은 없으면 진행이 어려울 정도로 꼭 필요하다. 물론 다른 툴로 대체는 가능하다.

T9, T10도 필수. 

 

2. 참조 2를 확인 하여 오프라인 시스템 업데이트용 USB 를 만든다.

 

3. 참조 2를 확인 하여 오프라인 시스템 업데이트를 진행 한다.

 

해보고 나니 별것 없다.

이렇게 일년은 버텨야 차세대기 구매가 가능 할 듯 하다.

 

리눅스는 어렵다.

 

설치도 쉬워지고, 참고 할 책도, 사이트도 많아졌지만

처음 시작하는 사람에게는 여전히 막막하고 어려운 운영체제다.

 

처음부터 제대로 배워 보겠다고, 글자만 가득찬 큰 책을 펼치고

리눅스의 역사 부터 공부하다 보면 금방 포기 하기 쉽상이다.

 

거기에다 실무에서 필요하다고 해서 공부 하다 보면 한 대의 컴퓨터로는 좀처럼 테스트 해보기 어려운 상황도 많다.

 

저자는 이런 부분들을 해결하고 쉽고 빠르게 리눅스 실무를 배울 수 있는 학습 로드맵과 학습 방법을 제시 한다.

 

리눅스 뿐만 아니라, 이런 환경을 처음 접하는 사람을 위하여 가상머신의 소개 부터 시작하여, 실무서버 구축 밑 테스트를 위한 준비를 확실하게 해주어, 책의 내용을 따라가는 것을 넘어서 책에서 제공하지 않는 부분에 대한 부분도 스스로 쉽게 공부 할 수 있도록 도와 준다. 

 

게다가 이것이 우분투 리눅스다(개정판) 에서는 무료 동영상 강의 까지 제공해주고 있다.

 

https://youtu.be/pSuHUNghIeM

 

리눅스를 처음 시작하는 꼭 추천하는 책이다.

 

다만, 동영상강의 처음에서도 이야기 하고 있지만, 이것이 리눅스다, 이것이 페도라 리눅스다 와는 리눅스 배포판의 차이만 있을 뿐 사실상 같은 내용이므로, 어느 책으로 학습해도 상관은 없다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

+ Recent posts