본문 바로가기

전체 글65

[javascript] 숫자 형변환(문자열 -> Float) 문자열 -> 정수로 바꾸는건 간단하다. parseInt('3') "3.1"을 Float 3.1로 변환하려면? const a = '3.0'; parseInt(a); // 3 parseFloat(a); // 3 parseInt(a).toFixed(1) // "3.0" const b = '3.1' parseInt(a) // 3 parseFloat(b) // 3.1 parseInt(b).toFixed(1) // "3.0" parseFloat(b).toFixed(1) // "3.1" "3.0"을 parseFloat하면 당연히 3.0이 나올 줄 알았는데 아니어서 당황했다. 이럴땐 소숫점 자릿수를 지정해주는 toFixed()를 사용하면 된다. 대신... string으로 변환된다. 소숫점이 있는 경우, parseFlo.. 2020. 7. 4.
[Sequelize] there is no unique constraint matching given keys for referenced table 원인과 해결방법 기존에 MySQL+Sequelize를 사용하다가, PostgreSQL로 DB를 이전하게 되었다. dialect랑 접속정보만 바꿔주면 되는 간단한 작업이었는데, 아래와 같은 에러를 만나게 되었다. there is no unique constraint matching given keys for referenced table "rfqs" 멀쩡하게 잘 되던게 DB를 바꾸니까 에러가 났기 때문에 설정이라든지 문법의 문제겠거니 했는데.. 위 에러는 PK와 FK가 일치하지 않을 때 나는 에러다. 내 경우 한 테이블에 PK가 두개 지정되어 있었고, 해당 키를 FK로 갖는 다른 테이블은 두 PK중 하나만을 FK로 지정하고 있었다. 예를들어 (아무렇게나 쓴 수도코드다) Person { id: integer; email: .. 2020. 6. 23.
라이브러리 vs 프레임워크 공통점과 차이점 library vs framework 라이브러리와 프레임워크는 늘 헷갈린다. 내가 내려받은 코드가 어떤 것인지 검색해보면 의견이 분분할 때도 있다. 두 가지의 공통점은 개발자의 시간 절약에 도움을 주는 코드 뭉치라는 것이다. 일단은 위키백과 정의를 보자. 라이브러리 : 라이브러리는 주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다. 여기에는 구성 데이터, 문서, 도움말 자료, 메시지 틀, 미리 작성된 코드, 서브루틴, 클래스, 값, 자료형 사양을 포함할 수 있다. 프레임워크 : 컴퓨터 프로그래밍에서, 소프트웨어 프레임워크는 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조이다. 간단히 뼈대, 골조, 프레임워크라고도 한다. 이렇게 매우 폭넓은 정의는 이 용어를 버즈워드로서, 특히 소프트웨어 환경에서 .. 2020. 6. 20.
[Azure to AWS] Azure Pipeline으로 AWS Lambda 배포하기 참고 : 기존 Azure function을 옮기는 경우, 일단 새로 생성하고 코드를 옮기는게 낫습니다. 프로젝트 구조가 아예 달라서 새로 만드는걸 추천합니다.. 1. 람다 생성 새로운 람다를 생성합니다. 2. IAM User 생성 또는 선택 AWSLamdbdaFullAccess 권한을 가진 IAM User를 생성하거나, Access key ID & Secret을 준비합니다. 프로그래밍 방식 액세스 타입이어야 합니다. 3. Azure Repo 생성 리포지토리를 생성하고 파일을 추가합니다. 처음엔 아래와 같은 구조로 생성하면 됩니다. my-lambda ├── index.js └── .env // index.js exports.handler = (event, context, callback) => { // T.. 2020. 6. 19.
[Azure to EKS] Azure App Service -> k8s 이전시 환경변수 변환 스크립트 애저에서 쿠버네티스로 서비스를 이전할 때, 수많은 환경변수를 일일히 변환하는 것이 너무나 번거로워 스크립트를 만들었다. /** * 1. azure portal > 앱서비스 구성 > 고급 편집 > 복사 * 2-1. 환경변수로 넣을 항목은 envs, 시크릿에 넣을 항목은 secrets에 붙여넣기 * 2-2. kubSecretName, namespace 변경 * 3. node secret_generator.js 로 실행 */ const kubSecretName = '쿠버네티스 시크릿 이름'; const namespace = '쿠버네티스 네임스페이스 이름'; const envs = [ { name: 'PORT', value: '3000', slotSetting: false, }, ]; const secrets .. 2020. 6. 19.
[EKS] 쿠버네티스에 AWS Credential 추가하기 서비스에서 AWS SQS에 메시지를 보내거나 하는 등 aws-sdk를 사용하기 위해 IAM User 인증이 필요한 경우 서비스에서 꼭 필요로 하는 권한만을 가진 IAM user를 만든다. 필요하다면 그룹도 함께 만들어준다. 생성된 유저의 액세스 키 ID와 시크릿 키를 잘 저장해둔다. 쿠버네티스 대시보드(kubectl proxy)로 가서, 서비스가 위치한 네임스페이스를 선택하고, 좌측 메뉴 하단의 Secrets 메뉴로 가서 우상단의 +를 눌러 Secret을 추가한다. 아래와 같은 형식으로 추가하면 된다. 단 data에 들어가는 key들은 base64로 인코딩하여 넣어야 한다. 변환사이트 링크 : https://www.convertstring.com/ko/EncodeDecode/Base64Encode api.. 2020. 6. 10.
[Typescript] Jest 모킹시 빨간줄 뜨는 문제 (Property 'mock' does not exist on type) mocking시 모킹한 모듈이 몇번 호출되었는지 확인하는 테스트 코드를 짤 때, mock 부분에 빨간줄이 뜨면서 에러가 날 때가 있다. IDE에서 관련된 힌트를 주지도 않아서 한참 헤맸는데... 알고보니 TS Lint 문제였다. 해결방법은 간단하다. // @ts-ignore expect(mockedModule.mock.calls.length).toBe(0); 바로 윗줄에 // @ts-ignore를 추가해주면 된다. 2020. 6. 2.
티스토리에 2차 도메인 연결하기 - 도메인 구입부터 연결까지 도메인은 후이즈, 가비아 등 여러곳에서 구입이 가능합니다. 저는 구글 도메인에서 구입하였습니다. 링크 : https://domains.google/ Google Domains | Register Your Domain Name – Google Domains Find your place online with a domain from Google, powered by Google reliability, security and performance. domains.google 내가 가지고 싶은 도메인을 검색해볼 수 있는데요. 저는 morolog를 구매하고 싶어 검색했습니다. 특정 끝자리를 가지고 싶을 경우 morolog.com 등으로 검색해도 됩니다. 검색하면 이런 결과화면이 나타납니다. 저는 morolog.d.. 2020. 5. 27.
[AWS] CodeStar로 브랜치별 production/staging 자동배포 환경 만들기 준비물 master 브랜치만 있는 CodeStar 프로젝트 진행과정 기존에 생성되어있는 CodeStar 프로젝트에 staging 브랜치를 추가한다.(기존 프로젝트는 master 브랜치용으로 사용된다) staging 브랜치용 CodeStar 프로젝트 생성 파이프라인 수정 권한 수정 테스트 프로덕션용으로 사용할 CodeStar 프로젝트는 이미 생성되어 있다고 가정함. 프로덕션용 CodeStar 프로젝트 이름 : moro-test-lambda-API (이 글에서 새로 생성할)스테이징용 CodeStar 프로젝트 이름 : moro-stag-test 아래 staging 브랜치 생성과정의 프로젝트명이 moro-cstest라고 되어있는데 무시하면 된다. moro-test-lambda-API 프로젝트에 브랜치 생성할때 .. 2020. 4. 13.