2019년 10월 16일 수요일

spring boot deploy to jboss issues

상황

  1. spring boot 프로젝트를 jar 디플로이로 생성한다.
  2. 임베디드 톰캣 쓰다가 jboss 로 디플로이를 위해 war 로 변경한다.
  3. war 변경 잘 됐고 jboss 에 war 올려서 테스트 해본다.
  4. 오잉. class 파일 로드가 안된다.
  5. context-path 가 이상한가? index.html 파일로 테스트 해본다. 잘 됨.
  6. 음..뭐지.. spring boot 생성 시 war 디플로이로 선택 해서 해본다.
  7. war 말아서 jboss 올려보니 잘 된다. 뭐징..
  8. pom.xml 및 각종 설정 class 들 다 뒤져서 비교 해본다. 다른데 없다.
  9. 이런 XX 뭐가 잘못 된거야!
  10. jboss 에 디플로이 target 폴더 뒤져 본다.
  11. 잘 돌아가는 놈은 WEB-INF/classes 안에 class 파일들 있다... ㅠㅠ
  12. eclipse 의 .settings 들어가서 설정 파일들 비교 해본다.
  13. 빙고! org.eclipse.wst.common.component 파일에 deploy path 가 다르다!!

처리
  1. 프로젝트 properties -> Deployment Assembly -> java, resources 의 Deploy Path 를 'WEB-INF/classes' 로 변경한다.

깨달은 것

  • 무조건 구글링 하지말고 기초를 생각해자 ㅋ


끝!

이거 찾느라 4시간 걸림 휴..

아참. 임베디드 톰캣 scope 설정하는거나 war 파일 설정하는건 다른 블로그들에 많음

react-native 처음 사용하는 친구들에게

안녕하세요?
React-Native RN 은 처음이지?
CLI 로 할때 오류 나서 접고 싶지?
ㅇㅇ 나도 처음에 힘들었음.
근데 계속 하다보면 무슨 오류인지 보임.

예를 들어 Windows OS 환경에서
react-native run-android 명령 날리면
어쩔때는 한방에 build 되는데 (라이브러리 설치 등의 오류 없다는 가정 하에)
어쩔때는 Could not read path 등
read, delete 못한다고 하면서 안될때 있음.
이럴때는 그냥 무시하고 될때까지
react-native run-android 커맨드 날리샘.
그러다 보면 build 성공 함. ㅋㅋ
음.. build thread 가 한 tread 로 돈다고는 하는데
아마도 폴더에 lock 걸려서 그러는게 아닌가 싶기도 하고..

Mac OS 로 하면 저런 오류 안보이긴 함.

그냥 Mac 사서 하샘. ㅎ

은 아니고 나중에 찾아보니까 android clean 시키는게 있더라
역시 공부 해야 함... 무지했어... ㅋㅋ
project 폴더 내 android 폴더에서
gradlew clean 한번씩 날려주면 windows 에서도 오류 안남.

2019년 10월 14일 월요일

react-native background process

react-native 에서 background 작업을 찾아보면
react-native-backgroud-task 가 많이 나오는데
해당 라이브러리는 Android 28 에서 사용 불가능 하다.

background-fetch 를 사용하는
https://github.com/transistorsoft/react-native-background-fetch
를 사용하도록.

Android, IOS 모두 가능.

단 IOS 는 OS 단에서 사용자 패턴을 분석하여 background fetch 를 하는데
설명에 의하면 그냥 기다리랜다
설치하고 몇일 있으면 잘 작동 한다고... ㅋㅋ


주의사항
1. IOS 에서는 30s 이내에 프로세스 finish 신호가 없으면 자동으로 종료 처리 함.
2. 예제에는 forceReload 옵션 없음. 넣어서 android 테스트 진행.
   android 에서 forceReload deprecated 되었다고 headless 쓰라네
   https://github.com/transistorsoft/react-native-background-fetch/issues/179

react-native app icon, splash image auto make

https://github.com/bamlab/react-native-make

사이즈에 맞게 이미지 생성 후 command 날리면
자동으로 android, ios 만들어줌.
개꿀.

-- 19.10.16 추가
RN cli 0.60 대버전에서 오류남.
1.0.2 버전으로 처리.
yarn add -D @bam.tech/react-native-make@1.0.2


-- 19.10.17 추가
Android 의 패키지를 변경할 경우
android/app/src/main/java/... 하위 폴더가 패키지 명을 따라 변경 되는데
splash screen 설정시 자동으로 react-native project 기본 패키지 명을 찾아가 MainActivity.java 파일을 변경 하려고 한다.
음.. 패키지 변경 하면서 설정값들은 다 바꿔 준것 같은데 해당 라이브러리가 어떤값 참고 하는지를 모르겠네
우선 변경 전 폴더로 MainActivity.java 파일 복사 하고 수정 하게 해준 다음 내용 옮김.
ex)
android/app/src/main/java/com.xxxx.xxxx.test/MainActivity.java 를
android/app/src/main/java/test/MainActivity.java 로 복사 후 수정 하게 해줌.

2019년 9월 30일 월요일

react-native EUC-KR UTF-8 convert

react-native 에서 EUC-KR UTF-8 Convert 에 대해 설명 한다.


  1. 필요 라이브러리
    • rn-fetch-blob
      • react-native 에 fetch 가 내장되어 있으나 blob 형태로 가져올수 없어 자동 convert 중 utf-8 로 변경 됨.
        blob 으로 화면단까지 가져와 처리할수 있도록 해당 라이브러리 사용.
      • yarn add rn-fetch-blob
    • iconv-lite
      • charset converter. 유명한 그것.
      • yarn add iconv-lite
    • buffer
      • 변환 과정에서 buffer  에 담아 변환을 하는데 브라우저에는 내장되어 있으나 react-native 에는 없음.
        이전 작업할때 기억에는 debug 모드로 브라우져 연동시 있는것으로 간주하고 작동 했던 것으로 기억 함.
        하지만 debug 모드 끄면 없다고 오류 뱉음.
      • yarn add buffer
    • base-64
      • base64 encode decode 그것. rn-fetch-blob 의 data 가 base64 로 넘어옴
      • yarn add base-64
  2. 코드
    • request
      1
      2
      3
      4
      5
      6
      7
      8
      9
      makeQuery(obj) {
          var str = [];
          for (var p in obj)
            if (obj.hasOwnProperty(p)) {
              // str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
              str.push(escape(iconv.encode(p, 'EUC-KR').toString('binary')) + "=" + escape(iconv.encode(obj[p], 'EUC-KR').toString('binary')));
            }
          return str.join("&");
        }
      
    • response
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      RNFetchBlob.fetch('POST', this.url,
            {
              'Content-Type': 'application/x-www-form-urlencoded'
              , 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
            }
            , this.makeQuery(param)
          )
          .then((response) => {
            
            if(response.info().status != 200){
              throw new Error('status error');
            }
            let base64Decode = base64.decode(response.data);
          let byteArray = new Uint8Array(base64Decode.length);
          for (var i = 0; i < base64Decode.length; i++) {
            byteArray[i] = base64Decode.codePointAt(i);
          }
      
          let decodedString = iconv.decode(byteArray, 'EUC-KR').toString();
      
          return decodedString;
          })
        }
      
블로그 코드넣기 더럽게 어렵네 ㅡㅡ,

2019년 9월 29일 일요일

react-native 초기 설정 정리

react-native 을 사용하며 공통으로 적용해야 할 내용들에 대해서 정리를 해본다.

  1. react-navigation
    • 설명 : 명칭 그대로 react 의 navigation 을 위한 모듈. 
    • 단순 사용시 설치 package
      yarn add react-navigation
      yarn add react-native-gesture-handler
    • Tab 사용시 추가 설치 package
      yarn add react-navigation-stack
  2. react-native-firebase
    • 설명 : firebase 모듈
    • 선행
      - 패키지 명 변경 : https://stackoverflow.com/questions/37389905/change-package-name-for-android-in-react-native?answertab=active#tab-top
      - firebase 프로젝트 등록 및 필수 파일 다운로드 : https://rnfirebase.io/docs/v5.x.x/installation/initial-setup 
    • package 설치
      yarn add react-native-firebase

2019년 9월 5일 목요일

tiles3 주의사항

definition 설정 중
wild 카드 사용시 순서 및 설정 법에 대하여 항상 잊는 것 같아 기록 함.

- wild 카드 사용

1. 컨트롤러
  return "/test/abcd";

2. tiles 설정파일
  <definition name="/test/*" template="/WEB-INF/tiles/layout/print.jsp">
<put-attribute name="body" value="/WEB-INF/jsp/{0}.jsp" />
  </definition>
  위에서 name 의 test 는 호출하는 controller 의 requestMapping 과는 무관하다.
  단순히 return 하는 jsp 파일의 경로 순서의 패턴을 가리키며
  put-attribute 의 {0} 도 사용한 wild 카드의 순서를 가리킨다.


- 설정 파일 순차 적용
 설정파일을 위에서 부터 읽다가 부합하는 조건이 있으면 xml 하단까지 안가고 해당 설정을 적용 한다.