반응형

※ 서버의 상황

- DNS 서버 : G사에서 회사 도메인을 관리

- 메일 발송 서버 : E사, N사에서 메일 서버를 둠

- E사는 회사 ERP 메일이며, N사는 noreply 메일로 활용

- 메일 발송 시 같은 "@도메인.com"을 사용

 

이슈 : N사의 메일서버에서 사내 ERP 메일에 메일 발송 시 스팸처리 되는 이슈

원인 : 도메인 서버 레코드에 사내 ERP MX레코드 누락

해결 : 도메인 서버 레코드에 사내 ERP MX레코드 등록

※ 사내 ERP 메일 서버 담당자에게 문의 하여 해결

반응형
반응형

※ 서버의 상황

- DNS 서버 : G사에서 회사 도메인을 관리

- 메일 발송 서버 : E사, N사에서 메일 서버를 둠

- E사는 회사 ERP 메일이며, N사는 noreply 메일로 활용

- 메일 발송 시 같은 "@도메인.com"을 사용

 

이슈 : 회사 메일 서버에서 gmail로 메일이 발송이 안되는 이슈가 발생

 

원인 : 메일의 DNS의 인증이 필요하도록 google의 정책 변경

※ google의 정책 : DNS에 SPF인증을 해야 수신이 가능하도록 함.

 

대응

: E사의 gmail 메일 서버 발송 정책 : SPF 인증만으로 gmail 발송

- E사의 메일서버에 SPF를 G사의 DNS서버 Record에 등록시킴

 

: N사의 gmail 메일 서버 발송 정책 : SPF, DKIM, DMARC의 인증이 있어야 gmail 발송

- N사의 메일서버에 SPF, DKIM, DMARC를 G사의 DNS서버 Record에 등록시키려 했으나,

G사의 Record의 바이트수가 DKIM을 담을 수 없어 이슈 발생

- G사, N사 모두 DNS를 바꾸던지 Mail 서버를 바꾸라는 답변

- DNS 서버를 N사로 변경(G사의 도메인의 네임서버를 N사로 설정)

- N사의 메일서버에 SPF, DKIM, DMARC를 N사의 DNS서버 Record에 등록

반응형
반응형
에러 메시지 :
org.springframework.restdocs.snippet.SnippetException: The following parts of the payload were not documented

 

{
  "list" : [ {
    "name" : "ai1"
  }, {
    "name" : "ai2"
  }, {
    "name" : "ai5"
  }, {
    "name" : "ai8"
  } ]
}
 
원인 : 에러메세지 밑에 있는 필드를 restdocs로 작성하지 않았다 or 오타
 
해결 방법 : test에서 name이라는 필드의 값을 찾아서 추가 또는 수정해준다.

fieldWithPath("name").type(JsonFieldType.STRING).description("인공지능 인스턴스 이름"),

 
※ 단순히 restdocs에서 작성 하지 않은 것만 보여주는 것이다. 
반응형
반응형
환경 : 
  • cpu : Intel(R) Core(TM) i5-9400 CPUT @ 2.90GHz
  • hdd : 418GB
  • Memory : 8GB
  • OS : CentOS Linux release 7.9.2009 (64bit)
 
상황 : 젠킨스 설치 후 실행 시 서버가 켜지지 않음
Starting jenkins (via systemctl):  Job for jenkins.service failed because the control process exited with error code. See "systemctl status jenkins.service" and "journalctl -xe" for details.
 

 

journalctl -xe에서 에러 메시지 :
jenkins[9063]: jenkins: failed to find a valid Java installation systemd[1]: jenkins.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: jenkins.service: Failed with result 'exit-code'.
systemd[1]: Failed to start My Company Jenkins Controller.
 
원인 : Java 설치 경로를 찾지 못함

 

해결 방법
1) 젠킨스 포트 번호 맞추기
(8080가 기본 포트로 설정 되어있으나 8080을 Well-Known 포트처럼 암묵적으로 많이쓰기때문에 변경필요) 

- 젠킨스 config 수정

sudo vi /etc/sysconfig/jenkins


JENKINS_PORT="9100"

 

- 젠킨스 서비스 config 수정

sudo vi /usr/lib/systemd/system/jenkins.service


Environment="JENKINS_PORT=9100"

 

 

2) 자바 11 버전 업데이트 
- 기존 버전 1.8에서 11버전 다운로드
- 환경변수 세팅
 
3) firewall 설정
sudo firewall-cmd --permanent --service=jenkins --add-port=9100/tcp
sudo firewall-cmd --permanent --add-service=jenkins
sudo firewall-cmd --reload

 

 

4) 자바 candidates 추가

- 젠킨스 시작 config에 java 버전 명시

sudo vi /etc/init.d/jenkins


candidates="
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-11.0/bin/java
/usr/lib/jvm/jre-11.0/bin/java
/usr/lib/jvm/java-11-openjdk-amd64
/usr/bin/java
/usr/local/lib/zulu11/bin/java
"

 

 

5) 자바 버전 명시
- 젠킨스 서비스 config에서 자바 위치 지정
sudo vi /usr/lib/systemd/system/jenkins.service


Environment="JAVA_HOME=/usr/local/lib/zulu11"​
 
 ※ 모든걸 다 적용했는데도 젠킨스 서버 start가 실패하여 5)으로해결 함 
반응형
반응형

select * from user_source
where type in ('PROCEDURE','FUNCTION','PACKAGE BODY')
and text like '%domain%'
order by name, line;

반응형
반응형

에러메세지 : was에서 안뜸

 

상황 : 파일 업로드 시 로컬에서는 정상작동 하나 서버에 올리니 controller에도 접근이 안되고 개발자도구에서 500 error 확인

 

원인 : was 서버 세팅에 로컬과 다르게 multipart context 설정이 안되어 있었음.

 

해결 : servers > was 서버 명 > context.xml에 추가 

<Context allowCasualMultipartParsing="true" path="/">

<Resources cachingAllowed="true" cacheMaxSize="100000" />

 

※ web.xml에 500 error 페이지 설정을 해놔서 

500 error 발생 시 에러 메세지에서 힌트를 얻을 수 없었음

500 error 페이지 설정을 걷어낸 후

개발자도구의 네트워크 > 500 error 발생한 url 클릭 > Response에서 하기의 오류 메세지를 보고 처리 할 수 있었음


"org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.lang.IllegalStateException: 어떤 multi-part 설정도 제공되지 않았기 때문에, part들을 처리할 수 없습니다."

반응형
반응형

상황 : 로컬 서버에서 잘 돌아갔던 파일 업로드가 live 서버에서 정상 작동을 안함

 

에러 메세지 (was) : java.io.IOException: java.io.IOException: Unexpected output data

에러 발생 소스 : multipartFile.transferTo(l_file);

 

원인 : 서버에 디렉토리가 없거나, 소유자와 권한설정이 안되어있음

 

해결 방법 : 디렉토리와 권한 부여

반응형
반응형

 

에러 메세지 : Failed to launch emulator. Reason: Could not start emulator within 30 seconds..

원인 : 버추얼 디바이스 메모리 이슈

 

해결 방법 : 

1. 안드로이드 스튜디오 실행

2. 상위 탭에서 Tools > AVD Manager 클릭

3. 좌측 하단의 Create Virtual Device... 클릭

4. 좌측 phone 탭 > pixel2 디바이스 선택 > 우측 하단 Clone Device... 클릭

5. 최상단 AVD Name을 본인이 알아볼수 있는 명칭으로 설정

6. 중간쯤 Memory 행의 RAM을 768로 설정 후 Finish 클릭

7. 설정한 AVD Name 선택 후 Next

8. 안드로이드 릴리즈버전 선택(난 Andriod 9.0 Pie 버전으로 세팅) 후 Next 

9. Finish

반응형
반응형

발생한 상황 : react-native 세팅 중 npm run android

 

에러 메세지 : error Failed to launch emulator. Reason: Emulator exited before boot..

 

원인 : 버추얼 디바이스 세팅

android SDK 버전을 android 9.0 (pie)로 다운받고 세팅했건만

버추얼 디바이스에서 android 버전을 11 (R)로 설정으로 세팅

 

해결방법 : 버추얼 디바이스를 동일하게 9.0 pie로 세팅

1. 안드로이드 스튜디오 실행

2. 상위 탭에서 Tools > AVD Manager 클릭

3. 좌측 하단의 Create Virtual Device... 클릭

4. 좌측 phone 탭 > pixel2 디바이스 선택 후 Next

5. 안드로이드 릴리즈버전 Andriod 9.0 Pie 버전으로 세팅 후 Next 

6. Finish

반응형
반응형

 

remix.ethereum.org/

 

- ① : 새로운 .sol 파일 생성

- ② : pc에 저장된 .sol 파일 불러오기

- ③ : contract를 작성하는 영역

- ④ : 솔라디티 compile에 관련 설정 탭

- ⑤ : compile 버전 설정 하는 곳 (현재 0.5.0버전 까지 나옴, github에 올라와있는 파일은 0.4.25 버전일때 작성함, 0.4.25 + commit.59dbf8f1 선택)

- ⑥ : 현재 파일에 대해 compile 시작 

- ⑦ : 현재 파일의 contract의 목록

- ⑧ : 선택한 contract의 정보를 볼수 있음(name, metadata, bytecode, abi, web3deploy, metadata hash, swarmlocation, functionhashes, gasestimates, devdoc, userdoc, runtime bytecode, assembly), 주로 bytecode, abi 정도 만 사용

- ⑨ : 해당 contract의 ABI 복사

- ⑩ : 해당 contract의 Bytecode 복사

- ⑪ : contract에 대한 동작을 실행 할 때 보여지는 consol log 

call : web3.ether. 블록체인의 function을 불렀을때 표시

vm : 이 노드로 트랜잭션이 발생됐을때 표시

 

 

- ⓐ : 솔라디티 실행에 관련된 탭

- ⓑ : .sol 파일을 실행 할 환경의 목록 (JavaScript VM, Injected Web3, Web3 Provider)

javascript Vm : 실행 환경이 노드에 연결되지 않고 모든 것이 로컬 및 메모리에서만 실행, remix에서 자체적인 머신

Injected Web3 : Metamask 또는 유사한 공급자가 실행 환경을 제공

Web3 Provider : ganache 또는 geth와 같은 환경으로 실행

- ⓒ : 실행환경과 연결된 계정 목록 (가나슈는 10개의 개정 제공, metamask는 1개의 계정 제공)

- ⓓ : contract 배포시 설정한 수치를 넘어갔을때 실행하지못하게 하기 위한 장치

- ⓔ : 트렌잭션에 실어 보낼 eth

- ⓕ : 현재 .sol 파일에 작성된 contract 목록

- ⓖ : 선택된 contract를 배포(배포시 초기값을 설정해 줘야한다면 택스트박스에 값을 넣어줘야함)

- ⓗ : 주소를 통해 contract를 load, 이미 배포된 선택된 contract와 연결하는 것

- ⓘ : Deploy된 conract(클릭 시 contract에 포함된 function이 보임 ⓙ, 가 예시) 

- ⓙ : 붉은 색의 버튼은 트랜잭션비용을 지불,  이외의 함수 호출 임을 나타냄

- ⓚ : 푸른 색의 버튼은 gas비용없이 트랜잭션없이가져옴, function 호출 시 값을 가져오는 함수임을 나타냄(get 함수)

- ⓛ : Deploy 된 다른 contract

- ⓜ : Deploy 된 모든 contracts 삭제

 

반응형

'개발의 흔적 > Blockchain' 카테고리의 다른 글

블록체인의 목표  (0) 2019.02.12
블록체인 동영상 강좌  (0) 2019.02.12
블록체인 트렌잭션의 이해  (0) 2019.02.12
블록체인 채굴이란  (0) 2019.02.12
블록체인 네트워크에 참여자  (0) 2019.02.12

+ Recent posts