2025년 6월 3일 화요일

adb reverse error with more than one device

 https://gitlab.com/nile8991117/com.gofillus.nile.client.mobile.git

2022년 4월 28일 목요일

회사 내부망 java javax.net.ssl.SSLHandshakeException: PKIX path building failed

 회사 내부망의 경우 https 의 ssl 변조가 있어 

 java javax.net.ssl.SSLHandshakeException: PKIX path building failed
오류가 발생 한다.

회사에서 제공하는 인증서가 있는 경우 다음과 같이 

java security 에 등록하여 준다.


keytool.exe -importcert -keystore %JAVA_HOME%lib\security\cacerts -storepass changeit -file Company.cer

2022년 1월 10일 월요일

verdaccio docker run with apache proxy

 apache -> docker verdaccio 연동시

invalid host 였나.. 오류가 발생하여 해당 방법 으로 해결 함.


apache virtualhost 의 domain 정보를  

docker 구동 시 env 정보 전달


--env VERDACCIO_PUBLIC_URL=<domain>

verdaccio scoped package 403 error

 - 구성 환경

   -apache -> docker verdaccio


- 오류

  - scoped package publish 중 403 invalid package name 오류 발생.


- 원인

  - apache 에서 proxy 설정으로 연결했는데 전달 과정에서 encoding 되었거나 문제가 있는것으로 보임


- 처리방벙

  - apache 의 virtualhost 설정에 다음 추가

     AllowEncodedSlashes On

     ProxyPreserveHost On


2021년 10월 20일 수요일

CentOS 7 메일 발송 서버 구성

- postfix
  • yum install postfix
  • /etc/postfix/main.cf
- SPF : 국내 whitelist
  • https://spam.kisa.or.kr/integration/main.do
- DKIM : 해외 whitelist
  • 참고 : https://hiseon.me/linux/ubuntu/dkim-settings/

postfix 설치 후
listen ip 확인 후 
mynetworks 에 allow ip 설정 

주의사항.
DKIM 설치 중 도메인에 txt 를 등록 하는 과정이 있다.
몇몇 참고 자료 중 도메인 등록 방법이 약간 부족해 보이는데 다음과 같다
도메인이 example.com 과 같고 keys 의 txt 내용이 
mail._domainkey IN      TXT    
로 시작 한다면
도메인txt 는 mail._domainkey.example.com 에 등록한다.

2021년 8월 29일 일요일

OpenID connection discovery

OpenID 인증 방식을 지원하는 auth server 의 spec 을 확인 하는 주소.

https://server.com/.well-known/openid-configuration

2021년 7월 27일 화요일

swagger codegen 사용시 주의 사항

사용환경

- spring boot + swagger

- swagger codegen

- java



뭐 당연 한 거겠지만 swagger 의 doc 에 정의가 잘못 되어 있으면 생성 했을 때 결과에 문제가 있다.

겪은 문제


1. 서버는 basic auth 를 쓰고 있는데 apiclient 에서  basic auth 를 설정 하고자 하면 애를 먹는다.

   가능은 하지만 뭔가 정석이 아닌것 같고 이상하다.

   이는 apiClient 에서 수정할수 없는 authentication 을 생성하기 때문인데

   본론적인 문제는 doc 에 정의를 안해서 그렇다.

   


      securitySchemas 를 설정해라.


2. 서버에서 return 타입을 설정하지 않아 object 형태로 sdk 가 생성 되고 파싱 과정에서 데이터가 없는것처 럼 보인다. 뭐 당연하겠지만 이것도 doc 이 잘못 생성 되서 그렇다.


느낀점.

이런류의 코드들은 많은 사람들이 공들여 만든 코드다. 실수는 내가 한다. 휴먼 에러는 나다. ㅎㅎ

구글 블로그는 버리자. 코드넣기 힘들다

2021년 1월 15일 금요일

@JsonIdentityInfo 사용시 주의점

Spring 에서 JPA 사용하며 JSON 으로 변환시
Domain 간 양방향 참조를 걸 경우가 있다.

이때 JSON 으로 변환 하며 무한 루프에 빠지는데
이를 방지 하기 위해 
예전 방식

@JsonManagedReference

@JsonBackReference

과 

요즘 방식

@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id”)

을 쓰게 된다.


요즘 방식 @JsonIdentityInfo  의 경우 위 예제는 

id 로 중복을 방지하여 무한루프를 방지 하는데


한번의 변환에 같은 아이디가 존재 할 경우 JSON 변환을 하지 않는다.


무슨말이냐 하면..


JSON 변환 하는 과정에서 @JsonIdentityInfo  가 달려있는 도메인의 id 가 1개 이상 있으면 안된다는 것이다.

1개 이상 있으면 변환 과정중 1회 이상의 데이터는 변환하지 않는다.

해당 내용은 @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id”)

형태로 사용했을 경우이고

generator 를 변경하면 가능 할 것 같아 보이긴 한다.


그림으로 설명하기 귀찮아서 글로 적긴 했는데

아무튼 참고해라.



-- 추가 --

@JsonIdentityInfo 는 generator 별로 숫자, 문자, uuid 등으로 키를 생성하여

json변환 중 같은 키가 발견되면 같은 스코프 내에서는 표시 하지 않는다.


내 상황같은 경우를 잘 분석 해보니 데이터 루프 중 1depth 까지만 데이터를 표시하고 이하는 표시 하지 않는것을원한 것으로 분석 됐다.

이를 위해 위에서 언급 한 방식을 사용하지 않고

@OneToMany 어노테이션이 달린 List 데이터 필드 위에

@JsonIgnoreProperties 를 사용하여 해당 필드의 List 데이터 내에 

@ManyToOne 으로 설정 한 릴레이션에서 Json 편환을 하지 않도록 했다.

@JsonIgnoreProperties("auctionCase")

@OneToMany(mappedBy = "auctionCase", fetch = FetchType.LAZY)

private List<Research> research;



2020년 11월 2일 월요일

Spring boot 의 application.properties 사용방법

지금까지 spring boot 에서 application.properties 를 

사용해본 방법은 아래의 2 가지 상황이다.

  1. 서버의 환경 변수에 따른 dev, prd 등 의 능동적 적용
  2. 복수의 properties 파일을 적용

위에서 언급한 1,2번에 대한 사용 법을 안내 한다.

  • 서버의 환경 변수에 따른 dev, prd 등 의 능동적 적용
  • - 사용 이유 : 
    소스의 수정 없이 서버 인프라의 환경에 따라 application.properties 의 값을 적용하고자 할 경우

    - 방법 : 
    서버에서 VM argument 로 
    -Dspring.profiles.active=prd 와 같이 구동시 주입. 
    소스 상에서는  
    application-default.properties 
    application-prd.properties 
    와 같이  
    application-[값].properties 
    으로 구분함. 
    만약 구동 중  spring.profiles.active VM argument 값 없을경우 default 가 적용됨.

     

  • 복수의 properties 파일을 적용
  • - 사용 이유 : 
    패키지별 설정파일을 따로 분리하고자 하여 사용 하게 됨.

    - 방법 : 

     -Dspring.config.additional-location=classpath:config/*/ 

    위와같이 VM argument 적용하면 /src/main/resources/config/모든폴더/application.properties 를 찾아 적용한다. 

    이때 기존에 존재하던 classpath:application.properties 파일이 먼저 적용 되고 

    추가 파일은 override 되므로 참고하길 바란다.

     


     

     

      

    2020년 9월 24일 목요일

    SOAP 통신 주의할점. 아무리 봐도 왜 오류나는지 모른다면

    SOAP 통신을 Postman 혹은 curl 로 테스트를 해보고자 하였으나

    오류가 발생 하였다.

    Http header 와 body 를 아무리 보고 또 봐도 틀린게 없는데 왜 안되는걸까?

    왜지? 2일 정도를 보고 또 보다가 

    성공한 사람의 request 를 raw 데이터로 비교 해봐도 모르겠다 뭐지??

    이때 SOAP UI 테스트 툴로 테스트 하니 성공 함.

    기존 request 와 SOAP UI 를 사용한 request 의 다른점을 확인하기 위해 

    로컬에 네트워크 scanner 를 키고 캡쳐를 했다.

    postman 과 SOAP UI.

    결과는 환장 함.


    header 에 SOAPAction key 로

    Endpoint 에서 사용할 function 을 정의 하는데 

    - Postman  : FN_TEST

    - SOAP UI : "FN_TEST"

    맞다. 큰따움표다 ㅋ

    SOAPAction : "FN_TEST" 여야 하는것이었다.


    이게 SOAP 의 규약 인지 

    아니면 내가 진행 하는 프로젝트의 룰인지는 더 찾아봐야 하겠으나

    뭐니 이게...

    2020년 8월 3일 월요일

    JPA 메서드로 쿼리 생성시 주의 사항

    메서드로 쿼리를 만들다 보면 분명 정확하게 했는데 
    Unable to locate Attribute  with the the given name [] on this ManagedType []
    이런 오류를 뱉으면서 안될때가 있다.

    뭐 당연히 변수 명은 camelcase 로 정의 했을것이고
    method 에서는 대문자로 시작했지.

    Entity
    private String aTest;

    Repository
    private findByATest(String aTest);

    이렇게 하면 문제 없는거 아냐?

    문제 없을것 같지만 안된다

    문제의 원인은 
    위 Entity 에서 정의한 변수명 룰에 있다.
    첫 시작 소문자가 1자리면 안된다.

    예를 들어 
    Entity
    private String aaTest;

    Repository
    private findByAaTest(String aTest);

    로 수정 후 테스트 시 문제 없는것을 확인 했다.

    문제를 알았으니 왜 인지를 알아야 하는데
    아직 모르겠다.
    왜일까..

    이런 저런 정보를 보았을때 Java Bean naming conventions 에 영향을 받는것이 아닌가 싶다..


    -- 정리 --
    해당 문제를 피해갈수 있는 방법
    1. 변수의 시작을 무조건 소문자 한자리로 시작 하지 않는다.
        aTest => aaTest
    2. 룰에 맞지 않는 변태 같은 짓이지만 변수의 시작을 대문자로 바꾼다.
        aTest => ATest

    해당 문제가 발생 한 이유는
    Entity 에 테이블의 접두사 T 를 항상 붙였다.
    예를 들어 code 관련 테이블은 TCode
    이럴때 당연히 camelcase 로 변경 하면 tCode 인데 
    이것때문에 문제가 생겼다.

    우선 근본적인 원인을 찾기 전까지는 접두사 T 를 붙이는 짓은 피하자.

    2020년 3월 21일 토요일

    git submodule 사용시 참조

    project 를 git 에 등록해서 관리하는데
    해당 project 하위에 타 git project 를 등록해서 사용할 경우
    이를 지원 하기 위해 git submodule 을 쓴다.

    설명은 아래 블로그에.

    https://pinedance.github.io/blog/2019/05/28/Git-Submodule

    2020년 3월 17일 화요일

    docker 한글

    docker 이미지로 tomcat 을 구동하는데 파일 작성시 파일의 한글이 깨지는 문제가 발생 했다.
    문제는 docker image 의 charset 을 설정 하지 않아서 발생 한 문제.

    -e LC_ALL=C.UTF-8

    옵션 추가 후 해결.

    ko_KR.UTF-8 로 변경 하기 위해서는 image 에 언어셋을 설치 해 주어야 하는데
    Dockerfile 에 아래 내용을 추가 해야 한다.

    RUN apt-get update && apt-get install -y locales RUN locale-gen ko_KR.UTF-8 ENV LC_ALL ko_KR.UTF-8


    아래의 블로그 사용자 님의 내용을 참고 하였다.

    https://www.44bits.io/ko/post/setup_linux_locale_on_ubuntu_and_debian_container

    2020년 3월 1일 일요일

    react-native plugins 정리

    React-Native 의
    자주 사용하는 혹은 사용하려고 고려중인 플러그인 목록 정리

    마지막 수정일 20.03.02


    • react-native-calendars
      • 달력
    • react-native-device-info
      • 하드웨어 정보
    • react-native-dropdownalert
      • status bar 에서 내려오는 alert
    • react-native-exit-app
      • App 종료
    • react-native-firebase
      • firebase
    • react-native-i18n
      • multi language
    • react-native-linear-gradient
      • linear gradient
    • react-native-modalbox
      • 웹의 모달 그것
    • react-native-navigation-bar-color
      • status bar 색상
    • react-native-permissions
      • 권한 허용
    • react-native-simple-toast
      • toat
    • react-native-swipe-list-view
      • 스와이프 가능한 list view
    • react-native-vector-icons
      • vector icons
    • react-navigation
      • navigation
    • rn-fetch-blob
      • blob 으로 fetch
      • 이게 종종 필요함. raw 타임으로 데이터 받아와야 할때
    • tfjs-react-native
      • google 의 tensorflow
    • react-native-image-picker
      • image picker

    2020년 2월 27일 목요일

    Mac OS Nodeclipse 'node' 찾지 못할때

    eclipse 에 nodeclipse 설치 후 js 파일 열면 아래와 같은 오류 메세지가 발생 했다.










    뭐 내용 보면 node 실행 파일을 못찾았다 이런 내용인데
    nodeclipse 설정의 파일 path 봐도 맞고
    node 파일 및 폴더 권한 봐도 맞고
    뭐징? 하는데 처리 방법이 있더라.

    아래는 내가 해본 내용들


    1. node 버전 확인 및 path variable 등록 되었나 확인
      • node -v
    2. 권한 변경
      • chmod 755 /usr/local/bin
      • chmod 755 /usr/local/bin/node
    3. 해결책
      • Eclipse 패키지 내의 eclipse.ini 에 아래 내용 등록
      • -Dorg.eclipse.wildwebdeveloper.nodeJSLocation=/usr/local/bin/node

    끝.

    아래 내용은 검색 되라고 오류내용 풀어 씀.

    Missing node.js
    Could not find node.js. This will result in editors missing key features.
    Please make sure node.js is installed and that your PATH environment variable
    contains the location to the 'node' executable.


    2020년 2월 11일 화요일

    rest-api-query-search-language-more-operations

    요즘 취미로 모바일 앱을 개발 하고있다.
    뭐 취미일수도 있고 광고비 벌려고 하는걸수도 있고.. ㅎ

    근데 문제가 혼자 서버사이드, 프론트 엔드 까지
    전부 개발을 하려니 시간도 너무 오래 걸리고
    서버 개발하다 프론트 엔드 개발하다 보면 어? 뭐 하고 있었지? ㅡㅡ;

    그래서 생각한게
    서버는 단순히 저장 용도로만 쓰자.
    서버에는 DB 접근 로직만 넣고
    리턴 받은 데이터로 클라이언트 에서 비즈니스 로직 개발.

    이를 위해 처음에는 url query 기반
    DB select 프로그램을 직접 만들어 봤는데 역시 개판 ㅋㅋ
    Spring 에 찾아 보니 예제가 있더라.

    참고 하시라.
    https://www.baeldung.com/rest-api-query-search-language-more-operations

    2020년 1월 9일 목요일

    2019년 12월 3일 화요일

    QueryDSL 기본 사용법 링크

    QueryDSL 사용법

    JunYoung Park 님의 블로그에 잘 설명되어 있다.

    https://joont92.github.io/jpa/QueryDSL/