본문 바로가기

전체 글78

FreeRadius 로컬 인증서 갱신 및 인증서 파일별 역할 (crt, csr, key, p12, pem) 우리 회사에서는 무선 네트워크 인증을 위해 FreeRadius 로 radius 서버를 구축해서 사용중에 있다. 지난 금요일에 휴가였는데 생각도 못하고 있다가 마침 처음으로 인증서 만료가 발생되었다. 비교적 최근에 구축한지라 처음 겪는 일이였다. mac쪽은 크게 영향이 없었는데 windows 쪽은 영향을 많이 받으신 것 같았다. (인증서 무시하도록 하는 설정을 찾아서 설정하는걸로 임시 방편으로 해결하신것 같다.) 그래서 월요일날 회사에 서버 인증서를 교체를 진행하였는데 진행하는 중에 생각보다 인증서 파일이 이것저것 많았다. 일단 재생성 과정과 함께 생성되는 각 파일의 의미에 대해서 알아두면 좋겠다 싶어서 정리해둔다. freeradius 로컬 인증서 재생성 절차 회사에서는 freeradius 구축을 위해 f.. 2023. 9. 5.
인수 테스트 (Acceptance Test) 계획서 작성하기 인수 테스트 (Acceptance Test) 위키피디아에 따르면 인수 테스트의 의미는 다음과 같다. 시스템이 실제 운영 환경에서 사용될 준비가 되었는지 최종적으로 확인하는 단계이다. 검사는 사용자가 평가하고 관리자가 점검한다. 모든 관계자가 새로운 시스템을 만족하면 시스템은 설치를 위해 정식으로 인수된다. QA로 일하면서 인수 테스트에 대해 들어는 보았지만 이번에 처음으로 인수 테스트 계획서를 작성해보게 되었다. 회사 특성상 자체 서비스를 만들다 보니 회사 외부의 다른 이해관계자를 위한 문서를 작성할 일이 크게 없었기에 회사 차원에서도 인수 테스트 를 작성한 것은 처음이였다고 한다. 그래서 회사 내의 양식은 따로 없었고 인터넷을 참고하여서 작성을 하였다. 구체적인 내용은 다른 블로그 들을 참고하면 될 것.. 2023. 9. 5.
[Python, 파이썬] 다익스트라 알고리즘 직접 구현해보기 파이썬으로 다익스트라 알고리즘을 직접 구현해보았다. 다익스트라 알고리즘은 그래프에서 꼭짓점 간의 최단 경로를 찾는 알고리즘이다. 위키피디아 나무위키 DirectedGraph (방향 그래프) 다익스트라 알고리즘을 적용할 그래프를 만들 기 위해 먼저 DirectedGraph (방향 그래프) 를 구현하였다. 다익스트라 알고리즘 (Dijkstra algorithm ) 구현 나무 위키에 단계별로 이미지와 함께 설명이 잘 되어있어 그대로 옮겼더니 정상적으로 동작하였다. python에서 static method 구현하기 관련해서 찾아보니 classmethod 와 staticmethod 에 대한 이야기가 나왔다. 나는 classmethod 를 이용해서 Dijkstra.find_shortest_path(graph, "A.. 2023. 9. 5.
[큐, Queue] 동물 보호소 동물 보호소: 먼저 들어온 동물이 먼저 나가는 동물 보호소(animal shelter)가 있다고 하자. 이 보호소는 개와 고양이만 수용한다. 사람들은 보호소에서 가장 오래된 동물부터 입양할 수 있는데, 개와 고양이 중 어떤 동물을 데려갈지 선택할 수 있다. 하지만 특정한 동물을 지정해 데려갈 수는 없다. 이 시스템을 자료구조로 구현하라. 이 자료구조는 enqueue, dequeueAny, dequeueDog, dequeueCat의 연산을 제공해야 한다. 기본적으로 탑재되어 있는 LinkedList 자료구조를 사용해도 좋다. 일단 기능 요구사항을 정리해보자. enqueue : queue에 저장 dequeueAny : "먼저 들어온 동물이 먼저 나가는" 이라고 명시되어 있기 때문에, 개나 고양이 상관없이 오.. 2023. 8. 31.
스택 두 개로 큐 만들기 스택으로 큐: 스택 두 개로 큐 하나를 구현한 MyQueue 클래스를 구현하라 스택 두 개를 이용해서 엘리먼트들을 옮기면서 마지막 엘리먼트를 넘겨주나? 기본적인 Queue는 FIFO 이기 때문에 Queue 에서 필요한 기능은 push() : 뒤에 넣음 pop() : 앞에서 꺼내감 일 것 같다. 이 때 stack 이라고 자료구조를 명시해주었기 때문에 array에 직접 접근 하는 것이 아닌 stack의 함수만 이용해야 한다고 가정하고 문제를 풀어나가 보았다. class Stack: def __init__(self): self.stack = [] def push(self, value): return self.stack.append(value) def pop(self): if not self.stack: ret.. 2023. 8. 30.
[스택, Stack] 현재 시점의 최소값 스택 Min: 기본적인 push와 pop 기능이 구현된 스택에서 최솟값을 반환하는 min 함수를 추가하려고 한다. 어떻게 설계할 수 있겠는가? push, pop, min 연산은 모두 O(1) 시간에 동작해야 한다. 문제를 처음 봤을 때는 "최소값을 저장하는 변수를 만들어 push, pop 시에 업데이트 해주면 되는거 아닌가?" 라고 생각했는데 그렇게 할 경우 O(1) 로 처리해야한다는 조건에서 pop시에 O(n)이 되어버릴 것 같았고, 그렇다고 별도의 array를 만들어 관리하자니 마찬가지로 O(n)이 되어버릴 것 같았다. 우선 기본 stack을 구현해보자. stack은 배열을 이용해서 구현할 수 있다. class Stack: def __init__(self): self.stack = [] def pus.. 2023. 8. 29.