https://ios-development.tistory.com/1840Oh-my-claude code + tmux 조합-> 자연어로 명령 내려도 내장된 에이전트가 알아서 협업-> tmux는 ssh 접속 끊겨도 세션이 서버에서 돌아가서 attach로 다시 연결 가능 + pane 명령어로 패널 분할 및 병합 가능 (왼쪽 pane 으로 코드 편집, 오른쪽 상단에서 로그 보고 아래선 테스트 돌리기 등) https://velog.io/@takuya/claude-code-superpowers-guide Claude Code × Superpowers: 39k 스타 최강 플러그인 체험기GitHub에서 화제인 Superpowers를 사용해 Claude Code를 단순 코더에서 숙련된 아키텍트로 진화시키는..
분류 전체보기
기능하는 서버와 안전한 서버는 다르다이전 글에서 포트포워딩을 설정하고, SSH 접속이 가능하도록 만들었다. 원했던 건 다 됐다.밖에서 접속됐고, 명령도 실행됐고, 서버는 “잘 작동”했다. 그런데 이상하게도 마음이 편하지 않았다.서버는 분명 열려 있었는데,이게 과연 “괜찮은 상태”인지 확신이 들지 않았다. 그래서 이런 질문이 머릿속에 남았다.“이 서버는 지금 얼마나 노출되어 있는 걸까?” 서버가 작동하는 것과,서버가 안전하게 작동하는 건 전혀 다른 문제라는 생각이 들었다.이 글은 그 질문에서 시작해서, 접근 구조 자체를 바꾸기까지의 기록이다. 외부에서 이 서버는 어떻게 보이는가가장 먼저 든 생각은 단순했다. “밖에서는 이 서버를 어떻게 보고 있을까?”그래서 외부 인터넷 기준에서 IP를 확인해봤다.curl..
[지난 포스팅에 이어 온프레미스 서버를 더 뜯어보기]서버의 전제부터 다시 정의서버란 무엇일까.서버 = 외부(또는 다른 시스템)에서네트워크로 접근 가능한 컴퓨터 정확히 말하면 서버란 네트워크 상에서 식별되고(route), 도달 가능한(endpoint) 컴퓨터다. 이 정의에 따르면 전원이 켜져 있고 OS가 설치돼 있다는 것만으로는 서버가 아니다. 이전 포스팅에서 우리는 이미 전원과 OS 상태를 확인했다.이제 남은 조건은 하나다. 네트워크네트워크가 없으면 서버가 아니다서버가 네트워크에 연결되어 있는지 확인하기 위해가장 먼저 실행한 명령어는 다음이다.ip addr 이 명령어는 이 컴퓨터가 어떤 네트워크 인터페이스를 가지고 있고, 어떤 IP 주소를 부여받았는지를 보여준다.출력 결과 중 서버 관점에서 중요한 부분은..
러닝앱 프로젝트에서GCP로 마이그레이션되기 전 개발 서버로 사용된 우리 노트북을 한번 뜯어보자. (몇달째 방치된...)ssh로 서버에 접속하여 아래 명령어를 통해 사양을 파악해보았다. OS 정보uname -alsb_release -acat /etc/os-release 디스크df -hlsblk 메모리/디스크free -htop 출력을 살펴보자. OSUbuntu 22.04.2 LTS (Jammy) -> (LTS: 장기 지원 우분투 서버)Linux 5.15.0-164-generic -> (커널 버전 (장애·드라이버·보안 관련)x86_64 (아키텍쳐) 디스크/dev/mapper/ubuntu--vg-ubuntu--lv 98G 35G 58G 38% / -> 사용률 38%(루트 파티션은 LVM으로 구성)..
https://tobetirdev.tistory.com/169 [나만무] SnapAgent의 의사 결정 과정https://tobetirdev.tistory.com/168 [나만무] 10기 4조 팀장의 후기** 개인의 의견이 다수 포함되어 있음 **** 프로젝트에 대한 포스팅은 나중에 진행 ** 대략 2달만의 포스팅...ㅋㅋㅋ핀토스가 어떻게 끝났는tobetirdev.tistory.com** 위 포스팅에 이어지는 내용입니다 **** 백엔드와 인프라를 담당했기에, 프론트 쪽은 기술하지 않는점 양해 부탁드립니다 ** 나만무에 대한 마지막 포스팅우리 팀은 SnapAgent를 제작하면서 어떠한 기술적 접근과 고민을 했을까?노드 구현우선 AI Agent를 만들기 위해, 어떤 노드가 필요했고 그를 어떻게 구현할지부터..
https://tobetirdev.tistory.com/168 [나만무] 10기 4조 팀장의 후기** 개인의 의견이 다수 포함되어 있음 **** 프로젝트에 대한 포스팅은 나중에 진행 ** 대략 2달만의 포스팅...ㅋㅋㅋ핀토스가 어떻게 끝났는지 복기할 여유도 없이 바로 나만무 프로젝트가 시작되tobetirdev.tistory.com**위 포스팅에 이어지는 내용입니다. 팀장의 시선보다는 팀의 진행 상황에 대한 포스팅입니다**** 기술적 고민보다는 프로젝트 진행 회고이며, 기술 관련 포스팅은 다음에 이어서 진행합니다 ** 우리 프로젝트는 정말 기획이 힘들었던 프로젝트였다.이전 글에서 언급했듯이, 도메인 지식이 없는 채로 프로젝트를 시작했기 때문이다. 그렇다면 왜, 도메인 지식이 없는 프로젝트를 시작했을까?..
** 개인의 의견이 다수 포함되어 있음 **** 프로젝트에 대한 포스팅은 나중에 진행 ** 핀토스가 어떻게 끝났는지 복기할 여유도 없이 바로 나만무 프로젝트가 시작되었다. 나만무를 진행하며 몇가지 키워드에 대해 기록해둔다. 팀원나만무가 시작되기 전부터 팀장에 지원할 생각이었어서, 핀토스 3주차(VM)부터 계속해서 팀원을 찾아다녔다.0주차 미니프로젝트부터 마음이 잘 맞는 친구 하나와 무조건 같이 하기로 했어서, 3명의 팀원을 구하기 위해 영업을 뛰었다.(팀 선정 방식은 운에 맡길 수밖에 없는 구조이지만, 그 확률을 최대한 높이기 위해서였다) 팀원을 최대한 운에 맡기지 않기 위해 노력했는데 그 이유는 다음과 같다. 1. 좋은 결과물(당당하게 1등이라 말할 수 있는)을 내기 위해서2. 오롯이 개발에 집중할 ..
https://www.acmicpc.net/problem/1916 다익스트라를 안 풀다 보니 (+파이썬으로 풀다보니) 구현중에 정말 많은 부분을 틀렸다...import sysinput = sys.stdin.readlineimport heapq as hqMAX = 9999999999 N = int(input())M = int(input())graph = [[] for _ in range(N+1)]for _ in range(M): a, b, c = map(int, input().split()) graph[a].append((b, c))dist = [MAX] * (N+1)start, end = map(int, input().split())dist[start] = 0q = []# (비용, 노드) 순서..
이 문제를 풀 때 주의할 점은 고슴도치가 이동하기 전에 물이 먼저 번져야 한다는 것이다.이는 시간(혹은 레벨)별로 구분해서 처리를 할 필요가 있다는 것이다. 즉 매 시간마다 물 먼저, 고슴도치는 나중에 처리를 하도록 해야한다.이 방법을 고민하다가, 큐를 한 개 쓰는 방법, 그리고 두 개 쓰는 방법을 생각해 풀이해 보았는데 결국 FIFO라는 큐의 특성 때문에, 물 웅덩이가 몇개로 시작하든 한 단계(하나의 시간)에서 물이 다 퍼지고 나서 고슴도치가 이동할 수 있도록 하는 것에는 변함이 없다. 간결함은 주석 처리된 1번째 코드를, 이해하기에는 2번째 코드가 더 좋은 것 같다. 성능은 두 코드가 거의 비슷했다. # from collections import deque# R, C = map(int, input()..
까맣게 잊고 있었던 "동시에 녹일 수 있는 방법"....이래서 알고리즘은 쉬지 않고 풀어야 해 ㅠㅠ 구현 자체는 막 어렵지 않은 문제지만이것저것 생각할게 꽤 있는 문제였다. 기존 배열에 영향을 주지않고(이미 녹은 빙산의 값이 0이 되어 다른 빙산에 영향을 주지않게)처리하기 위해 깊은 복사를 사용해야 한다. 또한 visit배열을 한번만 선언하면 안되고 매번 선언해주어야 하는데아침에 정신없을때 풀어서 그런가 진짜 집중이 안된다.. import sysinput=sys.stdin.readlinefrom collections import dequen,m= map(int,input().split())li= []dx=[0,1,0,-1]dy=[1,0,-1,0]for _ in range(n): li.append(..