개발 11

[서평] 사례로 배우는 언어 전환 프로젝트 관리, 로드북

로드북에서 제공 받아 작성한 서평입니다. 현재 참여하고 있는 프로젝트에서 사용중인 프로그래밍 언어는 C이다. 이 프로젝트를 진행하고 있으면서 들었던 가장 많은 생각은 코드의 재사용성에 대한 고민이었다. 여러 부서에서 참여하고 있는 프로젝트지만, 통일된 라이브러리나 컨벤션이 없어 개발 그룹마다 각자의 코드 베이스를 기워 넣듯 통합을 하고 있다. 이를 해소하고 싶다는 생각 때문에 다음 프로젝트에서는 C++도 사용할 수 있다는 이야기를 듣고 기본적으로 사용해야만 하는 요소들을 객체로 만들어 사내 라이브러리 화를 해보고자 하였다. 기본적인 요소들부터 시작해서 프로그램에서 수행해야 하는 작업들을 파이프라인 할 수 있는 기능까지 다양한 요소들을 홀로 추가해가면서 진행하고 있었다. 하지만 안타깝게도 이러한 과정은 소..

서평 2023.05.25

[나는 리뷰어다] 파이썬 라이브러리를 활용한 데이터 분석 (3판)

"한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다." 현대 사회에서 데이터 분석은 빼놓을 수 없다. 일상생활에서도 같은 물건을 구매하기 위해서 수많은 오픈 마켓을 돌아다니거나, 주식 차트를 보며 기영이를 찾는 과정 등 많은 활동들이 데이터 분석 과정 들이다. 물론 본격적인 데이터 분석은 눈으로 훑어보는 수준을 넘어서 아주 많은 정보들을 통해 합리적인 판단을 내릴 수 있도록 정제하고 종합하는 과정이다. 간단한 데이터들은 메모장에 정리할 수 도 있지만, 복잡하거나 아주 많은 양의 데이터를 손쉽게 다루기 위해서는 도구가 필요하다. 데이터 분석을 위한 도구들은 다양하게 존재하는데 대표적으로는 프로그래밍 언어인 파이썬과 R이 많이 사용되고, 상용 프로그램으로는 엑셀 등 이 있다. 이 중에서 파이썬의 경우..

서평 2023.05.24

[서평] 아무도 알려주지 않은 C++ 코딩의 기술

로드북에서 책을 제공받아 작성된 서평입니다. C/C++에 입문하는 과정에서 언어의 문법보다도 더 나를 괴롭혔던 부분들은 대체로 비주얼 스튜디오에 있었다. 분명 몇 줄 안 되는 코드에 빨간 줄 하나 없이 작성했건만, 비주얼 스튜디오는 어김없는 오류를 뱉어냈다. 몇 시간을 공들여 짧은 영어 실력으로 스택오버플로 글을 토막토막 읽어 나가며 친절한 글쓴이들이 올려주는 이미지를 통해 간신히 해결하면 또 다른 오류가 나를 맞이해 주었다. 자주 겪었던 상황들을 책에서는 '실무'적인 내용이라 잘 알려주지 않는 것들이었다. 이 중 몇 가지 나열해 보면 아래와 같다. 비주얼 스튜디오에 있는 '미리 컴파일된 헤더' 솔루션과 프로젝트의 종속 관계 외부 라이브러리 빌드 그 외.. "아무도 알려주지 않은 C++ 코딩의 기술"은 ..

서평 2023.05.12

[나는 리뷰어다] 혼자 공부하는 컴퓨터구조+운영체제

"한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다." 이번에 리뷰할 도서는 입니다. 컴퓨터 공학을 전공하지는 않았지만, 예전에 간혹 프로그래밍 관련 책을 보면 컴퓨터 구조나 운영체제에 대해 심도 깊게 다루는 것을 본 적이 있었습니다. 하지만 최근 프로그래밍 분야의 책이나 강의, 블로그 등을 찾아보면 이런 내용들을 간단히 언급하거나 아얘 다루지 않고 "Hello world"만으로 시작하는 경우가 대부분입니다. 물론 최근 소프트웨어 분야에서 컴퓨터구조나 운영체제에 대해 소홀한 부분은 대부분의 디테일은 사용자가 직접 관여하지않아도 잘 작동할 수 있도록 숨겨져 있습니다. 하지만 아는 만큼 보인다고, 개발 실력을 높이기 위해선 하드웨어까지 신경 쓸 수 있어야 합니다. 가령 2차원 행렬에 대한 연산을 프로..

서평 2022.12.24

[나는 리뷰어다] 코드로 인프라 관리하기 (2판)

"한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다." 소프트웨어 개발을 하다 보면, 제품이나 개발 프로세스에서 빠지지 않는 부분이 바로 인프라에 대한 내용입니다. 특히 빠르게 변하는 소프트웨어의 특성으로 인해 지속적인 통합(Continuous Integration)과 지속적인 배포(Continuous Deploy)가 강조되는 만큼 이를 구현하기 위해서는 인프라의 도움이 절실한 상황입니다. 하지만 소프트웨어에 요구되는 빠른 변화는 인프라에게도 동일하게 적용됩니다. 빠르게 변하는 인프라에 대한 요구사항을 주먹구구식으로 대응할 수 없습니다. 이에 따라 인프라 자체도 코드 활용할 수 있다면 자체적인 버전 관리를 통해 안정적으로 쌓아 올릴 수 있고, 적절한 모듈화를 통해 확장성과 재사용성마저 증가시킬 수..

서평 2022.09.27

<구글 엔지니어는 이렇게 일한다>

비주류 개발자이면서, 소프트웨어 엔지니어링이 전공이 아닌 개발자로서 IT회사의 문화나 개발 철학, 프로세스 등은 항상 동경의 대상이었습니다. 실질적으로 들어본 적도 없고, 어떻게 일하는지 정확히 본 적은 없지만 막연히 좀 더 유연한 근무 환경과, 최신 소프트웨어 엔지니어링 기법들이 적용된 프로세스들, 수평적인 문화 등 멋진 근무 환경에서 일하고 있지 않을까 하는 기대가 있었죠. 책은 막연한 동경심을 넘어 현재 내가 있는 곳을 더 멋진 개발 프로세스를 갖는 곳으로 바꾸고자 하는 노력의 일환으로(안되면 나중에라도 활용해볼 수 있지 않을까 하는 기대감으로) 읽어보게 되었습니다. 책은 크게 4가지의 파트로 구성되어 있습니다. 전제 문화 프로세스 도구 전제 부분은 나머지 파트에서 자주 언급되거나 설명의 토대가 되..

서평 2022.07.31

지속가능한 SW 개발을 위한 코드리뷰

이번 포스팅은 지난 4월 27일에 우아한테크세미나에서 진행했던 백명석 연사님의 영상을 보고 내용을 정리해보고 싶어 적게 되었습니다. 영상의 내용에는 왜 코드 리뷰가 필요한 지부터 시작하여 실질적인 코드 리뷰 절차와 팁들에 대해 다루고 있지만, 제 포스팅에서는 실질적인 리뷰 절차와 기법들에 대해서만 간단히 정리하도록 하겠습니다. 자세한 내용은 아래 링크의 영상을 참고하시면 좋을 것 같네요! 코드 리뷰 절차 코드 리뷰는 저자, 리뷰어, 변경 내역으로 구성되어 있다. 우선 저자의 경우 코드의 작성자로써 자신이 작업한 코드 변경 내역을 리뷰어들에게 리뷰를 요청하게 된다. 리뷰어는 저자로부터 받은 변경 내역을 확인하여 코드를 읽고 병합(merge) 요청을 받아들일지 결정하게 된다. 변경 내역의 경우 리뷰 시작 전..

프로그래밍 2022.05.01

[남독] 이제 프로그래밍 문법 좀 할 줄 아는 것 같은데, 뭘 해야 하나?

처음 개발자는 어떻게 될 수 있을까를 생각해본다면, 당연히 프로그래밍 언어를 익히는 것이 1순위 일 것이다. 기본적인 변수의 타입을 시작으로 수많은 프로그래밍의 기본적인 지식을 익혔다면 과연 다음 단계는 무엇일까? 우리가 외국어를 배울 때를 생각해보면, 프로그래밍 언어에서의 문법은 외국어의 문법과 기능적으로는 비슷하다고 볼 수 있다. 사람과 의사소통을 위해선 공통된 약속인 알파벳으로 시작해서 의미를 제대로 표현할 수 있도록 단어를 나열하는 법 등등을 알아야지만 하나의 언어를 활용할 준비가 되었다고 볼 수 있다(물론 사람이라는 인터프리터, 해석가, 는 매우 유능하기에 적당히 틀려도 잘 알아듣기 때문에 완벽할 필요는 없다.) 문법만 다 익히면 과연 언어를 유창하게 활용할 수 있을까? 구글에서 "영어 공부"라..

서평 2022.04.02

[남독] 개발자에서 아키텍트로

"한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다." 왜 아키텍트가 되어야 하는가? 현재의 나는 소위 말하는 임베디드 개발자로서 근무를 하고 있다. 제조업 기반의 회사 제품에 들어가는 소프트웨어를 개발하는 것을 보면, 모든 회사가 그런지는 모르지만 개발 과정이 상당히 직선적이다. 소프트웨어의 근간이 되는 요구사항은 막막하고, 뼈대가 되는 아키텍처는 막연하다. 부품이나 제조 공정에 대해선 명확한 용어가 정의되어 있고 프로세스도 철저하지만, 소프트웨어에 대해선 모듈, 기능, 알고리즘, 로직 같은 용어들이 산발적으로 나오며 개발 프로세스는 "밑바닥부터 시작하는 딥러닝" 시리즈처럼 백지에서 출발해 최종 기능까지 단숨에 도달하고자 한다. 또한 개발 문화가 상당히 폐쇄적이라 오픈 소스에 대해 상당히 비관적..

서평 2021.12.25

[C/C++] 연결 리스트(Linked List)의 순환 구조 찾기, 토끼와 거북이

이번 포스팅에서 알아볼 것은 연결 리스트(linked list)의 순환 구조 찾기입니다. 이를 알아보기 위해선 먼저 연결 리스트의 간단한 형태에 대해 정의하고자 합니다. struct LinkedList { struct LinkedList* next; int item; }; struct LinkedList* new_linked_list(int item) { struct LinkedList* res = new LinkedList; res->next = NULL; res->item = item; return res; } 연결 리스트의 구조는 위와 같이 자기 자신의 포인터를 포함한 구조체입니다. 가장 먼저 선언된 구조체가 머리(head)라고 불리며, 이후에 생성되는 구조체들은 이전에 나온 연결 리스트의 next..

프로그래밍 2021.12.11
728x90
반응형