본문 바로가기
220629 수 GitLab CI Runners & Executors 간단한 가이드 GitLab CI Runners & Executors 간단한 가이드 Executors 현재 내가 사용하고 있는 Runner 확인하기 Shell executor SSH executor VirtualBox/Parallels Executor Docker executor Docker Machine executor Kubernetes executor GitLab CI Runners & Executors 간단한 가이드 Executors GitLab CI 작업을 위한 자체 인프라를 생성하려면 자체 GitLab Runner를 호스팅해야 합니다. 하지만 Shell, SSH, 도커 등 어떤 Executor를 선택해야 할지 혼란스러울 수 있습니다. GitLab CI는 젠킨스와 같은 더 전통적인 CI 서버의 기본 설치와 달리.. 2022. 6. 29.
220628 화 CI / CD 파이프라인 구성 (GitLab) CI / CD 파이프라인 (GitLab) 파이프라인 구성 파이프라인 종류 파이프라인 설정 CI / CD 파이프라인 (GitLab) 파이프라인은 지속적 통합(CI), 제공(CD), 배포(CD) 의 최상위 구성요소입니다. 파이프라인 구성 파이프라인은 다음과 같이 구성됩니다. Jobs :: 수행할 작업을 정의합니다. 코드를 컴파일하거나 테스트하는 작업입니다. Stages :: 작업 실행 시기를 정의하는 단계입니다. [코드를 컴파일하는 단계] 이후에 테스트를 실행하는 단계입니다. jobs는 runner 에 의해 실행됩니다. 충분한 runners 가 있다면 동일한 stage 의 여러개의 작업이 동시에 실행됩니다. 한 단계의 모든 jobs 가 성공하면 파이프라인이 다음 단계로 이동합니다. 만약 특정 단계에서 job.. 2022. 6. 28.
220628 화 CI / CD 개념 CI / CD 개념 CI (Continuous Integration) CD (Continuous Delivery) CD (Continuous Deployment) CI / CD 개념 지속적인 소프트웨어 개발 방법을 통해 반복적인 코드 변경 사항을 지속적으로 구축, 테스트 및 배포할 수 있습니다. 이러한 반복 프로세스는 버그가 있거나 이전 버전을 기반으로 새 코드를 개발할 가능성을 줄이는 데 도움이 됩니다. CI / CD 를 사용하면 개발 부터 배포까지 사람의 직접적인 개입을 줄이거나 전혀 개입이 없어도 됩니다. CI (Continuous Integration) CD (Continuous Delivery) CD (Continuous Deployment) CI (Continuous Integration) 개.. 2022. 6. 28.
220627 월 TDD 정의 및 효과 TDD란? (Test Driven Development) TDD의 효과 TDD에 관한 편견과 실상 TDD는 무조건 해야 한다? TDD는 버그를 박멸한다? TDD는 항상 느리다? 테스트 기법의 종류와 장단점 테스트 주도 개발 프로세스 TDD 메인 프로세스 단위테스트시 참고사항 TDD란? (Test Driven Development) 테스트 주도 개발(TDD) 은 소프트웨어를 개발하는 여러 방법론 중 하나이다. 제품이 오류 없이 정상 작동하는지 확인하기 위해 모든 코드는 프로그래머가 작성하고 나서 테스트를 거치게 되는데, TDD에서는 제품의 기능 구현을 위한 코드와 별개로, 해당 기능이 정상적으로 움직이는지 검증하기 위한 테스트 코드를 작성한다. 이를 통해 테스트가 실패할 경우, 테스트를 통과하기 위한 최소.. 2022. 6. 27.
220503 화 Request Payload 를 숨기는 방법? Request Payload 를 숨기는 방법이 있나요? 먼저, 누구를 위한 포스팅인가? 해당 번역 포스팅은, 클라이언트 사이드에서 브라우저 개발자도구를 통하여 아이디/비밀번호를 전송하면서 발생하는 보안 정보 노출에 대해서 검색하다가 결과에 노출된 검색결과입니다. 참고로 이 포스팅은 생각보다 개발자에게 유용한 정보를 담고있지는 않았습니다. 정말 단순히 "크롬의 Network 탭을 닫는 방법", "Swagger 의 API 를 숨기는 방법" 등 방법적인것이 주를 이루어져있었기 때문에, 클라이언트 개발자들이 궁금해하고 필요해보이는, 명료한 내용만 번역하여 정리해보았습니다. 클라이언트사이드에서 암호화하여 데이터를 전송하는 방법은 추후에 다른 포스팅으로 다뤄보겠습니다. 목차 Request Payload 를 숨기는 .. 2022. 5. 3.
220426 CSS Toggles css-toggles 패키지 사용방법 해당 포스팅은 큰 특징만 정리하였습니다. 기타 다른 사항은 oddbird.net/ Docs 를 참고하세요 Global Color Toggle light / dark 모드를 변경할 때 사용할 수 있습니다. html { toggle-root: mode [auto light dark]; } html:toggle (mode light) { ... } html:toggle (mode dark) { ... } .mode-btn { toggle-trigger: mode; } Binary self-toggle switches .todo li { toggle: todo self; list-style-type: '❌ '; } .todo li:toggle(todo) { l.. 2022. 4. 26.
220121 LeetCode - Palidrome 풀이 (JS) LeetCode 풀이 Palidrome (Easy) /** * @param {number} x * @return {boolean} */ const isPalindrome = function(x) { const reversed = String(x).split('').reverse().join('') const regex = new RegExp(reversed, 'g') return regex.test(x) } Palidrome Linked List (Medium) head 가 조건이 있는 연결리스트로 구현되어있어 일단 연결리스트부터 코드로 작성하였다. 직접 작성한 답안 /** * @param {ListNode} head * @return {boolean} */ var isPalindrome = functi.. 2022. 1. 21.
220120 LeetCode - Two Sums 풀이 (JS) LeetCode 풀이 Two Sums (Easy) 코테준비를 위해 풀이를 시작했다. 프로그래머스를 선택하지 않은 이유는, 나름 코딩테스트 초급수준인데 level2 부터는 구현하기 꽤 어려웠기 때문이다. /** * @param {number[]} nums * @param {number} target * @return {number[]} */ var twoSum = function(nums, target) { let test = [] const queue = [...nums] let firstIdx = 0 while (queue.length > 1) { for (let i = firstIdx; i < nums.length; i++) { if (i === firstIdx) continue // console... 2022. 1. 20.
220109 최단 경로 알고리즘 개념 최단 경로 알고리즘 개념 가장 빠른 길찾기 최단 경로 Shortest path 알고리즘은 말 그대로 가장 짧은 경로를 찾는 알고리즘이다. 그래서 "길 찾기" 문제 라고도 한다. 최단 경로 알고리즘 유형에는 다양한 종류가 있는데, 상황에 맞는 효율적인 알고리즘이 이미 정립되어있다. '한 지점에서 다른 특정 지점까지의 최단 경로를 구해야 하는 경우', '모든 지점에서 다른 모든 지점까지의 최단 경로를 모두 구해야 하는 경우' 등이 다양한 사례가 존재한다. 이런 사례에 맞는 알고리즘을 알고있다면 문제를 좀 더 쉽게 풀 수 있다. 최단 경로 문제는 보통 그래프를 이용해 표현하는데, 각 지점은 그래프에서 '노드'*로 표현되고, 지점간 연결된 *도로는 '간선' 으로 표현된다. 또한 실제 코딩 테스트에서는 최단 경로.. 2022. 1. 16.
211227 다이나믹 프로그래밍 다이나믹 프로그래밍 피보나치 수열 피보나치 수열 구하는 과정 메모이제이션 (Memoization) 기법 결론 다이나믹 프로그래밍 한 번 계산한 문제는 다시 계산하지 않도록 하는 알고리즘 중복되는 연산 줄이기 프로그래밍에서 다이나믹 이란, &#39;프로그램이 실행되는 도중에&#39; 라는 의미이다. 자료구조에서 동적 할당(Dynamic Allocation) 은 프로그램 실행 중에 프로그램 실행에 필요한 메모리를 할당하는 기법이다. 그러나 &#39;다이나믹 프로그램&#39; 에서는 이런 의미는 아니라는 것을 기억하자. 피보나치 수열 이전 두 항의 합을 현재의 항으로 설정하는 특징이 있는 수열 $n$ 번째 피보나치 수 = $(n - 1)$ 번째 피보나치 수 + $(n - 2)$ 번째 피보나치 수 단, 1 번째.. 2022. 1. 16.
211221 이진탐색 개념 이진탐색 순차 탐색 이진탐색 : 반으로 쪼개면서 탐색하기 트리 자료구조 이진 탐색 트리 이진탐색 리스트 내에서 탐색 범위를 반으로 좁혀가며 데이터를 빠르게 탐색하는 알고리즘 순차 탐색 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차례대로 확인하는 방법 (일반적인 탐색) # 순차탐색 코드 구현 def sequential_search(n, target, array): # 각 원소를 하나씩 확인하며 for i in range(n): # 현재의 원소가 찾고자하는 원소와 동일한 경우 if array[i] == target: return i + 1 # 현재의 위치 반환 (인덱스 0 부터 시작하므로 1 더하기) print(&#39;생성할 원소 개수를 입력한 다음 한 칸 띄고 찾을 문자열 입.. 2022. 1. 16.
211208 정렬 개념 정렬 (Sorting) 선택 정렬 삽입 정렬 퀵 정렬 계수 정렬 파이썬의 정렬 라이브러리 (sorted, sort) 정렬 (Sorting) 참고할만한 사이트 :: https://im-developer.tistory.com/133 데이터를 특정한 기준에 따라서 순서대로 나열 하는 것 프로그램에서 데이터를 가공할 때 오름차순이나 내림차순 등 대부분 어떤 식으로든 정렬해서 사용하는 경우가 많기에 정렬 알고리즘은 프로그램을 작성할 때 가장 많이 사용되는 알고리즘 중 하나다. 정렬 알고리즘으로 데이터를 정렬하면 이진 탐색(binary) 이 가능해진다. 보통 정렬을 공부하면 &#39;알고리즘의 효율성&#39; 을 쉽게 이해할 수 있어 알고리즘 개론서 초반에 정렬 알고리즘을 설명하는 경우가 많다. 정렬 알고리즘을 공.. 2022. 1. 16.