전체 글

· 공부/Infra
jenkins란? Jenkins는 중앙 빌드 및 지속적인 통합 프로세스가 가능하며, Windows, macOS 및 기타 Unix 계열 운영 체제용 패키지가 포함된 독립형 Java 기반 프로그램이다. 수백개의 플러그인을 사용할 수 있는 Jenkins는 소프트웨어 개발 프로젝트의 빌드 파이프라인 구성, Build 자동화의 확립, 배포 및 테스트 자동화 등을 지원한다. jenkins 구축 Google Cloud에서 VM인스턴스 생성 후, 명령프롬프트에 연결(putty 사용했음) 1. jenkins 설치 다운로드 링크 : https://pkg.jenkins.io/debian-stable/ curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key |..
· 공부/Infra
CI/CD란? CI(Continuous Integration) 지속적인 통합 빌드, 테스트 자동화 1. 빌드(Build) 2. 테스트(Test) 3. 통합(Merge) ✔ CI 적용 전 : 개발을 마치고 배포 후 오류를 확인했다. ✔ CI 적용 후 : - 코드 변경 사항을 정기적으로 빌드, 테스트하여 공유 레포지토리에 통합되는 과정을 통해 품질을 유지하면서 개발을 진행한다. - 여러 명이 하나의 코드에 대해서 수정을 진행해도 지속적으로 통합하면서 관리 가능하다. → ⌚ 하지만, 개발자가 직접 코드를 병합하고 빌드, 테스트를 검증하는 것은 시간이 많이 소요됨 ≫ 자동화 CI 순서 1. 개발자가 구현한 코드를 기존 코드와 병합 2. 변합된 코드가 올바르게 동작하고 빌드되는지 검증 3. 테스트 결과에 문제가 ..
문제 내 풀이 📌 CASE 📌 WHEN NAME IS NULL THEN 'No name' NAME이 NULL일 경우, 'No name'으로 표시 📌 ELSE NAME 그렇지 않을 경우, NAME과 SEX_UPON_INTAKE 표시 📌 END AS NAME, SEX_UPON_INTAKE NAME을 "NAME"이라는 별칭으로 지정, 나온 NAME값과 SEX_UPON_INTAKE 조회 SELECT ANIMAL_TYPE, CASE WHEN NAME IS NULL THEN 'No name' ELSE NAME END AS NAME, SEX_UPON_INTAKE FROM ANIMAL_INS 다른 사람 풀이 📌 IFNULL(NAME, 'No name') NAME이 NULL일 경우, 'No name'으로 출력 SELEC..
문제 풀이 대소문자 구별 하지 않는다. → UPPDER(NAME) 모두 대문자로 바꾸기 EL들어가는거 찾기 → '%EL%' SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE UPPER(NAME) LIKE '%EL%' AND ANIMAL_TYPE = 'DOG' ORDER BY NAME;
문제 풀이 DISTNCT : 결과 집합에서 중복된 값을 제거하여 유일한 값만을 반환하는 역할 IS NOT NULL : NULL값 제외 SELECT COUNT(DISTINCT NAME) AS 'COUNT' FROM ANIMAL_INS WHERE NAME IS NOT NULL;
· 공부/Infra
직접 프로그램 설치 mysql설치 참고 링크 : https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/ 1. 다운로드 링크 web get(마치 클릭하는 것과 같음..) wget https://dev.mysql.com/get/mysql-apt-config_0.8.26-1_all.deb 2. dpkg(debian package)에서 config_0.8.26-1_all.deb 파일을 설치 sudo dpkg -i mysql-apt-config_0.8.26-1_all.deb OK 선택 3. apt 업데이트 sudo apt-get update 4. mysql-server 서버 다운 sudo apt-get install mysql-server MySQL 비번 정하고 OK..
📌 단축키 설정 alias ll='ls -al' 📌 * 파일 앞에.(점)이 있는건 숨긴 파일임.. .bashrc : bash가 실행될 때 설정 파일 📌 환경변수 등록 export config='/home/playdata/config' 📌 출력 echo $config >> /home/playdata/config 📌 .bashrc에서 변경했던 설정을 바로 적용 source .bashrc 📌 파일 실행 > 결과값 파일 2> err 저장파일 node app.js >app.out 2>app.err app.js의 결과값 저장 : app.out app.js의 에러 저장 : app.err 📌 권한 파일 종류 / 디렉토리소유자(사용자) / 디렉토리 그룹 / 다른 사용자 -/rw-/r--/r-- chmod 666 test..
문제 풀이 SELECT NAME, COUNT(NAME) AS 'COUNT' FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME) >1 ORDER BY NAME 세부 풀이 SELECT NAME, COUNT(NAME) AS 'COUNT' 이름과 이름이 나타나는 횟수를 보겠다. COUNT(NAME)의 이름은 COUNT다. FROM ANIMAL_INS ' ANIMAL_INS' 테이블에서 GROUP BY NAME 이름별로 그룹화 HAVING COUNT(NAME) >1 GROUP을 사용했때는 조건절이 WHERE이 아닌 HAVING.. 문제에서 이름이 없는 동물을 제외하라고 했기 때문에 조건절 개수가 1 이상으로 설정.. ORDER BY NAME 이름별로 결과값 정렬 보완점 mysq..
IoC, DI, 컨테이너 제어의 역전 IoC(Inversion of Control) 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성, 연결, 실행했다. 즉, 구현 객체(예를들어, Service에서 생성, 연결, 실행 다 함..)가 프로그램의 제어 흐름을 스스로 조종했다. 하지만! AppConfig를 생성한 이후에는 구현 객체는 자신의 로직을 실행하는 역할만 담당한다. 즉, 프로그램의 제어의 흐름은 AppConfig가 가져간다. 프로그램에 대한 제어 흐름에 대한 권한은 모두 AppConfig가 가지고 있다. 심지어 OrderServiceImpl 도 AppConfig가 생성한다. 그리고 AppConfig는 OrderServiceImpl 이 아닌 OrderService 인터페이스의 다른 구현 객체..
좋은 객체 지향 설계의 5가지 원칙(SOLID 원칙) 1.SRP : 단일 책임 원칙(Single Responsibility Principle) 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 모호하다 → 기준은 변경이다. 변경이 있을 때 파급효과가 적으면 단일 책임 원칙을 잘 따른 것이다. 2. OCP : 개방-폐쇄 원칙(Open/Closed Principle) 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. 다형성 활용 → 인터페이스를 구현한 새로운 클래스를 하나 만ㄷ르어서 새로운 기능을 구현 역할과 구현의 분리하면 된다. 3. LSP : 리스코프 치환 원칙(Liskov Substitytion Principle) 프로그램의 객체는 프로그램의 확장성을 깨뜨리지 않으면서..
sesam
everything in sesam