728x90

AWS 리눅스 환경에 CI & CD를 적용하는데 

액션러너 설정에서 다음과 같은 오류가 나며 진행이 되지 않았다.

 

Libicu's dependencies is missing for Dotnet Core 6.0
Execute sudo ./bin/installdependencies.sh to install any missing Dotnet Core 6.0 dependencies.

기본적으로 AWS Linuxt는 X64 아키텍처라곤 하나 위에서 알려주는 .sh 파일 실행만으론 의존성이 해결되지 않는다.

종속성 문제이기 때문에 해결법은 필요한 라이브러리를 따로 설치해주면 된다.

 

sudo yum install perl-Digest-SHA -y

sudo yum install libicu -y

 

이후에 ./config.sh를 실행하면 정상적으로 GitHub의 액션런너와 연결이 되고 설정과정을 진행할 수 있게 된다.

728x90

Postman에 직접 컬렉션을 만들고 API 요청을 작성할 수도 있지만

다른 유저가 작성한 것을 가져와 사용할 수도 있다.

 

https://www.postman.com/explore

 

Postman | Postman API Network

Browse the largest network of APIs, workspaces, and collections by developers across the planet

www.postman.com

위의 URL에서 검색하거나

 

postman 데스크탑용 프로그램에서 아래와 같이 다른유저가 작성한 공개 컬렉션을 검색가능하다.

공개된 컬렉션 이름을 누르면 아래와 같이 자세한 요청 명세를 확인가능하다.

컬렉션 이름을 마우스 우클릭하면 아래에 Export가 보인다. 이를 클릭하면 json형태의 파일로 내려받을 수 있다.

이제 My workspace에서 import버튼을 누르면 아래와 같은 창이 뜨는데 해당 파일을 드래그앤 드랍해주면 컬렉션이 추가된다.

 

 

PROFIT!

힘들여 작성하지 말고 검색해서 가져오자!

728x90

Nuxt.js / Node.js로 구성된 프로젝트에서 다음과 같은 에러가 뜨고 백엔드 API 요청이 되지 않는 현상이 있었다.

Error occurred while trying to proxy request

 

결론적으로 아래 환경 변수 (프론트의 .env)에서 localhost를 127.0.0.1 로 바꾸니 해결되었다.

AXIOS_BASE_URL=http://localhost:8071

m1 mac과 node18 버전에서 생기는 호환성 문제라고 하는데 이것도 환경마다 차이가 있어서 정확한 원인을 알 수가 없다.

아시는 분은 댓글 달아주세요~!

 

| 참고

https://github.com/chimurai/http-proxy-middleware/issues/171

728x90

Settings > Developer Settings

메뉴에서

 

Personal access tokens > Tokens (elascic) 을 선택

Generate new token

 

git pull과 action을 사용하기 위해선 workflow만 선택하면 된다.

 

실서버에서 다음과 같이 pull을 받으면 된다.

git pull https://<계정명>:ghp_test6efghNantoKaNantoKaKUtYa1234Vx3Y0@github.com/test/test.git <branch이름>

 

728x90

개요

node에서 oracle client를 연동하기 위해서는 node-oracledb 라는 라이브러리가 필요하다. 이 글에서는 라이브러리 설치 및 환경변수 설정, 노드 백엔드에서의 간단한 연동법을 소개한다.

설치 및 환경변수 설정

💡 실행 환경 : linux arm64, m1 mac

 

  1. 다운로드
  • 아래 링크에서 Basic Light Package (ZIP)을 내려받는다

https://www.oracle.com/database/technologies/instant-client/linux-arm-aarch64-downloads.html

instantclient-basiclite-linux.arm64-19.10.0.0.0dbru (1).zip

  1. opt/oracle 폴더로 이동하여 압축해제
  • 경로이동

cd ~/../../opt/

/opt/oracle/instantclient_19_8 과 같이 라이브러리가 위치하도록한다.

  1. bash_profile 수정
  • vi ~/.bash_profile

DYLD_LIBRARY_PATH=/opt/oracle

(리눅스는 LD_LIBRARY_PATH)

  • source ~/.bash_profile
  1. 백엔드 실행 시 아래와 같은 오류가 없다면 정상적으로 연동된 것이다. 오류가 난다면 환경변수의 경로가 옳게 설정되었는지 다시 확인해본다.

Error: DPI-1047: Cannot locate a 64-bit Oracle Client library

사용법

  • 초기화 (라이브러리 경로 : libDir 을 확인)
const oracledb = require('oracledb');
const os = require('os');

switch (os.type().toLowerCase()) {
    case 'windows_nt':
        oracledb.initOracleClient({libDir: 'C:/EXTERNAL_LIBRARY/instantclient_21_8'});
        break;
    case 'darwin':
        oracledb.initOracleClient({libDir: '/opt/oracle/instantclient_19_8'});
        break;
    case 'linux':
        oracledb.initOracleClient({libDir: '/opt/oracle/instantclient_21_9'});
        break;
}

// 쿼리 아웃풋을 객체로 받을지 배열로 받을지 옵션 설정 (배열의 경우엔 .OUT_FORMAT_ARRAY)
oracledb.outFormat = oracledb.OUT_FORMAT_OBJECT;
  • 오라클 class 및 메소드 정의
class Oracle {
    constructor() {
    }
		// 접속 초기화
    async init() {
        const _this = this;
        return new Promise((resolve, reject) => {
            oracledb.getConnection({
                user: process.env.ORACLE_USER,
                password: process.env.ORACLE_PASS,
                connectString: process.env.ORACLE_HOST
            }, function (error, connection) {
                if (error) {
                    return reject(error);
                }
                _this.connection = connection;
                return resolve();
            });
        });
    }
		// 쿼리 실행
    execute(sql, params = []) {
        const _this = this;
        return new Promise((resolve, reject) => {
            _this.connection.execute(sql, params, function (error, result) {
                if (error) {
                    return reject(error);
                }
                return resolve(result.rows);
            });
        });
    }
		// 쿼리 커밋
    commit() {
        const _this = this;
        return new Promise((resolve, reject) => {
            if (_this.connection) {
                _this.connection.commit(error => {
                    _this.release();
                    if (error) {
                        return reject(error);
                    }
                    return resolve();
                });
            } else {
                return resolve();
            }
        });
    }
		// 롤백
    rollback() {
        const _this = this;
        return new Promise((resolve, reject) => {
            if (_this.connection) {
                _this.connection.rollback(error => {
                    _this.release();
                    if (error) {
                        return reject(error);
                    }
                    return resolve();
                });
            } else {
                return resolve();
            }
        });
    }
		// 접속 해제 (commit, rollback시 반드시 수행)
    release() {
        this.connection.release();
    }
}
  • 노드 백엔드의 객체 초기화 및 쿼리 실행 예제
const oracledb = new Oracle();
await oracledb.init();

( ... )
try {
	const [max_no] = await oracledb.execute(`SELECT MAX("NO") AS value FROM INTF_JJ.INTF_ES_ORDER WHERE REQ_DT = TO_CHAR(SYSDATE, 'YYYYMMDD')`);
	await oracledb.commit();
} catch (e) {
  await oracledb.rollback();
  return next(e);
}

참고

http://oracle.github.io/node-oracledb/

728x90

https://github.com/microsoft/vscode-eslint/issues/696#issuecomment-512252381

 

ESLint fails to load plugins when using ESLint 6.x · Issue #696 · microsoft/vscode-eslint

I have the following packages installed as dev deps: { "babel-eslint": "^10.0.2", "eslint": "^6.0.1", "eslint-config-prettier": "^5.1.0",...

github.com

eslint 플러긴 호환성 문제인듯하다

 

1. cmd + shift + p 를 눌러

>user setting 를 검색

 

2. settings.json에서 아래 항목 추가

{
    "eslint.workingDirectories": [
        { "mode": "auto" }
    ],
 }
728x90

프로젝트 폴더에서 node api 로 백엔드를 실행해본다

 

import dayjs from 'dayjs';
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at wrapSafe (internal/modules/cjs/loader.js:1001:16)

 

위와 같은 오류를 발견하면 해당 구문을 수정 후 다시 nuxt를 실행하면 된다. (혹은 package.json에 type moduel 지정 후 백엔드 소스 수정)

 

예시) 

변경 전

import dayjs from 'dayjs';
import isSameOrAfter from 'dayjs/plugin/isSameOrAfter';

dayjs.extend(isSameOrAfter);

export default dayjs;

 

변경 후

const dayjs = require('dayjs');
const isSameOrAfter = require('dayjs/plugin/isSameOrAfter');

dayjs.extend(isSameOrAfter);

module.exports = dayjs;
728x90

Module Warning (from ./node_modules/@nuxt/postcss8/node_modules/postcss-loader/dist/cjs.js):                                                                               friendly-errors 15:44:51

과 같은 워닝뜰 때

 

 

1. npm install @nuxt/postcss8. ( or yarn add )

2. nuxt.config.js → buildModules → '@nuxt/postcss8' 추가

728x90

 sudo vi /etc/httpd/conf.d/vhost.conf 

 

<VirtualHost *:80>
        ServerName test.site.net
        ProxyRequests Off
        ProxyPreserveHost On
        ProxyPass / http://localhost:8012/
        ProxyPassReverse / http://localhost:8012/
        RewriteEngine On
        RewriteCond %{REQUEST_METHOD} ^OPTIONS
        RewriteRule .* - [F]
</VirtualHost>

 

E2C Route53 설정

  1. Route 53 > Hosted zones 에서 domain.net 선택
  2. Create reacord에서 Routing policy 종류를 심플 라우팅으로 선택
  3. Configure records - Define simple record 선택
728x90

리액트 네이티브 개발을 하려는데 빌드하려고보니 최신 안드로이드 그래들은 jdk11을 요구한다.

그래서 openJDK를 설치하여 환경 변수를 설정하고 새로 빌드하니 해결되었다.

 

1. brew사용한 설치 

brew install adoptopenjdk11 --cask

 

2. 자바홈 확인

/usr/libexec/java_home -V

Matching Java Virtual Machines (2):
    11.0.11 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 11" /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
    1.8.0_312 (arm64) "Azul Systems, Inc." - "Zulu 8.58.0.13" /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home

 

3. 환경변수 편집 ( zshrc를 수정해도 된다 )

vi ~/.bash_profile

editor 열리면 G 입력으로 맨끝줄 이동하여 아래 코드 추가

export JAVA_HOME="/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home"

 

저장 후 (:wq)  환경변수 적용

source ~/.bash_profile

4. 변경된 자바 버전 확인

java -version

 

5. 안드로이드 그래들 JDK 버전 변경 ( mac 기준 cmd + , )

+ Recent posts