리눅스에서 명령어를 사용하다 보면 결과 값을 다른 명령어로 전달하고 싶은 때가 있다. 내 경우에는 k8s pod 이름을 다른 명령어로 전달 하고 싶었다.
찾아보니 xargs 라는 명령어가 있었다.
xargs = eXtended ARGuments - 사용 방법 : xargs [options][command][arguments] - 옵션 : 여러가지가 있는데 내가 사용해본 옵션만 적겠다. -i : 원하는 위치에 인자 입력하기 - 인자를 입력하고 싶은 위치에 {} 를 입력하여 지정할수 있다. -v : 실행된 명령어 확인하기
k get pod -o=custom-columns='DATA:metadata.name' | grep test-[0-9] | xargs -i -t kubectl get po {}
kubectl get po test-67b7988799-j8gks
NAME READY STATUS RESTARTS AGE
test-67b7988799-j8gks 1/1 Running 0 17h
1. k get pod -o=custom-columns='DATA:metadata.name' : k8s pod 이름을 검색한다. 2. grep test-[0-9] | : pod 이름중 "test-숫자" 라는 패턴의 pod 이름을 검색한다. 3. xargs -i -t kubectl get po {}검색한 pod 이름을 {} 에 넣어준다. 4. kubectl get po test-67b7988799-j8gks : -t 옵션에 의해서 실행된 명령어를 확인할 수 있다.
우리는 가끔 소프트웨어를 개발만 잘 하면 된다라고 착각을 한다. 그래서 운영 이라는 거대한 산을 간과하는 경우가 많이 생긴다. 모든 소프트웨어는 운영에 들어가기 전에 많은 테스트와 검증을 거쳐서 실제 운영에 들어가게 된다. 그래서 이때에 개발할때는 생각하지 도 못했던 버그나 오류들이 발생하게 된다. 검사 방법과 환경에 따라서 다양한 상황들이 발생하기 때문에 어떻게 대처를 해야 하는지 방법을 한참 찾아봐야 할 때도 있다. 그런 면에서 이 책은 포괄적인 가이드라인을 제공 해주고 있다.
책 읽어보면 느끼겠지만 운영전 검증에 필요한 요소들이 다 들어있다. 그리고 사례들을 여러가지 예로 들어줘서 더 현실감이 느껴졌다.
우선 1부에서는 안정적인 어플리케이션을 위한 여러가지 패턴에 대해서 이야기 해준다. 4장에서 안티패턴을 먼저 알려주고 5장에서 적절한 패턴에 대해서 설명을 해준다.
2부는 특히 내가 경험했던 일들과 연관들이 많아서 더 재미있었다. 부하, 보안, 로그, 모니터링등 개발을 하면서 많이 경험해봤던 내용들이 많이 있었다. 그리고 내가 몰랐던 내용들도 많이 알수 있었다.
3부에서는 배치와 버전관리에 대해서 나온다. 특히 버전관리는 설계시에는 그럴듯하게 만들어놓지만 점점 유명무실 해지는 상황을 많이 경험했는데 역시나 이렇게 하면 안된다는 것을 다시한번 느낄수 있었다.
각각의 내용들은 챕터에 따라서 나눠져 있기 때문에 굳이 처음부터 읽을 필요는 없고 궁금하거나 관심있는 부분부터 읽어도 아무런 문제가 되지 않는다. 그래서 약간은 백과사전 같은 느낌으로 두고두고 읽어도 좋을 것 같다는 생각이 들었다.
챗GPT 가 요즘 핫하다는것은 많은 사람들이 알고 있다. 하지만 챗GPT가 어떻게 동작하고 있는지 알고 있는 사람은 많지 않다. 내용을 알기에는 알아야 하는 것들이 많다. 그리고 수학, 통계, 프로그래밍, 전문 용어들을 이해하는 단계가 필요해서 그저 사용성에만 관심을 기울이게 된다. 하지만 이 책을 읽고나면 챗GPT 의 동작을 이해하는데 좀더 수월해 질 수 있다.
이 책은 총 200 페이지 정도 되지만 부록을 제외하면 130 페이지정도 된다. 두껍지 않기 때문에 출퇴근 시간을 이용해서 충분히 읽을수 있을 정도이다. 그리고 우선 수식이 많지 않아서 소설책 읽듯이 쭉 읽어내려가면된다. 특히 1장은 GPT 에 대한 이론적인 내용들을 자세히 담고 있다. 신경망과 임베딩, 트레이닝등 빠지면 안되는 내용들이 다 담겨있다. 그렇기 때문에 1장은 꼭 빠짐없이 읽기를 추천한다.
2장과 부록을 통해서는 실습을 해볼 수있다. 물론 GPT 플러스를 사용해서 플러그인을 사용할 수 있어서 제약이 있긴 하지만 유료사용자가 아니라면 한번 참고 삼아 읽어보는것도 나쁘진 않을것 같다.
생성형 AI 에 대한 관심이 많아지고 이 분야를 공부하고 있었는데 마침 좋은 책이 리뷰도서 목록에 있어서 선택하게 되었다. 아무래도 분야가 넓고 수학, 통계, 프로그래밍 등이 섞여서 나오다 보니 무엇이 기초인지, 또는 무엇부터 공부를 해야 되는지 알기가 쉽지가 않았다. 그런데 다행히도 이번에 선택한 책을 보면서 전반적인 지식을 습득할 수 있게 되었다.
이 책에는 이론도 나오고 프로그래밍에 대한 구현도 나온다. 그리고 수학 공식들도 나온다. 하지만 아래 그림처럼 자세한 설명을 해주고 있기 때문에 이론적인 내용을 이해하는데 큰 도움이 된다.
파이썬 코드들도 중간중간 나오면서 따라 하면서 실습을 해볼 수 있다. 하지만 코드가 익숙하지 않더래도 코드부분은 생략하고 내용만 읽어간다면 기초 지식을 충분히 쌓을 수 있다.
하지만 이 책을 가장 효율적으로 사용하는 방법은 실습과 병행하는 것이다. 이 책의 뒷부분으로 갈수록 코드도 길어지고 그래프와 공식들이 많이 나온다. 이런 부분들을 이해하기 위해서는 어느정도 파이썬 코드에 대한 이해가 필요하다.
이 책은 많은 그림과 설명으로 독자들이 이해를 하는데 돕고 있는 책인것은 확실하다. 그리고 이 책을 이해하기 위해 독자가 갖추어야 하는 최소한의 지식으로는 파이썬 코드를 이해할수 있는 능력 정도가 될것 같다.
최근 일을 할때마다 모든게 어렵게 느껴지고 머리 회전이 잘 안되는 느낌을 자주 받았다. 마침 한빛 미디어 "나는 리뷰어다" 책 들 중에 "그리에이티브 프로그래머" 책이 있어서 한번 읽어보게 되었다. 과연 어떻게 하면 창의성을 더할수 있는지 도움을 받고 싶었다.
기술지식, 커뮤니케이션, 제약조건, 비판적 사고, 호기심, 창의적 마인드셋, 창의적 기법.
이 책은 이렇게 7가지 주제를 갖고 있다. 그 중 내가 인상깊게 읽었던 부분을 써보고려고 한다.
"수집가의 오류" 우리의 기억들은 한정적이기 때문에 자주 메모를 한다. 나 또한 개발을 하면서 다양한 툴들을 이용해서 링크를 저장해 놓거나 스크랩을 해놓는다. 하지만 이런 것들을 나중에 다시 보지는 않았다. 심지어 그 메모가 무슨 의미였는지 다시 찾아보는 일도 자주 발생했다. 무조건 적는다고 다 되는것이 아니라 잘 적어야 한다. 메모에도 기술이 필요하고 노하우가 필요하다. 책에서는 몇가지 툴들을 소개해주고 있다. 하지만 내가 생각하는 메모에서 가장 중요한 점은 어떤 툴을 사용하느냐가 아니라 어떻게 자신만의 노트를 만드느냐 인것 같다. 온라인 툴을 사용하기 전에 직접 노트에 여러가지 색깔의 펜을 사용해 가면서 자신만의 메모 노트를 만들었던 것 처럼 온라인 툴을 이용하여 자신만의 노트를 만드는 노하우가 메모에서 가장 중요하다고 생각한다.
비판적 검증 이부분은 읽으면서 정말 반성을 많이 했다. 나도 코드를 작성하면서 비슷한 행동을 많이 했었다. 검증은 해보지 않고 그저 추측만으로 혹은 당연히 되겠지라는 생각을 많이 하고 코드를 작성을 했다. 당연한것, 그리고 원래 그런것들에 대해서 의심을 하지 않았다. 추측만으로는 실력이 늘지 않을 뿐더러 기능에 대한 정확한 이해도 불가능 하다. 그래서 코드에 대한 비판적인 의심은 모든 프로그래머들이 갖추어야 할 소양이 아닐까 생각이 든다.
내가 맨 처음에 고민을 하긴 했지만 결국 우리는 모두 창의적일 수 있다. 이 책에서도 그렇게 언급하고 있고 나 자신도 그걸 알고 있다. 단지 어느 순간 막힘이 있을 때에 자신만의 방법으로 해결 할수 있는 방법이 필요하다. 그리고 내가 책을 읽은 것처럼 책을 통해서 도움을 받을 수도있다. 창의성에 대한 고민이 있는 개발자들에게 한번쯤 읽어보라고 추천하고 싶다.