본문 바로가기
728x90

전체 글246

Quarkus Cookbook [한빛 미디어] 쿠버네티스와 MSA 가 최근 트렌드로 변화하면서 개발에 필요한 리소스를 더 효율적으로 관리하고 각 산출물에 대한 더 높은 확장성이 요구되어 지고 있다. 이 책은 도입 초반 중반까지 그러한 요구에 맞춰 어떻게 쿼커스 응용프로그램을 개발하는지 (환경 구성 , 코드 작성 , 테스트 , 패키징 , 배포까지) [문제] [해결] 방식으로 예제 코드를 제시해주는 방식으로 설명을 해준다. 중간에 [논의]가 나오는데 실제 쿼커스를 도입하며 마주할 수 있는 부분에 대한 문제와 해결방향을 제시해준다. 중반부에서는 챕터10부터 쿼커스 응용프로그램을 쿠버네티스와 통합하여 쿼커스 서비스를 개발하고 배포하는데 필요한 방법들을 알려준다. 컨테이너 이미지 빌드 및 쿠버네티스 리소스 관리와 쿼커스 서비스를 배포하기까지 전반적인 그림을 .. 2021. 5. 23.
(한빛 미디어) 맛있는 디자인 일러스트레이터 CC 2021 책을 받기전 개발서적이 온줄 알았으나! 디자인 책이 와버렸다 ㅠ 이전에 개인 컨텐츠를 디자인하고 만들어보고싶어서 팬 타블렛 구매와 일러스트레이터 관련 강의도 알아 본적이 있다. 나의 터무니없는 미적감각과 트렌디한 밈을 반영한 케릭터를 만들고 싶었으나 당장 어떻게 시작해야할지 몰랐는데 이 책을 보면서 다양한 온라인 강의에 나오는 목차 내용들이 "아 어떤부분 다루겠구나" 라는 부분도 알 수 있게됐다. 이 책이 막 일러스트레이터 현업 실무 1년차 들에게 추천해주는 책이라고 들어서 사실 단순히 취미로 입문하기엔 디자인 용어나 개념 뭔가 이론이 필요한가 했으나 사실 그건 어디까지나 개발 서적과 공학책들의 이야기고 이 책은 단순 처음 입문하느사람이 책과 모니터를 보며 따라하기에 정말 쉽게 알려주는 책이다. 또한, .. 2021. 4. 21.
[Git Github] 팀 개발을 위한 Git GitHub 시작하기 (한빛 미디어) [읽기 전] - 신입개발자로 취업하기전 개인 프로젝트를 Git의 CLI를 이용하여 프로젝트를 시작하며 Git을 배웠다. 온라인 강의에서 원숭이가 나오는 사이트와 이고잉님 강의를 보며 독학을 했었고 그 강의 들이 꽤 도움이 됐었다. 그리고 이제 신입 개발자로서 실무에 나가서 실제 Git 과 Git랩을 사용하는데 내가 사용해왔던 Git헙이랑은 좀 다른 세상이였다. 내가 만든 브런치는 민들레 줄기라하면 실제 필드는 상수리나무급이였다 ㅎㅎ.. 규모도 커지고 실제 다른분들과 필드에서 협업을 위해 꼭 알아야 한다고 생각했고, 이 책을 보게되어 다행일거라는 생각을 했었다 (하지만....) [좋은 점보다는 아쉬운점이 더 컸던] - 이 책의 좋은점을 꼽자면 책의 내용보다는 책이라서 좋은점이라고 생각한다. 그냥 어느페이지.. 2021. 3. 21.
2021-03-11 2021. 3. 11.
2021-03-10 2021. 3. 10.
2021-03-09 2021. 3. 9.
2021-03-08 2021. 3. 8.
[Azure] 처음 배우는 애저 (한빛미디어) [읽기 전] - 이제 막 신입 소프트웨어 개발자로서 일을 시작하며 내게 가장 큰 어려움은 디버깅 스킬이나 기술적 테크닉이 아닌 용어에 대해 익숙지 않은 부분이다. 회사의 간담회에 나온 용어들조차 헤메는 부분이 많다. 특히 SaaS , PaaS Laas와 클라우드 컴퓨핑에 대한 기본적 용어를 안다는 전제하에 설명하는 자리에서 사내 저장소나 가상머신 서버 등 실로 검색하면 어렵지 않은 용어들이지만, 당장에 내가 클라우드 컴퓨팅 서비스나 관련 개발 업무를 하지 않으니 나중에 가서 알면 되지 않을까 하는 나태함?에 따로 공부해볼 기회를 미루고 있었다. 한빛미디어에서 도서 리뷰어 선정에 마침 당첨되어 이번 기회에 이 책을 접하여 클라우드 컴퓨팅과 서비스 네트워크 에 대해 조금은 알 수 있는 기회가 될 것 같았다... 2021. 2. 21.
진행중 프로젝트 [임시 카테고리] 파일럿 프로젝트 요구 사항 파일럿 요구사항 개발 환경 windows 10 (visual studio 2017 v141) windows sdk : 10.0.18362.0 라이브러리 [서버 엔진] : boost 1.71.0.36932 [GUI] : nana 1.7.2.53685 시스템 블록도 Class Diagram Sequence Diagram 데이터 프로토콜 노드 구성 1 Node == [ 상위 디렉토리 > 하위 디렉토리 > Date > Format > Size ] --> " > "로 구분 2 Node == [ 1 Node | 2 Node ] "|"를 구분으로 노드를 분리 [Directory Nodes ? File Nodes] " ? "를 구분으로 디렉토리 노드들과 파일 노드들을 분리 시리얼 데이터의 끝.. 2021. 1. 15.
스마트 포인터 스마트 포인터 new와 delete 키워드를 사용 하지 않고 사용이 끝난 포인터를 메모리에서 자동으로 해제 해주는 클래스 템플릿 메모리 누수로부터 안전성을 보장하기 위함 스마트 포인터 종류 unique_ptr shared_ptr weak_ptr (TODO) 정리 예정 c++11 이후로 auto_ptr은 사라짐. 스마트 포인터는 헤더에 정의 되어있음 unique_ptr 특정 객체를 하나의 포인터만 소유 할 수 있도록 소유권 개념의 포인터 다른 포인터와 객체 핸들링을 공유할 수 없기 때문 lvalue 시멘틱이 적용 되지 않는다. ex) ptr1 = ptr2 (ptr1 과 ptr2 는 unique_ptr) 다른 포인터로 객체 참조를 이동시키기 위해 move(이동)시멘틱을 사용한다. ptr1 = std::mov.. 2020. 12. 21.
c++ 함수 포인터 C와 C++의 함수포인터 C에서의 함수포인터 타입 재정의 함수 역시 주소를 가지고 있기 때문 포인터와 마찬가지로 함수를 가리키는 포인터를 만들 수 있다. //짝수인지 반환 함수 bool isEven(const int& number) { return (number % 2) ? false : true; } //함수포인터 타입 재정의 typedef bool(*check_func)(const int&); //배열의 짝수들 출력 void printEvenNumber(const array& my_arr, check_func = isEven) { for (const auto &e : my_arr) { if (isEven(e)) cout 2020. 12. 16.
assert (단언하기) in C++ assert assert 는 Debug 모드에 실행된다. 디버깅시 컴파일러의 도움을 받을 수 있다. static_assert는 컴파일 타임에 적용된다. assert 는 런타임에 적용된다. 반대로 assert 키워드는 Release 모드에서는 실행이 안된다. assert 변수 체크할때 사용 할 수 있다. 런타임에 적용 #include using namespace std; int main(void) { int a = 1; a+=9; /*... 많은 과정을 생략중...*/ assert(a==10) //이 과정이 끝나면 a는 반드시 10 이어야 한다고 가정 // 만약 19번 행에서 a가 10이 아닌 다른 수면 // debug모드에서 에러가 나면서 콘솔로 출력이됨. // return 0; } static_asse.. 2020. 12. 15.
템플릿(Template) (2/2) (템플릿 특수화) 템플릿 매개변수 일반적으로 클래스 템플릿을 작성할 때는 template 처럼 꺽쇠괄호 안에 매개변수를 나열한다. 이 매개 변수 T뿐만 아니라, 함수의 매개변수처럼 원하는 수 만큼 지정할 수 있다. 이때, 매개변수를 타입 대신 디폴트 값으로 정해도 된다. template //템플릿의 타입을 2개로 m_array의 size를 받는다. class ClassArr { private: T m_array[size]; public: T* getArray() { return m_array; } T& operator[](int index) { return m_array[index]; } void print() { for (int count = 0; count < size; ++count) cout 상속 특정한 타입에 대.. 2020. 12. 14.
템플릿(Template) (1/2) 템플릿(template) C++에서 언어 차원에서 객체지향 프로그래밍 뿐만 아니라 제네릭 프로그래밍(generic programming)도 지원한다. 제네릭 프로그래밍은 데이터를 중요시하는 객체지향적 프로그래밍 철학보단 알고리즘에 그 중점을 두었다. 템플릿(template)은 데이터 타입(data type)이 아닌 매개변수의 타입에 따라 클래스를 생성하는 클래스 템플릿 과 메서드 템플릿, C++14 이후 부터는 변수 템플릿 이 있다. 또한 템플릿은 템플릿 특수화라 하여 범위에 따라 다르게 템플릿을 적용시키는 템플릿 특수화 라는 개념이 있다. 함수 템플릿 특수화 클래스 템프릿 특수화 포인터에 대한 특수화 템플릿에 의한 형변환은 컴파일 타임에 결정된다. 즉 사람이 타입을 맞춰줄 필요없이 컴파일러에게 타입 결.. 2020. 12. 13.
2차원 동적 배열 할당과 해제 (배열 vs 벡터) 벡터를 애용하자 2차원 vector 선언 vector v2; //2차원벡터 선언 vector v1 //1차원 벡터 선언 v1.push_back(2); v1.push_back(20); v1.push_back(337); //v2[0][0] == 2, v2[0][1] == 20, v2[0][2] == 337 v2.push_back(v1); 2차원 vector 초기화 //5x10 0으로 초기화시키기 (10열의 각 원소가 0인 배열을 5줄(행) 만든다.) vector v(5, vector(10,0)); //5x5 순환 접근 2차원 배열과 똑같다. for(int i=0; i 2020. 12. 7.
2352 반도체 설계 www.acmicpc.net/problem/2352 [ 2352번: 반도체 설계 첫째 줄에 정수 n(1 ≤ n ≤ 40,000)이 주어진다. 다음 줄에는 차례로 1번 포트와 연결되어야 하는 포트 번호, 2번 포트와 연결되어야 하는 포트 번호, …, n번 포트와 연결되어야 하는 포트 번호가 주 www.acmicpc.net ](https://www.acmicpc.net/problem/2352) (문제 풀이) 해당 문제의 요구사항 왼쪽의 포트들을 오른쪽의 포트로 겹치지 않게 가장 많이 연결할때의 포트 갯수를 구한다. 가장 쉽게 생각 해볼 수 있는 최선의 방법은, 시작 포트에서 부터 가장 적은 번호와 연결시키는 방법일 것이다. 가장 최악의 경우를 생각해보면 가장 첫번째 포트가 가장 마지막 포트와 연결 되는 경우.. 2020. 12. 7.
17144 미세먼지 안녕! www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net (문제 풀이) 이 문제는 별 다른 시간복잡도와 알고리즘의 사용을 요구하지 않는다. 시뮬레이션 구현의 문제이다. 하나씩 어떻게 동작하는지 예제 그림의 도움을 최대한 받아서 하나씩 따라가며 시작해본다. 1. 확산을 하고 2. 공기청정기의 위 아래 기준으로 배열의 값들을 회전시킨다. 그렇다면, 1. 확산을 어떻게 시킬것인가 모든 먼지가 있는 칸에 확산되는 값들과, 감소되는 기존 미세먼지 중심의 감소값을 따로 Cop.. 2020. 12. 7.
enum과 enum class (열거 타입과 엄격한 열거 타입) enum (열거형) enum 타입 내부 멤버들에게 정수(int)값으로 이름을 붙일 때 사용한다. 주로 내부 멤버이름을 대문자로 이름 짓는경우가 많다. 각 열거자들의 값은 이전 열거자 값에 +1이 증가 된 값으로 알아서 할당된다. ex) enum days {Sunday = 1 , Monday, Friday=10, Wednesday}; Monday == 2 (True) , Wednesday == 11 (True) 만약 enum 타입의 첫 번째 멤버에 값을 생략하면 컴파일러가 알아서 0부터 대입 해준다. 실제 메모리를 잡아먹지 않는다. 단 열거자가 할당된 변수에 대해 메모리가 할당됨. 그럼 열거형을 쓰면 좋은점은? 왜 써요? 위험한 상황(의도하지 않게 타입의 값이 변경되어 다르게 동작 하는 상황들)을 피할 수.. 2020. 12. 6.
[Summer/winter Coding ~ (2018)] 배달 https://programmers.co.kr/learn/courses/30/lessons/12978?language=cpp 코딩테스트 연습 - 배달 5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 [[1,2,1],[1,3,2],[2,3,2],[3,4,3],[3,5,2],[3,5,3],[5,6,1]] 4 4 programmers.co.kr (풀이) 인접리스트를 만들어 DFS를 이용하여 푼다. (1) Input, 노드간 가중치가 최소인 거리만을 인접리스트로 만들어준다. _distance[][] 사용 (2) check[from][to]로 이전 노드에서 다음 노드까지 거리를 구해준다. 이 거리를 구하는 이유는 재방문시 더 짧은 최단거리가 있으면 업데이트 .. 2020. 8. 7.
[Summer/winter Coding ~ (2018)] 스킬트리 https://programmers.co.kr/learn/courses/30/lessons/49993 코딩테스트 연습 - 스킬트리 programmers.co.kr (풀이) 1. Skill의 우선순위를 정한다. 2. Skill_trees 각 String원소들이 우선순위에 맞는지 확인한다. #include #include #include #include using namespace std; map _map; void check_priority(string skill); bool IsGetSkill(string spell); int solution(string skill, vector skill_trees) { int answer = 0; check_priority(skill); for (int i = 0; .. 2020. 8. 7.
14891 톱니바퀴 https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net (풀이) 4개의 톱니바퀴가 회전하는 시뮬레이션 문제이다. 단순히 구현으로 풀었다. 가장 먼저 고려하는 부분은 1)회전이 가능한 톱니바퀴를 어떻게 찾을 것인가. 2)회전은 어떻게 진행되는가. 3)진행이 끝나고 점수를 획득하는 방법 회전이 가능한 톱니바퀴는 1번 톱니바퀴의 세번째 톱니 2번 톱니바퀴의 세번째, 일곱번째 톱니 3번 톱니바퀴의 세번째, 일곱번째 톱니 4번 톱니바퀴의 일곱번째 톱니 를 .. 2020. 8. 7.
15685 드래곤 커브 https://www.acmicpc.net/problem/15685 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커� www.acmicpc.net (풀이) 규칙을 찾는것이 가장 중요하다. 만약 0세대가 0부터라면 1세대는 0,1 2세대는 0,1,2,1 3세대는 0,1,2,1,2,3,2,1 이전 세대의 끝에서부터 처음 인덱스까지 반대숫자를 하나 더해주며 나열해주면 된다. (역순 +1 ) 3이 넘어가면 1이 되므로 모듈 연산자를 통해 보정을 해주었다. #include #include #include using nam.. 2020. 8. 7.
17140 이차원 배열과 연산 https://www.acmicpc.net/problem/17140 17140번: 이차원 배열과 연산 첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다. www.acmicpc.net (풀이) (풀이) 문제의 조건 R연산 , C연산 R연산 행의 개수 >= 열의 개수 C연산 행의 개수 < 열의 개수 풀이 순서 1. 이 문제의 모든 입력값은 3x3 행렬로 시작한다. 2. 가장 먼저 R,C연산에 대해 행 또는 열 정렬을 한다. 3. 행 또는 열에서 (원소수, 횟수)가 몇번 나왔는지 검사한다. 4. 3번에서 원소수, 횟수에 대해 정보를 가지고 있는 vector에 대해 정렬.. 2020. 8. 7.
TCP 와 UDP TCP(Transmission Control Protocol) TCP는 전송 제어 프로토콜(Transmission Control Protocol)의 약자이다. OSI계층에서 4 계층인 전송 계층(Transport Layer)에 속하며, 아래 그림에서 보이듯 Network 계층 위에서 동작하는 프로토콜인것을 알 수 있다. TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜들이 IP 위에서 동작하기 때문에 묶어서 TCP/IP로 부르기도 한다. 또한, TCP는 웹 브라우저들이 WWW(World Wide Web) 에서 서버에 연결할때 사용되며, 이메일 전송이나 파일 전송에서도 사용된다. TCP는 다음과 같은 특징이 있습니다. 1. TCP 특징 (1)연결형 서비스 1) 연결을 위해 할당되는 논리적인 경로가 있습.. 2020. 7. 31.
17142 연구소3 https://www.acmicpc.net/problem/17142 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고 www.acmicpc.net (풀이) 연구소2 문제와 유사하지만, 비활성화된 바이러스로 반례가 존재한다. 기존과 같은 풀이방식의 Depth로는 아래의 반례 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 0 0 2 0 1 1 1 1 1 를 통과하기 어렵다. 따라서 0의 갯수를 카운트하여 확산이 가능한 부분에 대해서 확산 갯수와 0의 갯수가 같아지는 시점에 전부 확산 되었다고 판단. #include #include #i.. 2020. 7. 30.
17141 연구소2 https://www.acmicpc.net/problem/17141 17141번: 연구소 2 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 승원이는 연구소의 특정 위치에 바이러스 M개를 놓을 것이고, 승원이의 신호와 동시에 바이�� www.acmicpc.net (풀이) 바이러스를 퍼트릴 수 있는 특정 지점들에서 바이러스가 퍼지는 최단시간을 구하는문제. 바이러스를 놓을 수 있는 공간 E개라고한다면 M개를 살포할 수있으므로 (1> arr[i][j]; if(arr[i][j]==1) check[i][j] = arr[i][j]; if (arr[i][j] == 2) virus_pos.push_back(make_pair(i, j)); } } } 2020. 7. 30.
17471 게리맨더링 https://www.acmicpc.net/problem/17471 17471번: 게리맨더링 선거구를 [1, 4], [2, 3, 5, 6]으로 나누면 각 선거구의 인구는 9, 8이 된다. 인구 차이는 1이고, 이 값보다 더 작은 값으로 선거구를 나눌 수는 없다. www.acmicpc.net (풀이) 문제의 조건 1. 각 구역은 두 선거구중 하나에 포함되어야 한다. 2. 각 구역은 모두 연결되어 있어야 한다. 3. 두 구역으로 나누었을때 두 구역의 인구차의 최소값을 구하라. 문제의 첫 번째 조건을 만들기 위해 백트래킹을 이용한 조합을 사용하였다. divide_zone(int cnt, int idx, int limit) check_choice[]의 T구역은 true, F구역은 false로 구분, 두 선거구중.. 2020. 7. 27.
16988 Baaaaaaaaaduk2 (Easy) https://www.acmicpc.net/problem/16988 16988번: Baaaaaaaaaduk2 (Easy) 서기 2116년, 인간은 더 이상 AI의 상대가 되지 못하게 되었다. 근력, 순발력, 창의력, 사고력, 문제해결능력, 심지어 인간미조차 AI가 인간을 앞선다. AI가 온 지구를 관리하며 이미 인류는 지구의 www.acmicpc.net (풀이) 이 문제는 빈 칸에 자신의 돌을 2개 두고 상대방의 돌을 최대 몇개 잡을 수 있는지 묻는 문제이다. 자신의 돌을 2개 선택 하는 경우의 수를 먼저 찾아준다. (빈 칸의 갯수) Combination 2 조합을 이용하여 모든 경우의 수를 다 찾아준다. 그리고 해당 각 경우의 수 마다 흰색돌을 DFS 또는 BFS로 순회하여 빈칸이 존재하는지 여부를 파.. 2020. 7. 25.
16985 Maaaaaaaaaze https://www.acmicpc.net/problem/16985 16985번: Maaaaaaaaaze 첫째 줄부터 25줄에 걸쳐 판이 주어진다. 각 판은 5줄에 걸쳐 주어지며 각 줄에는 5개의 숫자가 빈칸을 사이에 두고 주어진다. 0은 참가자가 들어갈 수 없는 칸, 1은 참가자가 들어갈 수 있는 칸을 www.acmicpc.net (풀이) 이 문제는 바둑이와 난이도는 같지만, 경우의수가 하나 더 추가되어 구현이 복잡하다. 문제의 요구조건은 5x5x5 3차원 배열의 각 층을 무작위로 선택하여 선택한 층들을 다시 무작위로 회전시켯을때 미로를 탈출할 수 있는 가장 최소거리를 구하는 문제이다. 이 문제를 층을 나누는방식과, 회전시키는 부분을 분리해보면 무작위로 층을 선택하는 경우의 수는 5!이 나온다. 각 층.. 2020. 7. 25.
15686 치킨배달 https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net (풀이) 문제의 조건에 치킨집 M의 수는 13개 보다작거나 같다. 폐업 시키지않은 치킨집 수를 최대 M개 고려했을때 치킨 거리가 가장 최소가 될때의 최소값을 찾는문제. 치킨집을 폐업 시키는 제한이 없다. 따라서 1개를 폐업시키든 2개를 폐업시키든 폐업시키지 않든 폐업 시키지 않은경우에도 최소거리를 찾을 수 있다. 도시 치킨 거리를 가장 최소로 하기 위해서 각 치킨집에서 집들과.. 2020. 7. 25.
728x90