Programming
-
Kubectl 명령어 간편하게 사용하기 (alias, 자동 완성, flag)Programming/Server 2024. 7. 3. 16:55
쿠버네티스를 사용하면서 가장 자주 사용하는 명령어는 단연코 kubectl 일 것이다. 이 길다면 긴 명령어를 매번 치기는 번거로울뿐더러, 긴 Pod 이름 등을 매 번 복사 붙여 넣기 하기도 여간 귀찮은 게 아니다.개발 편의성을 매우 중시하는 개발자들을 위해 kubectl 명령어를 좀 더 편하게 사용하기 위해 연구해 보자.1. Alias우선 'kubectl' 명령어의 길이 자체가 너무 길다! 적당히 헷갈리지 않으면서도 짧은 alias를 등록해 두고 사용하자. 보통 'k'를 많이 쓰는 것 같다.현재 등록된 alias 목록을 보고 싶다면, bash 창에 `alias` 명령어를 입력하면 된다. alias를 신규로 등록하는 것 또한 간단하게 alias 별칭='명령어'를 사용하면 된다. (일회성 등록)alias k..
-
RestClient 알아보기 (RestTemplate이 Deprecated 된다고요?)Programming/Spring 2024. 6. 29. 12:05
Spring Boot 3.2에 새롭게 추가된 RestClient에 대해 알아보자.spring docs의 RestTemplate에 대한 설명에 위와 같은 NOTE가 추가되었다. Spring 6.1(Spring Boot 3.2) 버전부터는 RestClient가 더 모던한 API를 제공한다는 말이다. 그렇다면 RestTemplate은 사용하면 안 되는 것일까? RestTemplate이 Deprecated 된다?RestTemplate이 Deprecated 된다고 알고 있는 사람이 종종 있는데, 현재 RestTemplate의 JavaDoc에는 그런 말을 전혀 찾아볼 수 없었다. 이 말은 어디서 나온 것일까? 스프링 개발진의 의도를 유추해볼 수 있는 흐름을 찾아보았다.RestTemplate의 Deprecated에 ..
-
[Linux] telnet 비활성화 시 telnet 사용하기 Tip(feat. curl)Programming/기타 2023. 6. 3. 01:45
telnet 명령어는 특정 서버에 접속할 수 있는 명령어이지만, 주로 서버의 포트 오픈 여부를 확인할 때 많이 사용된다. // telnet [IP] [PORT] $ telnet 127.0.0.1 8080 하지만, 종종 telnet 설치가 안 되어 있는 경우에 포트 점검을 하고 싶은 경우가 있다.(telnet 활성화가 안 된 윈도우, telnet 미설치 VM, pod 등) Tip curl 명령어는 http 뿐 아니라 telnet 프로토콜도 허용이 된다. (curl은 웬만한 경우 설치가 되어 있다.) // curl -v telnet://[IP]:[PORT] $ curl -v telnet://127.0.0.1:8080 위와 curl 명령어를 사용해 telnet 접속을 했을 때 포트 오픈이 되어 있다면 해당 서..
-
[Git] fork 후 작업하기Programming/Git 2022. 4. 9. 02:51
fork 와 clone 의 차이점 fork fork 는 다른 사람의 repository 에 내가 어떤 부분을 수정하거나 추가하고 싶은 경우에 해당 repository 를 내 계정의 repository 로 복제하는 기능이다. 이때, fork 해온 저장소는 원본 저장소와 연결되어 있어서 fetch, rebase 등을 통해 원본 저장소의 변경 사항을 내 저장소에 반영할 수 있다. 이후 내 저장소에서 작업을 진행한 후 변경 사항을 원본 저장소에 적용하고 싶으면 해당 저장소에 Pull Request(PR) 을 해야 한다. PR 이 원본 저장소의 관리자로부터 승인되면, 나의 변경 사항이 원본 저장소에 commit, merge 되어 반영된다. PR 이 승인되기 전까지는 변경 사항이 fork 한 내 저장소에만 존재한다..
-
[Git] Git 으로 작업하기Programming/Git 2022. 4. 9. 02:17
사용자 설정 Git 을 설치하고 사용자 정보를 설정해두면, Git 은 커밋할 때마다 이 정보를 사용한다. 한 번 커밋한 후에는 정보를 변경할 수 없다. $ git config --global user.name "사용자 이름" $ git config --global user.email "사용자 이메일" // git 사용자 설정 확인 $ git config --list --global 옵션은 한 컴퓨터 당 단 한 번만 하면 작업하는 모든 프로젝트에 적용된다. 만약 프로젝트마다 다른 이름과 이메일 주소를 사용하고 싶으면 해당 프로젝트 내에서 --global 옵션을 빼고 위 명령을 실행한다. Git 저장소 생성 작업의 종류에 따라 두 가지 경우가 있다. 1) 이미 존재하는 프로젝트를 받아오는 경우, 2) 새로 ..
-
[Java] List 에서 ObjectUtils.isEmpty() 를 이용한 null 체크(isEmpty(), != null)Programming/Java 2022. 4. 1. 17:10
List 를 사용하여 데이터를 조회하다 보면, 조회된 데이터가 없을 경우 NullPointerException 등이 터질 수 있기 때문에 null 체크를 해주어야 합니다. 1. List 가 null 일 경우 인스턴스 자체가 생성되지 않았을 경우 List 는 null 값을 가진다. null 인 리스트를 조회하려고 하면, NullPointerException 이 터진다. null 체크는 "list == null" 로 할 수 있다. if(list != null){ // task } 위 코드를 추가하면, list 가 null 이 아닌 경우에만 작업을 수행한다. 다만, 여전히 문제가 있다. 데이터를 받아오는 과정에서 list 에 null 이 아닌 빈 값이 저장되는 경우 위의 null 체크에 걸리지 않는다. (li..
-
[알고리즘] 탐욕적 기법(Greedy Algorithm)Programming/Algorithms 2021. 11. 1. 15:30
1. 탐욕적 기법(Greedy Algorithm)이란? 탐욕적 기법, 혹은 욕심쟁이 기법이라고 불리는 이 알고리즘은 말 그대로 욕심쟁이처럼 항상 눈앞의 가장 큰 이익만을 좇는 방법이다. 대부분의 알고리즘은 큰 문제를 작은 문제로 쪼개어 해결하는 과정을 거치는데, 탐욕적 기법은 작은 문제들을 해결하는 과정에서 전체 결과를 생각하지 않고 당장 작은 문제의 최적해를 찾고 이를 모두 더하여 최종 결과를 도출하게 된다. 이러한 기법은 생각보다 잘 통하는 경우가 많지 않다. 아래 그림을 보자. 서울에서 부산까지 최단거리로 가는 방법은 서울->대전->부산의 경로로 4.5km 이지만, 이 상황에 탐욕적 기법을 적용하면 알고리즘은 각 단계에서 최적해, 즉 가장 가까이 있는 도시로 이동하여 서울->인천->대전->부산의 경..
-
[Programmers] 입국심사 - 이분탐색(Binary Search)Programming/Algorithms 2021. 10. 2. 11:02
https://programmers.co.kr/learn/courses/30/lessons/43238 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 programmers.co.kr 접근 우선 문제의 접근법부터 생각해야 한다. 이 문제를 이분탐색으로 풀게 된 이유는 문제의 범위를 보면 간단히 알 수 있다. 입국 심사를 기다리는 사람이 최대 1,000,000,000 명, 한 명을 심사하는 데 걸리는 시간이 최대 1,000,000,000 분이므로 O(n) 의 시간복잡도 마저 부담스러운 값이 나온다. 이러한 매우 큰 범위가 주어지면, O(logn)..