RHCSA 실습 환경 구성하기
·
자격증/RHCSA
1. 가상화 환경 구성실습을 진행하기 위해 가상 머신을 만들겠습니다. 시험에서도 원격 서버에 접속하는 방식이기 때문입니다.1-1. 필수 가상화 패키지 및 Cockpit 설치# 시스템 업데이트sudo dnf update -y# 하이퍼바이저 및 Cockpit 관리 모듈 설치sudo dnf install -y qemu-kvm libvirt virt-install cockpit cockpit-machines# 가상화 그룹 패키지 설치 (필요한 모든 도구 포함)sudo dnf groupinstall -y "Virtualization Host"1-2. 서비스 활성화 및 관리 권한 설정# 서비스 활성화 및 시작sudo systemctl enable --now libvirtdsudo systemctl enable --..
제작자들의 공정한 홍보를 위한 커뮤니티, 'FairShare'를 만들었습니다!
·
project/페어쉐어
1. 프로젝트 소개안녕하세요! 저는 누구나 자신이 만든 결과물을 공유하고, 인지도와 상관없이 공평한 홍보 기회를 얻을 수 있는 공간인 페어쉐어(FairShare)를 개발하고 있습니다.2. 주요 기능공정 노출 알고리즘: 단순히 좋아요 순이 아니라, 노출 횟수(impressionCount)가 적은 프로젝트를 우선적으로 메인 피드에 노출시켜 모든 제작자에게 기회를 제공합니다.간편한 프로젝트 등록: Uploadthing을 통해 썸네일을 직접 업로드하고 자신의 프로젝트를 빠르게 공유할 수 있습니다.제작자 대시보드: 내 프로젝트가 몇 번 노출되었고, 몇 명의 사용자가 방문했는지 투명하게 확인할 수 있습니다.커뮤니티 인터랙션: 소셜 로그인을 통해 다른 제작자의 작품에 응원(좋아요)을 남기거나 SNS로 공유할 수 있습..
백준 1911번 - 흙길 보수하기 (Go)
·
algorithm
https://www.acmicpc.net/problem/1911분석이 문제는 물웅덩이들을 최소한의 널빤지로 모두 덮어야 하는 그리디(Greedy) 문제입니다. 널빤지의 길이가 고정되어 있으므로, 앞에서부터 차례대로 덮어나가는 것이 최선입니다.시간복잡도는 물웅덩이의 개수 n이 최대 10,000개이므로, 물웅덩이를 시작 위치 기준으로 정렬하는 데 O(n log n), 그리고 정렬된 웅덩이를 한 번 순회하며 널빤지를 배치하는 데 O(n)이 소요됩니다. 전체 시간복잡도는 O(n log n)으로, 2초의 제한 시간 내에 여유롭습니다.공간복잡도는 웅덩이 정보를 저장하는 데 int 형 O(n)이 필요하며, 8 byte * 10,000 * 2 = 약 160 KB 저장하므로 충분합니다. 알고리즘 로직을 정리하면 다..
백준 15662번 - 톱니바퀴 (2) (Go)
·
algorithm
https://www.acmicpc.net/problem/15662 분석이 문제는 주어진 조건에 따라 여러 개의 톱니바퀴를 회전시키는 시뮬레이션 문제입니다.시간복잡도는 회전 횟수 k번 동안 최대 t개의 톱니바퀴를 검사하고 회전시켜야 하므로 O(k * t)$입니다. 1,000 * 1,000 = 1,000,000으로 2초라는 시간 제한 내에 충분히 여유롭게 통과 가능합니다.공간복잡도는 톱니바퀴 상태를 저장하는 int 형 2차원 배열 O(t * 8)$입니다. 8 byte * 1,000 * 8은 약 64KB 정도로 매우 여유롭습니다. 알고리즘 로직을 생각해 보면,연쇄 회전 결정:특정 톱니바퀴가 회전할 때, 양옆의 톱니바퀴가 함께 회전할지 여부를 먼저 결정해야 합니다.회전이 실제로 일어나기 전의 상태를 기준으로 ..
백준 17406번 - 배열 돌리기 4 (Go)
·
algorithm
https://www.acmicpc.net/problem/17406분석이 문제는 완전탐색이고, 탐색 순서에 따라 결과가 바뀌니 순열 탐색 문제입니다.시간복잡도는 순열생성 후 k 번 회전 수행, n * m 배열을 탐색해야하니 O(k! * (k * (n * m)) 입니다. 3 공간복잡도는 int형 2차원 배열 O(n * m) = 8 byte * 50 * 50 = 약 20 KB 로 여유롭습니다. 알고리즘 로직을 생각해보면, 순열 (Permutation):회전 연산이 k개 주어질 때, 이를 나열하는 순서는 최대 k!가지입니다.배열 복사:각 순열 케이스마다 원본 배열이 변하면 안 되므로, 반드시 배열을 복사하여 시뮬레이션을 진행해야 합니다.배열 회전:주어진 r, c, s 에 대해 가장 바깥쪽 사각형부터 안쪽 사각..
Gin vs Echo: 비슷해 보이는 두 프레임워크, 왜 내 프로젝트는 Echo였을까?
·
go
Go 언어로 백엔드를 개발할 때 가장 먼저 마주하는 고민은 '프레임워크 선택'입니다. 사실상 표준인 Gin을 쓸 것인가, 아니면 강력한 편의성을 제공하는 Echo를 쓸 것인가? 최근 진행 중인 프로젝트에서 LLM은 저에게 Echo를 추천해주었는데, 처음엔 의아했지만 직접 사용해보니 그 이유가 명확해졌습니다. 오늘은 Gin과 Echo의 차이점을 분석하고, 왜 복잡한 로직을 다루는 현대적인 앱에서 Echo가 매력적인 선택지인지 정리해보겠습니다.1. Gin vs Echo 핵심 차이점두 프레임워크 모두 성능이 뛰어나지만, 추구하는 방향에서 미묘한 차이가 있습니다.특징GinEcho커뮤니티가장 압도적인 사용자와 레퍼런스 보유Gin보다는 적지만 탄탄한 사용자층속도 / 성능극강의 성능 (HttpRouter 기반)Gin..
포트 포워딩 없이 K8s 외부 노출하기: Cloudflare Tunnel의 동작 원리
·
cloudflare
쿠버네티스(Kubernetes)를 공부하며 클러스터 내부의 서비스를 외부에 노출하는 방법을 NodePort와 공유기 설정에서 포트 포워딩(Port Forwarding)이라는 번거로운 과정을 거쳤습니다. 하지만 Cloudflare Tunnel을 만나면 이야기가 달라집니다. 우리 집에 있는 서버의 K8s 클러스터도 공인 IP 하나 없이 단 몇 분 만에 안전한 도메인으로 연결할 수 있습니다. 어떻게 외부에서 들어오는 문을 열지 않고도 트래픽이 클러스터 내부의 Pod까지 안전하게 배달되는 걸까요? 오늘은 취업 준비를 하며 깊게 파고들었던 Cloudflare Tunnel의 아키텍처와 트래픽 흐름을 정리해 보려 합니다. 1. 핵심 매커니즘: Reverse Tunneling일반적인 웹 서버는 외부 사용자가 접속할 수..
백준 3190번 - 뱀 (Go)
·
algorithm
https://www.acmicpc.net/problem/3190분석이 문제는 시뮬레이션을 구현하면 되는 문제입니다. 하지만 뱀의 상태를 Deque 를 사용하여 관리하는게 키 포인트 였습니다.시간 복잡도는 2 공간 복잡도는 2차원 배열 탐색 int형 O(n^2) = 8byte * 101^2 = 약 80,000 뱀의 상태 16byte * 101^2 = 약 160,000 을 더하면 24KB 로 여유롭습니다. 알고리즘을 생각해보면, 뱀의 이동:매 초마다 머리를 다음 칸으로 이동시킵니다.벽이나 자기 자신의 몸에 부딪히면 게임이 종료됩니다.사과가 있다면: 꼬리는 그대로 두고 머리만 추가합니다.사과가 없다면: 머리를 추가하고, 가장 오래된 좌표(꼬리)를 제거합니다.방향 전환:특정 초가 지났을 때 L(왼쪽 90도) ..
백준 12100번 - 2048 (Go)
·
algorithm
https://www.acmicpc.net/problem/12100분석이 문제는 4방향으로 최대 5번의 이동을 하는 시뮬레이션 문제입니다.시간 복잡도는 1 공간 복잡도는 재귀 할때마다 새 보드를 생성하므로, int 형 O(n^2 * 5) = 8byte * 400 * 5 = 16,000 으로 여유롭습니다. 알고리즘을 생각해보면, 방향 탐색 (재귀/백트래킹):상, 하, 좌, 우 4가지 방향으로 5번 이동하는 모든 경로를 재귀 함수로 탐색합니다.각 단계마다 격자 상태를 복사해서 넘겨주어야 원본 데이터가 유지 됩니다.블록 밀기 (Move):한 방향으로 밀 때, "이미 합쳐진 블록은 이번 턴에 다시 합쳐질 수 없다"는 규칙이 가장 중요합니다.예: 2 2 2 2가 한 방향으로 밀리면 8이 아니라 4 4가 되어야 합..
백준 14889번 - 스타트와 링크 (Go)
·
algorithm
https://www.acmicpc.net/problem/14889분석이 문제는 n 명 중 n / 2 명을 뽑는 문제입니다. 뽑는 것에 순서는 필요가 없으니 조합 문제 입니다.N=20 이라는 작은 입력 크기 덕분에 브루트 포스와 백트래킹으로 가능합니다.시간 복잡도는 4 184,756 * 400 = 7300만 으로 시간 제한에 여유롭습니다.공간 복잡도는 int 형 O(n2) = 8byte * 400 = 3200 byte 으로 여유롭습니다. 풀이 코드package mainimport ( "bufio" "fmt" "math" "os")var ( n int powers [][]int visited []bool res = math.MaxInt32)func main() { in := bufio.NewReader(o..