[Oracle / Tibero ] Synonym 이슈 / Synonym이란?
·
개발
배경회사 업무중, 개발 환경과 운영 환경 사이의 테이블이 일치하지 않는 상황이 있었다.운영 환경에 있는 테이블을 참조하여, 개발 환경에도 동일한 테이블을 생성해주었는데서버에서 테이블이 없다는 오류가 지속적으로 발생했음!   원인 이는 알고보니 서버에서 DB에 접근하는 계정과, DB에서 테이블을 컨트롤 하는 계정의 정보가 달랐기 때문이었다.(계정을 구분한 이유는 보안상의 이유가 있었음.) 그리고 서버 계정에서는 Synonym 기능을 활용하여 테이블에 접근하고 있었음.  해결 권한부여 자신이 만든 테이블이 아닐 경우, 테이블 조작의 권한이 존재하지 않음.따라서 GRANT 명령어로 특정 계정에 권한을 부여해주어야 함 -- ANOTHER_USER 에게 MY_TABLE 에 대한 SELECT 권한을 부여GRANT..
Nest JS 프로젝트 배포 자동화 하기 (3) - 스크립트 작성
·
개발
(1) 편 - https://whiporithm.tistory.com/103 (2) 편 - https://whiporithm.tistory.com/104 젠킨스 스크립트 작성 및 배포 프로젝트 생성 현재 push 이벤트에 ci를 수행하는 젠킨스 프로젝트를 만들었는데, cd (배포) 프로젝트도 만들어서 ci가 이루어진 후에 cd 가 이루어지도록 설정하려고 한다. ci project -> 테스트, 도커 빌드, 도커헙에 push cd project -> 도커헙에서 pull, 도커 이미지 컨테이너화 (도커헙에 올리기 위해서 계정이 필요하니 없으면 만들자.) https://www.docker.com/products/docker-hub/ The World’s Largest Container Registry | Do..
Nest JS 프로젝트 배포 자동화 하기 (2) - docker 설치
·
개발
(1) 편 - https://whiporithm.tistory.com/103 (3) 편 - https://whiporithm.tistory.com/107 도커 설치 다음은 ec2에 도커를 설치해보겠다. 나는 아래 공식 사이트를 참고하여 설치했다. (예전에는 이런 툴 설치는 블로그를 자주 검색했는데, 공식 문서가 짱이더라.) 젠킨스처럼 os마다 설치 방식을 안내해주는데, 우분투로 확인해보자. https://docs.docker.com/desktop/install/ubuntu/ Install Docker Desktop on Ubuntu Learn how to install, launch and upgrade Docker Desktop on Ubuntu. This quick guide will cover pr..
Nest JS 프로젝트 배포 자동화 하기 (1) - jenkins, webhook
·
개발
(2) 편 - https://whiporithm.tistory.com/104 (3) 편 - https://whiporithm.tistory.com/107 서론 본격적인 프로젝트를 앞서, 배포 자동화를 한 번 경험해보고 싶었다. 개발로도 벅찰 거 같아 배포에도 신경을 많이 쓰고 싶지 않기에, jenkins와 docker를 활용한 간단한 배포 자동화 구조를 만들어보려 한다. Nest 프로젝트를 배포한다고 했지만, 언어나 프레임워크가 중요한건 아니긴 하다. 어찌되었던, 아래는 내가 생각한 구조이다. 우선 코드를 push 하면 Webhook을 통해 이벤트를 보낸다 이후에 빌드서버에서 해당 코드를 가져와 테스팅 및 빌드를 진행하고, 도커 이미지화를 시킨다. 이미지 파일은 docker hub 에 올리고, 배포 서버..
[쉘 스크립트] for / while 문
·
쉘 스크립트
for문 조건문 다음에는 반복문이다, for문의 기본적인 형태는 두가지가 존재한다. 첫번째로는 파이썬과 같이 in 키워드를 사용하여 표현하는 것이다. for 변수 in [ 범위(리스트, 또는 배열, 그 외의 묶음 등) ] do 수행문 done 어떤것을 순회할지 in 뒤에 명시해준다 이후 do안에 수행문을 작성하고 done으로 for문의 끝을 알려준다. 두번째로는 C나Java에서 for문을 표현하는 고전적인 형태이다. for ((변수=초기값; 조건식; 증가값)) do 수행문 done 일반적으로 아는 for문의 형태로 표현한다. for문 예제 1) in 을 사용한 기본 사용법 #!/bin/bash for num in 1 2 3 do echo $num done #!/bin/bash numbers="1 2 3"..
[Java] 자바 제네릭, Generic 문법
·
자바
기존 프로젝트를 리팩토링 하다가 제네릭 문법을 만났다. 어떤 의미로 사용하는지는 알지만, 제대로 알고 사용한게 아니라서 다시 보는데도 너무 헷갈렸다. 생각해보니 제네릭을 책으로 제대로 공부한 적이 없어서.. 책장에 있는 책을 참고해서 제네릭 클래스와 메소드 정도를 가볍게 정리해보려 한다. 제네릭의 의미와 필요성 제네릭의 뜻은 '일반화' 이다. 그리고 자바에서 말하는 일반화의 대상은 자료형을 의미한다. 간단히 말하면 특정 클래스나 메소드를 사용하는데에 있어서 자료형의 구속에서 벗어날 수 있는 것이다. 자바는 객체지향 언어이니 클래스를 기준으로 설명해보겠다. 클래스가 총3개가 있다고 해보자, '사과' , '오렌지' , '박스' 이다. 이 때 현실적으로 박스에는 사과나 오렌지, 어떤게 들어가도 큰 상관이 없어..
MSA 아키텍쳐란?
·
개발
서론 일반적으로 프로젝트를 개발하면 한 프로젝트 파일을 만들어서 관리한다. 이러한 일반적인 구조를 모놀리식 구조라고 하는데, 이와 다르게 서비스별로 프로젝트를 생성해서 이를 관리하는 MSA (Microservice Archtiecture) 구조도 존재한다. 대표적으로 아마존과 넷플릭스가 MSA를 사용한다고 알려져있다. 이전에 진행한 프로젝트를 MSA구조로 개발했는데 복습겸 정리해볼려한다. 모놀리식(Monolithic) vs 마이크로서비스(Microservice) Monolithic Architecture 모놀리식 구조는 한 프로젝트 파일에 모든 구성요소를 넣어 개발하는 구조를 의미한다. 전통적인 방법이다. 장점 상대적으로 운영하기 용이하다. => 프로젝트 파일이 하나이므로, 관찰 대상이 하나이다. 내부 ..
쿠키 / 세션 / 토큰(JWT) 의 차이는?
·
개발
서론 개발하다보면 로그인을 구현할때가 많다. 로그인 구현하는거야 쉬우나, 해당 유저가 로그인이 된 유저인지, 아닌지를 판단하는게 중요하다. http는 기본적으로 stateless 프로토콜이기에 이전에 접속한 클라이언트의 정보를 기억하지 않는다. 따라서 요청때 판단을 해야한다. 간단하게 생각해보면 모든 요청때 유저 정보를 보낼 수가 있을것이다. (쿼리 스트링과 같은 형태로 ) 당연히 이 방법은 보안적으로도 안좋고, 모든 요청에 유저 정보에 대한 파라미터를 받아야 하므로 개발도 힘들어질 것이다. 이런 문제들을 해결하기 위하여 쿠키, 세션, 토큰 등의 방식이 등장했고, 이들을 활용하여 권한이 있는 유저인지 판단한다. 개발할때는 부랴부랴 찾아서 어떻게든 구현 하는 편인데, 개념이 헷갈려서 정리해볼려고 한다. 인..
TypeScript는 왜 사용하는 걸까?
·
개발
* 자바스크립트 초 뉴비가 작성한 글입니다, 부족한 점 및 잘못된 내용은 언제나 지적 환영입니다. 현재 부스트캠프 웹 풀스택을 진행중에 있고, 언어는 자바스크립트를 기본으로 사용하고 있다. 그러나 많은 캠퍼들이 자바스크립트가 아닌 타입스크립트로 전환해서 사용하고 있었다. 근래들어 타입스크립트를 많이 사용한다고만 알고 있었는데 두 언어의 차이점은 무엇인지 알아보고, 내가 전환해야할 이유들도 작성해보려 한다. 타입스크립트란? 그리고 자바스크립트의 특징 타입스크립트는 기본적으로 자바스크립트 기반의 언어이다. 그리고 가장 다른점은 '타입' 의 검사이다. 타입스크립트는 타입의 명시를 필수로 하며, 그 검사를 엄격하게 수행한다. 자바스크립트를 사용할 때는 따로 타입을 명시하지 않아도 되고, 검사도 수행하지 않는다...
[네이버 부스트캠프 8기] 멤버십 1주차 회고
·
회고
현재 부스트캠프 8기 웹 모바일 웹 풀스택 과정을 진행하고 있다. 8월 27일에 시작을 했고 막 1주차를 마친 참이다. 1주 동안의 느낀점을 작성해보려 한다. 일주일동안의 계획을 러프하게 짜볼 것 월요일에 미션이 출제되고, 일주일 동안 그 미션을 구현하는 방식으로 학습 스프린트는 진행된다. 챌린지 때는 하루하루 미션이 출제되었기에 하루를 빡 집중해서 앞으로만 달리면 됐었다. 그러나 멤버십의 과제는 기간이 꽤나 길게 주어지기에 자신이 어떻게 일주일을 보낼지를 러프하게 정해 보고 수행하면 좋을 것이라고 생각했다. 요구사항 분석부터 계획을 짜기 위해서는 그전에 수행되어야 할 것은 어떤 기능이 필요한지, 어떤 부분을 학습하고 구현해야 하는지 분석하는 것이다. 따라서 무엇부터 해보려고 하지 말고, 시간을 가지고 ..