< 리버스 엔지니어링 기드라 실전 가이드 > | 나카지마 쇼타 외 3인 지음 |

이창선, 임재용 옮김 | 한빛미디어

 

리버스 엔지니어링은 하드웨어나 소프트웨어를 분석하여 그 구성이나 기능을 밝혀내는 기술이다. 특히 이 책에서 설명하는 소프트웨어 리버스 엔지니어링은 소스 코드가 없는 환경에서 타깃 프로그램을 분석하는 사용하는 기술을 지칭한다. 따라서 이 책은 컴퓨터를 처음 접하거나 소프트웨어에 대한 개념이 부족한 사람의 경우 이해하기가 상당히 어려운 부분이 있을 수 있다. 물론 설명이 자세히 잘 되어 있고 따라하기 쉽도록 되어 있기 때문에 동일한 분석 결과를 볼 수는 있겠지만 개념을 이해하지 못한다면 분석 결과도 이해하기 어려울 것 같다.

이 책은 미국 국가안보국(NSA)이 소프트웨어 리버스 엔지니어링 도구로 공개한 기드라에 설명한다. 기드라는 디스어셈블러 뿐만 아니라 고기능 디컴파일러를 무료로 사용할 수 있기 때문에 리버스 엔지니어링에 접근하고자 하는 사람들이 기존보다 훨씬  수월하게 사용할 수 있다. 또한 기드라는 많은 아키텍처나 실행화일 형식을 제공하고 있기 때문에 악성코드 분석이나 펌웨어 분석, 취약점 진단 등 다양한 분야에 활용될 수 있다.

생소한 용어와 복잡한 개념이 계속 언급되지만 그래도 처음 접하는 사람을 위해서 기드라 설치 및 환경 구축하는 방법으로 책이 시작된다. 그리고 가장 기본이 되는 리버스 엔지니어링에 대한 개념과 프로그램의 실행 구조, 실행 파일 형식에 대해서도 자세히 설명하고 있다. 물론 기본적인 지식이 있어야 개념을 제대로 이해할 수 있겠지만 책의 내용을 읽어보는 것으로도 개념을 어느정도는 이해할 수 있지 않을까 생각한다.

2장에서는 기드라에 대한 사용방법에 대해 언급하며, 3장에서 실제 리버스 엔지니어링에 대한 분석 과정을 자세히 설명한다. 4장 이후에는 기드라 확장 모듈 및 ELF 크랙미 분석, 윈도우 백도어 분석, 윈도우 패커 분석, 윈도우 멀웨어 분석, 안드로이드 앱 분석 등 다양한 파일을 분석하는 방법 및 분석 결과에 대해 설명하고 있다. 모든 분석 방법 및 분석 결과에 대해 사용 방법을 기반으로 분석 방법을 자세히 제시하고 있으며, 다양한 예제를 통해 내부 구조를 파악하는 방법을 잘 보여주고 있다.

약 900 페이지에 달하는 방대한 분량이지만 기드라 사용 방법과 파일 분석 방법에 대해 자세하게 설명하고 있기 때문에 천천히 따라 하다 보면 원하는 결과를 볼 수 있을 것이라고 생각한다. 비록 초보자를 위한 책은 아니지만 리버스 엔지니어링과 멀웨어 분석에 관심이 있다면 충분히 책에서 언급하는 내용을 따라서 개념을 습득하고 기초 지식을 쌓아가는데는 문제가 없을 것으로 본다.

리버스 엔지니어링에 대한 다양한 책이 나와 있다. 하지만 대부분 개념적인 설명에 머물거나 특정 타겟에 맞춘 형태로 되어 있는 경우가 대부분이다. 하지만 이 책은 기본 개념부터 출발해서 다양한 샘플을 실제로 분석하는 과정을 제시함으로서 관심있는 사람이라면 충분히 따라서 실습하고 원하는 결과를 얻을 수 있도록 구성되어 있는 것 같다. 또한 번역도 매끄럽게 되어 있어서 문장을 이해하는데 어려움도 없기 때문에 내용을 이애하는데 있어서도 별 문제가 없다고 생각한다.

리버스 엔지니어링과 멀웨어 분석에 관심이 있다면 한번쯤 이 책으로 출발해 보는 것도 좋을 것 같다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

[IT] 머신러인을 활용한 웹 최적화

2021. 12. 24. 11:02 | Posted by 꿈꾸는코난

< 머신 러닝을 이용한 웹 최적화 > | 아스카 슈헤이 지음 | 김연수 옮김 | 한빛미디어

 

임의의 사용자가 접속하는 웹은 사전에 사용자의 선호도나 성향을 분석하기 어렵다. 많은 웹 페이지들이 고객의 성향에 맞춘 정보를 노출하기 위해 다양한 노력을 기울이고 있다. 특히 전자상거래 또는 OTT 서버스 등이 고객의 클릭을 유도하거나 고객 맞춤형 정보를 제공하기 위해 특별한 노력을 기울이고 있다.

웹 설계자나 개발자가 아무리 노력을 해도 사용자를 100% 이해하고 만들수는 없을 것이다. 하지만 사용자의 행동을 관찰하고 분석한다면 좀 더 사용자에게 맞는 최적화를 진행할 수 있을 것이다. 이를 위해 필요한 도구가 머신러닝과 통계이다.

기존 다양한 노력은 통계 기반으로 최적화를 진행해 왔다고 생각한다. 물론 수치로 표현할 수 있는 통계를 통계 최적화를 할 수는 있지만 다양한 상황을 분석하기 위해서는 머신러닝을 접목하는 것이 필요한 기술적인 요소일 수 있다.

이 책은 크게 8개의 장으로 구성된다. 1장에서는 베이즈 통계를 이용한 가설 검증을 시작하는 형태로 A/B 테스트를 설명한다. A/B 테스트는 웹 최적화를 위해 많이 사용하는 방법 중의 하나이다. 이 장을 통해 확률분포와 베이즈 정리, 다양한 분포에 대해 이해를 높일 수 있다.

2장에서는 확률적 프로그래밍에 대해 설명한다. 데이터가 생성되는 과정을 통계 모델의 형태로 기술하면구체적인 문제를 추상화하고, 다른 대상 및 컴퓨터와 공유할 수 있게 된다. 이 통계 모델을 확률적 프로그래밍 언어(PPL)로 기술하면 컴퓨터를 통해 사후 분포를 추론해 다양한 통계량을 계산하고 출력할 수 있다. 확률적 프로그래밍이란 통계 모델을 소스 코드로 기술해서 자동으로 추론을 수행하는 구조를 의미한다.

3장에서는 조합 테스트에 대해 설명한다. 다양한 요소가 조합되어 이루어진 웹사이트에서 하나의 요소를 업데이트한 디자인뿐만 아니라 여러 요소를 변경한 
디자인에 대해 테스트할 경우가 종종 있다. 이 경우 실험을 어떻게 설계하고 데이터를 분석할 수 있는지 소개한다.

이 이외에도 메타휴리스틱, 슬롯 머신 알고리즘, 조합 슬롯머신, 베이즈 최적화, 앞으로의 웹 최적화 등 다양한 주제에 대해 설명한다. 웹 최적화를 위해서 서로 다른 알고리즘을 사용해서 다양한 문제에 대한 방안을 분석할 수 있다. 특히 웹 최적화를 바탕으로 설명한 알고리즘과 기술들이 다른 영역에서도 사용 가능하다는 것을 일부 보여주고 있다. 물론 몇가지 조건이 있지만 그 조건만 만족한다면 다양한 영역에서 최적화 문제를 분석할 수 있을 것으로 본다.

이론적인 설명과 함께 수식이 제시되고 python을 이용한 테스트를 보여준다. 물론 appendix에 수식 이해를 위해 필요한 행렬 연산 기초와 톰슨 샘플링에 대해 설명하면서 이해를 높이고자 하지만 전반적인 수식의 이해를 어려운 것 같다. 하지만 수식을 이해하지 못한다고 해서 그 배경이나 개념을 이해하기 어려운 것은 아닌 것 같다.

웹 최적화를 고민하고 방안을 검토 중이라면 이 책에서 셜명하는 다양한 방법론들이 많은 도움이 될 것이라고 생각한다.


"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

[IT] 소프트웨어 스펙의 모든 것

2021. 11. 21. 19:35 | Posted by 꿈꾸는코난

< 소프트웨어 스펙의 모든 것 > | 김익환, 전규현 지음 | 한빛미디어

 

많은 소프웨어 개발 프로젝트가 다양한 이유로 실패한다는 것은 이미 알려진 사실이다. 프로젝트를 시작할 때 인원과 일정과 비용을 항상 산정해서 시작하지만 대부분 일정과 비용이 예상과 많이 달라지게 되어 예상했던 일정을 넘기거나 추가적인 인원이 프로젝트에 투입되게 된다(물론 프로젝트 막바지에 개발자가 추가된다고 하더라도 일정 단축이 된다는 보장은 하기 어렵다). 어떤 이유때문에 개발 프로젝트가 실패하게 될까?

문제가 발생하는 많은 프로젝트는 제대로 된 스펙이 작성되지 않은 채 프로젝트가 시작되는 경우가 많다. 일반적으로 소프트웨어라고 표현하는 개발 프로젝트는 그 성격상 언제나 변경 가능하다고 생각하기 때문에 스펙 작성을 소홀히 하는 경향이 있다. 그 결과 뒤늦은 스펙 변경으로 인해 전체 프로젝트에 심각한 영향을 끼치는 경우가 종종 눈에 띈다.

스펙을 제대로 작성하는 역량은 소프트웨어 개발에서 가장 어려운 능력이며 소질있는 개발자도 오랜 경험과 노력으로 터득해야 하는 기술이다. 하지만 많은 사람들이 스펙의 중요성에 대해 무시하는 경향이 있다. 대부분은 스펙에 대한 오해에서 비롯된다. 스펙을 적는 것이 좋다는 것은 알지만 어러 사정으로 못 적는다던지 소프트웨어를 만들어보기 전까지는 천재도 그 내용을 다 알 수 없다는 등이다. 특히 스펙을 작성할 시간이 없다는 얘기를 종종하곤 한다. 하지만 이미 언급했던이 대부분 오해에서 비롯한 사항이며 도리어 제대로 된 스펙없이 소프웨어 개발을 시작하는 것이 프로젝트를 위험에 빠뜨린다는 것을 알아야 한다.

소프트웨어 스펙을 개발자만을 위한 문서가 아니다. 소프트웨어 스펙은 모든 프로젝트 이해관계자를 연결하는 프로젝트의 중심이 되어야 한다. 고객, 마케팅, 영업팀에게는 어떤 제품이 만들어질지 미리 알 수 있도록 하며, 프로젝트 관리자에게는 스펙이 관리를 위한 기준이 된다. 개발팀은 스펙을 통해 개발해야 할 제품이 무엇인지를 정확히 안다. 이 외의 모든 인원이 이 스펙을 통해 미리 필요한 준비를 수행하고 처리할 수 있는 기준이 된다.

소프트웨어 개발에서 스펙이 중요한 만큼 제대로된 스펙 작성이 필요하다. 이 책에서는 SRS(Software Requirement Specification) 관점에서 스펙 작성을 설명한다. 종종 스펙과 요구사항을 혼동하는 것을 보게 된다. 요구사항은 일반적으로 고객이나 이해관계자가 요구하는 것이다. 하지만 스펙은 쓰는 사람에 따라 의미가 조금씩 다르다. 따라서 요구사항은 몇줄에 불과할 수 있지만 그 요구상에 매핑되는 스펙은 수 페이지 또는 수십 페이지가 될 수도 있다.

스펙의 중요성은 이 책의 분량만 봐도 알 수 있다. 총 2부로 구성되어 있는데 1부 "소프트웨어 스펙이란?" 부분이 전체의 2/3를 차지한다. 그만큼 스펙의 개념을 이해하는 것이 중요하다는 것을 보여준다. 2부 "SRS 작성법"은 1/3 정도를 차지하는데 실제 SRS 예제를 기반으로 작성해야 하는 항목에 대해 자세히 설명하고 있다.

소프트웨어 스펙의 중요성은 아무리 강조해도 지나치지 않는 것 같다. 그만큼 중요하지만 많은 사람들이 소홀하게  생각하는 것도 사실이다. 프로젝트의 성공을 위해서라도 제대로 된 스펙 작성에 대한 중요성과 작성법을 익힐 필요가 있다고 생각한다. 프로젝트 관리자뿐만 아니라 개발자, 그리고 회사의 구성원 모두 스펙의 중요성을 인식하고 프로젝트의 출발점으로 삼는 인식 전환이 필요한 것 같다. 많은 회사의 구성원들이 이 책을 읽고 스펙에 대한 중요성을 다시 인식하고 개발자는 제대로 된 스펙을 작성할 수 있는 개념과 기술을 터득하면 좋을 것 같다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

[IT] 제대로 배우는 수학적 최적화

2021. 10. 22. 08:40 | Posted by 꿈꾸는코난

< 제대로 배우는 수학적 최적화 > | 우메타니 슌지 지음 | 김모세 옮김 | 한빛미디어

 

수학적 최적화는 주어진 제약조건 하에서 목적 함수값을 최소 또는 최대로 만드는 최적화 문제를 현실 사회에서 의사결정이나 문제 해결을 실현하는 수단이다. 특히 최근 산업이나 학술 영역에서 다양한 문제를 최적화 문제로 모델화하고 이를 수학적으로 풀수 있음을 인식하고 있다. 이미 다양한 최적화 솔루션이 공개되고 있으며, 현실 문제 해결을 위한 유용한 도구로 수학적 최적화 이외의 분야에서도 빠르게 보급되고 있다.

이미 다양한 최적화 솔루션이 나와 있는데 굳이 수학적 최적화를 따로 공부해야 할까? 현실 세계에서 수집된 다양한 데이타에 근거한 최적화 문제를 해결하기 위해서는 보다 효율적인 알고리즘 개발이 필요하다. 따라서 최적화 솔루션을  사용하더라도 자신이 처리해야 할 최적화 문제를 모델링하고 최적화 문제에 대한 기본적인 알고리즘, 그리고 사고방식을 제대로 이해하는 것은 필요하다고 볼 수 있다.

이 책은 알고리즘과 데이타구조, 미적분, 선형 대수 등에 대한 기본 지식을 전제로 하고 있다. 따라서 기본 지식이 부족하다면 최적화 문제를 풀기 위해 제시하는 함수와 그 함수를 풀기 위한 과정을 이해하는 것은 쉽지 않다. 다만 증명과정을 정확히 이해하지 못하더라도 어떤 방법으로 최적화 문제를 푸는지에 대한 감은 익힐 수 있기 때문에 너무 어렵게 접근할 필요는 없을 것 같다.

솔직히 9페이지에 나오는 기호 목록을 보면 과연 이책을 제대로 이해할 수 있을까하는 걱정이 앞서기도 한다. 하지만 1장에 나오는 수학적 최적화 입문을 읽어 보면 이 책에서 할려고 하는 것이 무엇인지 대략 이해할 수 있다. 대표적인 최적화 문제 형태와 그 최적화 문제를 해결하기 위한 알고리즘에 대한 전반적인 부분을 소개한다. 이를 통해 대략적인 방향을 잡을 수 있다.

 

 


각 장을 시작하기 전에 그 장에서 설명하고자 하는 것을 간략하게 설명하고 있다. 2장 선형계획에서는 선형 계획 문제의 개념과 선형 계획 문제의 대표 알고리즘인 단체법, 그리고 완화 문제와 쌍대 문제를 설명한다. 3장 비선형 계획에서는 범용적인 알고리즘 개발이 어렵기 때문에 비선형 계획 문제의 특징을 설명하고 제약 없는 최적화 문제와 제약 있는 최적화 문제에 대한 대표적인 알고리즘을 설명한다. 4장 정수 계획과 조합 최적화에서는 산업이나 학술 등 폭넓은 분야에서 현실 문제를 정식화할 수 있는 범용적인 최적화 문제로서 복잡한 계산에 대한 어려움에 기반한 기본적인 사고 방식을 설명한다. 몇몇 특수한 문제에 대한 알고리즘을 설명하고 임의의 문제 사례에 대해 근사 알고리즘과 휴리스틱에 대해 설명하고 있다.

책의 대부분이 수식과 최적화 문제를 해결하기 위한 증명 과정으로 이루어져 있다고 해도 과언이 아니다. 하지만 제시된 최적화 문제는 우리가 일상 생활에서 자주 접하는 문제들로 제시되어 있기 때문에 현실과 무관한 증명이 나열된 것은 아니기 때문에 조금은 더 집중할 수 있는 것 같다.

책의 초반에 저자는 6개월 정도의 진도를 기준으로 학습을 진행하기에는 분량이 너무 많을 수 있다고 언급하고 있다. 나 자신도 증명에 대한 부분은 대부분 이해하지 못하고 넘어간 것 같다. 저자 말대로 여유를 가지고 문제 하나하나에 대한 증명을 천천히 따라가면서 공부하듯이 다시 시작해봐야 할 것 같다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

< fastai와 파이토치가 만나 꽃피운 딥러닝 > | 제러미 하워드, 실뱅 거거 지음 |

박찬성, 김지은 옮김 | 한빛미디어

 

현재 많은 제품들에 인공지능 또는 머신러닝 기술이 적용되어 있다고 광고하고 있다. 또한 많은 사람들이 머신러닝에 관심을 가지고 공부하고 있는 것 같다. 하지만 머신러닝으로 첫 걸음을 떼기 위해 접하는 책이나 참고 자료들은 일단 수학적인 배경과 이론위주로 설명을 하기 때문에 시작이 어렵다고 느껴지는 것도 사실인 것 같다.

그런 면에서 이 책은 조금은 색다른 방식으로 초보자가 딥러닝을 시작할 수 있도록 도와준다. 복잡한 수학적 배경지식이 없어도 약간의 수학지식과 소규모 데이타, 짧은 코드를 이해할 수 있는 수준이라면 딥러닝을 구현할 수 있는 경험을 할 수 있다. 이 부분이 중요하다고 느끼는 것 중의 하나는 딥러닝을 공부하는 초반에 코드를 실행해서 결과를 확인할 수 있다는 것이다. 

대부분 책들은 지루한 이론적 설명을 하고 복잡한 수식을 보여준 다음에 간단한 예제를 설명한다. 따라서 초반부에 제대로 따라가지 못하면 쉽게 포기하게 되는 것 같다. 하지만 이 책은 초반에 자신이 뭔가 동작하는 코드를 실행하고 원하는 결과를 눈으로 볼 수 있기 때문에 한층 흥미있게 공부를 이어할 수 있도록 해 준다고 생각한다.

초반부에 딥러닝에 대한 개요를 설명하고 바로 데이타 윤리에 대해 설명한다. 이 부분도 이 책이 가지는 독특한 점이면서 장점이라고 생각한다. 요즘 머신러닝이 탑재되어 출시되는 많은 제품에서 일부 인종 차별적인 결과 또는 여성 비하적인 학습 결과를 보이는 사례가 발견되어 논란이 된 적이 있다. 학습 과정에서의 문제도 있겠지만 근본적인 부분은 데이타에 대한 부분, 즉 데이타 윤리가 중요하다는 것은 잘 알려준다고 생각한다. 그런 면에서 딥러닝을 학습하기 전에 데이타 윤리를 제대로 이해하는 것이 꼭 필요한 점이라고 생각되고 이 책이 그런 면에서 중요한 포인트를 잘 제시하고 있다고 생각한다.

fastai 라이브러리는 지난 6년간 샌프란시스코 대학교의 fast.ai 연구 단체에서 진행해 온 딥러닝 교육의 접근법을 그대로 녹여낸 것이다. 이 책을 통해 라이브러리를 배운다는 생각보다 딥러닝으로 무언가를 만들면서 그런 결과가 어떻게 나왔는지 고민하고 더 나은 결과를 만들어낼 수 있는지를 생각한다면 보다 많은 것을 경험할 수 있다고 생각한다.

책 소개에는 코딩경험이 없어도 괜찮다고 되어 있지만 전반적인 책의 구성이 코드 위주로 설명되고 있기 때문에 기본적인 python 개발 경험은 필요하다고 생각한다. 그리고 딥러닝에 대한 디테일한 부분까지 상세히 설명하고 있기 때문에 추상적으만 생각했던 딥러닝의 세계를 새롭게 경험할 수 있는 유용한 책이 된 것 같다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

'꿈꾸는 책들의 도시' 카테고리의 다른 글

[인문] 코로나 이후의 세상  (0) 2021.09.27
[경제] 두 발로 선 경제  (0) 2021.09.23
[인문] 방구석 심리학 실험실  (0) 2021.09.15
[과학] 텐 드럭스  (0) 2021.09.14
[소설] 불편한 편의점  (0) 2021.09.14

[IT] GAN 인 액션

2021. 8. 22. 23:59 | Posted by 꿈꾸는코난

< GAN 인 액션 > | 야쿠프 란그르, 블라디미르 보크 지음 | 박해선 옮김 | 한빛미디어

 

머신러닝을 위해 사용하는 다양한 시스템 중 GAN에 관한 책이다. 다양한 알고리즘과 시스템이 있지만 GAN이 다른 시스템과 다른 부분 중의 하나는 자동으로 학습한 표현과 머신러닝 피드백 루프를 활용할 수 있다는 점이다. 특히 머신러닝을 위한 다른 시스템은 크게 변화하지 않고 있지 않지만 GAN은 계속 발전해 오고 있다는 점이다.

이 책은 머신러닝과 신경망을 어느정도 다뤄본 경험이 있는 사람을 대상으로 한다. 따라서 이 부분을 전혀 모르는 사람이 읽기에는 다소 무리가 있을 것이라고 생각한다. 나도 머신러닝에 대한 알고리즘이나 시스템을 실제 사용해 보지는 않았지만 개념적으로 어느 정도는 알고 있다고 생각한다. 그래도 이책의 개념을 완전히 이해하기에는 조금 어려운 부분이 없지 않아 있었던 것은 사실이다.

하지만 본인의 의지가 있다면 자료를 찾아가면서 책을 읽어볼 시도는 가능하다고 생각한다. GAN을 알기 위해서 머신러닝에 대한 기초부터 일일이 시작하기에는 너무 시간이 많이 걸릴 것은 분명하다. 관심이 있다면 이 책을 읽어가면서 이해가 되지 않거나 부족한 부분은 다른 자료를 참고하면서 천천히 읽어가는 방법도 좋은 방법이라고 생각한다.

이 책은 총 3부 12장으로 구성되어 있다. 1부는 GAN과 생성 모델링에 대한 설명이다. GAN 세계를 소개하고 가장 기본적인 GAN 모델에 대해 설명한다. 2부는 최신 GAN 모델에 대해 다루고 있다. 1부에서 설명한 기본 개념을 바탕으로 GAN을 이론적으로 더 깊이 이해하고 GAN을 구현하기 위한 실용적인 방법을 소개한다. 3부는 앞으로 배울 것에 대해 소개한다. 앞에서 배운 GAN과 구현에 대해 학습한 것을 적용할 수 있는 실용적인 사례와 다른 분야를 제시한다.

GAN에 대한 기본적인 작동 원리와 생성자 및 판별자 개념을 이해한 후 오토인코더와 GAN으로 손글씨 숫자를 생성하는 예제를 다룬다. 또한 다양한 모델로 고해상도 이미지를 생성하거나 손글씨 숫자 이미지를 생성하거나 물체를 변화는 방법을 자세히 설명한다. 또한 GAN 훈련이 가지는 어려움과 실제 이미지와 잡음으로 적대 샘플을 생성하는 예를 살펴본다. 또한 의료 및 패션 분야에서 GAN의 활용 방법과 사례를 살펴볼 수 있다.

이 책을 통해 이론과 실용이라는 두마리 토끼를 모두 잡을 수 있다고 생각한다. GAN은 실용적인 사례 및 이론적인 요구사항과 제약에 대한 복원력 측면에서 모두 잘 활용할 수 있는 모델이다. 특히 사물이나 사람 얼굴 등과 같이 서로 다른 종류의 이미지를 동일하게 잘 생성하는 것을 보면 다양한 분야에 활동도가 높다는 것을 알 수 있었다. 단점중의 하나는 훈련이 어렵다는 것인데 그 원인 중의 하나로서 실전에 왜 잘 동작하는지 이해하기 어렵다는 점인 것 같다. 일부 수학적으로 증명이 되고 있지만 대부분의 성과가 실험적인 결과인 것을 보면 알 수 있다.

진정한 AI 패러다임에 도달하기 위해서는 GAN과 같은 모델이 현실을 반영하도록 사람이 제대로된 방향을 제시해 주는 것이 필요한 것 같다. GAN은 기존 대부분의 데이타를 학습하여 샘플을 만들수 있지만 훈련데이타에서 크게 벗어나지는 못한다는 한계가 있기 때문이다. 다양한 연구를 통해 보다 완벽한 머신러닝으로 접근하는 것은 여전히 사람의 손에 많은 것이 달려 있다고 생각한다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

[IT] UNIX의 탄생

2021. 7. 10. 18:22 | Posted by 꿈꾸는코난

< 유닉스의 탄생 > | 브라이언 커니헨 지음 | 하성창 옮김 | 한빛미디어

 

유닉스는 대학 입학하자마자 바로 사용한 환경이어서 나한테는 매우 익숙한 환경이다. 대학원 졸업할때까지 약 10년 가까이 유닉스 환경 위주로 사용했기에 다른 사람들이 생각하는 불편함은 별로 느끼지 못하고 있다. 대학 입학 후 유닉스에 대한 대략적인 역사와 기본 개념에 대해 배우고 유닉스의 원칙에 대해 익힌 것 같다.

처음 이 책이 출간되었다는 기사를 봤을 때 꼭 한번 읽어봐야겠다는 생각을 했었다. 다른 책을 계속 읽어 있어서 책의 구입을 차일피일 미뤄왔지만 한빛미디어 <나는 리뷰어다> 활동을 통해 책을 받아 읽을 수 있게 되었다.

이 책은 유닉스의 탄생과 발전 과정에 대한 모든 것을 보여주는 책이라고 생각한다. 유닉스의 역사를 기록하면서 유닉스 개발현장에 있었던 이들과 그 시기의 상황들을 자세하게 설명한다. 그 현장에 있지 않으면 알 수 없는 세세한 내용까지 담고 있어서 일반인이라면 모르고 지나쳤을 다양한 개발 배경을 알 수 있었던 것 같다.

유닉스를 처음 개발한 벨 연구소를 소개하는 것으로 책이  시작된다. 그리고 유닉스를 개발하게 된 배경과 개발 진행 과정을 잘 설명하고 있는 것 같다. 유닉스 개발 후 대학과 기업에 라이선스하는 과정을 통해 왜 벨 연구소가 유닉스로 사업화를 제대로 할 수 없었는지도 잘 알 수 있게 되었다.

유닉스의 개발은 다양한 운영체제 및 개발 도구에 많은 영향을 미쳤다고 생각한다. 특히 많은 사람들이 사용하는 리눅스에 직접적인 영향을 줬다고  생각하고, 또한 C 언어를 필두로 한 다양한 언어 개발에도 많은 영향을 줬다. 그리고 유닉스를 사용하기 위한 모든 유틸리티 모듈이 어떻게 개발되게 되었는지도 잘 알 수 있었다.

책을 읽으며 그 당시의 벨 연구소의 개발 문화에 대해 매우 부러운  생각이 들었다. 개방적인 문화를 통해 새로운 시도가 이루어지고 그 시도를 통해 다양한 기술개발이 이루어진 것을 보면 문화가 매우 중요한 역할을 한다는 것을 새삼스럽게 느끼게 되었다. 어떻게 보면 전화통신회사인 벨 연구소에서 유닉스라는 운영체제가 개발된 것이 조금은 아이러니하지만 그 당시 벨 연구소의 연구 실적을 보면 우연히 개발된 것은 아니라는 생각이 들었다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

[IT] 게임 엔진 블랙 북: 둠

2021. 5. 23. 16:52 | Posted by 꿈꾸는코난

< 게임 엔진 블랙 북: 둠 > | 파비앙 상글라르 지음 | 박재호 옮김 | 한빛미디어

 

나는 게임을 잘 하지 않는 편이다. 둠이라는 게임도 별로 하지는 않았다. 그러다 보니 둠이라는 게임이 그 당시에 얼마나 대단한 게임이었는지 알지 못했다. 이 책을 통해 둠 게임이 그 당시에 얼마나 대단했는지 느낄 수 있었다. 당시 제한된 하드웨어 제약을 극복하고 원하는 기술을 구현하기 위해 노력한 과정을 잘 느낄 수 있었다.

 

둠이 나올 당시 PC 환경도 급격하게 변화하는 시기였던 것 같다. 학교 환경도 터미널에서 PC로 바뀌고, PC도 자주 새로운 모델로 변경되어 갔다. 게임도 점점 화려해지고 복잡해져 가는 시기였던 것으로 기억한다. 인텔 386에서 486으로, 스티브 잡스가 넥스크 컴퓨터를 설립한 후 출시된 넥스트 컴퓨터, 그리고 다양한 하드웨어 아키텍쳐 등 그 당시에 이론적으로만 접했던 내용들이 실제 소프트웨어적으로 어떻게 적용되었는지를 새롭게 확인할 수 있는 내용으로 구성되어 있다.

 

1990년대 초반을 생각하면 개발 환경이 지금과는 완전히 다른 세상이었던 것 같다. 원하는 기술적인 내용은 대부분 잡지 칼럼을 통해 접하는 경우가 많았고 간혹 PC 통신 등을 통해 기술 교류도 일부 이루어졌던 것 같다. 대부분의 문제를 혼자 알아서 해결해야 했으며 제대로 된 통합 개발환경이 제공된 것도 그 시기 이후였던 것으로 생각된다. 제한된 하드웨어(CPU, 메모리 등)와 비디오 및 오디오 컨트롤을 위해 다양한 트릭이 사용되던 시기였다.

 

이 책을 읽다 보니 그 당시 생각이 많이 떠 오른다. 물론 둠 개발사이 이드소프트 개발자들에 비할바는 아니지만 나름 기술적인 문제를 해결하기 위해 무지 노력했고, 하드웨어적인 한계 극복에 많은 노력을 기울였던 시기였던 것 같다. 책에서 언급하는 다양한 기술적인 용어와 방법들이 그 당시 다양하게 고민되던 방법 중의 하나였던 것도 기억나는 것 같다.

 

책의 초반에 IBM PC에 대한 설명이 먼저 기술된다. 굳이 왜 이런 내용이 필요할까 생각되었지만 책을 읽어가다보면 자연스럽게 IBM PC에 대한 하드웨어적인 개념 정리가 꼭 필요했다는 생각이 든다. 하드웨어적인 이해를 바탕으로 둠이 개발되었고 다양한 플랫폼에 둠이 동작하도록 이식하는 과정을 설명하는데도 꼭 필요한 개념이었던 것 같다.

 

아마 개발자라고 하더라도 이 책에서 기술되는 기술적인 부분을 제대로 이해할 수 있는 사람은 많지 않으리라 생각된다. 기술이 어렵다기 보다는 그 당시 사용한 기술이 지금은 고려 대상이 아닌 것이 많기 때문에 굳이 알 필요가 없는 것도 많기 때문이다. 하지만 1990년대 IT쪽 교육을 받은 사람이라면 대부분의 개념을 한번쯤 들어보거나 접해 본 경험이 있을 것이다. 새삼 그 당시 기억이 새록새록 떠오르며 많은 기억이 되살아나는 기분이었다.

 

지금 사용하지 않는 기술이라고 해서 의미가 없는 기술은 아니라고 생각한다. 기술 자체가 중요한 것이 아니라 그 기술을 활용한 개념과 문제에 대한 접근 방식을 제대로 아는 것이 더 중요하다고 생각한다. 그런 면에서 이 책은 많은 개발자들에게 마주한 문제를 어떻게 접근하고 해결해 나갈 수 있을지 좋은 방향을 제시해 준다고 생각한다. 개발자라면 한번쯤 이 책을 통해 다른 개발자들이 어떻게 새로운 접근법으로 소프트웨어를 개발해 왔는지 느껴 볼 수 있었으면 좋겠다.

 

과거의 추억을 되살리면서 재미있게 읽은 책이었다.

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

[IT] 이것이 데이터 분석이다 with python

2021. 4. 13. 22:04 | Posted by 꿈꾸는코난

< 이것이 데이터 분석이다 > | 윤기태 지음 | 한빛미디어

 

모름지기 현재는 데이타의 시대라고 표현해도 과언은 아닌 것 같다. 수많은 데이타가 나도 모르게 어딘가에 쌓여 나가고 있고 누군가가 데이타를 분석해서 각자에 많는 자료를 만들거나 통계 자료로 활용하고 있다. 그렇다면 우리도 간단하게나마 데이타를 분석해 볼 수 있지 않을까?

데이타 분석을 위해 사용하는 도구 중 개발자에게는 python만한 것은 없는 것 같다. 다양한 패키지가 제공되는 장점이 있고, 복잡한 코드 개발없이 손쉽게 데이타 를 분석하고 결과를 빠르게 확인 가능한 측면도 있다.

이 책은 이런 측면에서 상당히 유용한 정보를 제공해 준다. 입문자 입장에서 이론이나 스킬이 아닌 문제에 올바르게 접근하는 사고를 제시하기 위해 단계적으로 데이타 분석에 접근하는 방법을 다루고 있다. python을 이용한 예제를 가지고 설명하기 때문에 프로그래밍에 대한 개념이 없는 경우 또는 이미 데이타 분석에 사용되는 수학적, 통계적 개념을 잘 이해하는 사람에게는 적합하지 않을 수 있다. 하지만 대다수 데이타 분석에 관심정도만 있는 개발자라면 책의 내용을 따라 테스트해보고 직접 변형해서 원하는 데이타를 분석하기에 충분하다고 생각한다.

github을 통해 책에서 설명하는 예제를 모두 다운받을 수 있다. 그리고 python 개발 환경을 구성하는 단계부터 시작하기 때문에 python에 익숙하지 않은 개발자로 쉽게 따라 할 수 있는 것 같다.

책에서 설명하는 데이타 분석은 다양한 데이타 분석 흐름과 개념에 대해 단계적으로 설명하고 있다. 데이타 인사이트 발견에서는 탐색적 데이타 분석부분으로 판다스, 넘파이, Matplotlib을 활용한 분석 사례를 설명하고 다양한 시각화 방법으로 인사이트를 발견할 수 있도록 한다. 텍스트 마이닝 첫걸음에서는 웹크롤링으로 데이타를 수집하는 것과 키워드 추출 및 키워드 간 연관관계 분석 방법에 대해 설명하고 있다.

미래를 예측하는 데이타 분석에서는 지도학습과 비지도 학습의 개념을 이해하고 회귀 분석으로 예측을 수행하고 시계열 데이타의 트랜드를 예측하는 방법에 대해 보여주고 있다. 이 이외에도 몇몇 추가적인 분석 방법을 설명하고 있는데 초보자도 쉽게 이해할 수 있도록 상세히 설명하고 있다.

책에서 설명하는 소스와 데이타 셋까지 다운받아 테스트할 수 있기 때문에 개념적인 이해와 실제 분석되는 결과를 볼 수 있어서 이해가 훨씬 잘 되는 것 같다. 또한 조금 경험이 쌓인다면 다양한 관점으로 데이타를 분석해서 원하는 결과를 도출해 볼 수 있을 것 같다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

[IT] 사토시의 서

2021. 3. 21. 17:35 | Posted by 꿈꾸는코난

< 사토시의 서 > | 필 샴페인 지음 | 조진수 옮김 | 한빛미디어

 

비트코인이 처음 나왔을 때 생각이 문득 난다. 회사 직원 중 한명을 통해 비트코인에 대한 소식을 전해들었다. 소프트웨어를 설치하고 채굴이란 것을 하면 디지털 코인인 준다는 것이었다. 처음 그 애기를 들었을 때는 그냥 호기심 많은 누군가가 재미삼아 만든 개념으로 보였다. 그리고 과연 그 화페가 실제로 사용이나 될 수 있을까 햐는 의문도 많았다. 나도 그 재미에 참여해볼까 고민을 했지만 별로 대수롭게 생각하지 않고 넘기게 되었다.

하지만 시간이 지나서 비트코인으로 피자를 사먹은 첫 사례가 소개되었고 다시 시간이 흘러서 비트코인 하나가 몇천만원에 육박하는 현실에 이른 것 같다 . 특히 평창 동계올림픽 즈음에는 코엑스에 있는 많은 매장이 비트코인으로 결제 가능한 서비스를 선보이기도 했다. 현재는 비트코인이 거래의 목적보다는 투자의 목적으로 많이 거래되는 것 같다. 하지만 처음 비트코인이 나왔을 때 생각했던 개념과 큰 흐름이 있지 않았을까?

이 책은 비트코인의 창시자로 알려진 사토시 나카모토가 여러 포럼과 이메일을 통해 여러 사람과 주고 받은 내용을 정리한 책이다. 아직 사토시 나카모토가 실제하는 사람이었는지 아니면 어떤 그룹인지 알려지지 않았다. 하지만 그 존재와는 무관하게 비트코인의 기본 개념은 현재의 IT 환경에 미친 파급효과는 엄청나다고 볼 수 있다. 단순 가상화페를 만드는 것에 그치지 않고 현재의 자본시장의 불합리성과 다양한 경제문제를 해결할 수 있는 수단으로 가상화폐라는 개념을 제시한 것으로 생각된다. 그런 부분까지 생각하면 아주 천재적인 사람이 아니었을까 생각된다.

 


사토시 나카모토가 비트코인을 만들기 위해 많은 수학적, 소프트웨어적 개념을 적용했다. 그리고 그 기본 개념을 바탕으로 지속적인 실험과 업데이트를 통해 대중에게 계속 배포되고 있다. 이 비트코인인 지금까지 그 유용성을 입증해 오고 있으며 금융 및 화페 산업, 전자 지불 시스템에 지대한 영향을 미치면서 전 세계적으로 받아들여지고 있다.

일단 사토시 나카모토의 비트코인은 탈중앙화된 P2P 전자화폐 시스템이다. 중앙의 개입이 참여자들의 동의에 의한 온라인 화폐시스템이다. 그냥 생각하면 그게 가능할까 생각들지만 비트코인에 적용된 다양한 기술과 시스템을 보면 현실적으로 적용 가능하다는 것을 잘 알 수 있게 된다. 암호학적 증명에 기반하여 거래 당사자가 서로 거래할 수 있게 해 주는 전자 결제 시스템으로 이해하면 된다. 개념적으로는 P2P 분산 타임스탬프 서버를 이용하여 거래의 시간 순서에 대한 연산 증거를 생성한다. 그리고 이 과정을 통해 이중지불문제를 해결할 수도 있다.

이 책에서 언급된 개념들은 전체 내용을 포함하고 있지는 않다. 그리고 어려운 수학적인 용어나 개념도 많이 생략되어 있다. 그래서 기술적인 부분을 면밀히 파악하고자 한다면 충분하지 않을 수도 있다. 하지만 비트코인에 대한 기본적인 사상을 이해하고 개념을 파악하는 정도로만 충분한 지침서 역할을 제공할만한 책이라고 볼 수 있다. 쉽게 설명했다고하는 하지만 여전히 개념적인 부분에서 어려운 부분이 있지만 기본 원리를 생각하면 개념적인 부분은 충분히 이해를 할 수 있을 것이라고 생각한다.

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

이전 1 2 3 4 다음