번역서 "핸즈온 해킹" 출간 소식

류광, 2021/10/02 15:30
번역서 "핸즈온 해킹" 출간 소식 전합니다.

Wiley가 출판한 Hands on Hacking을 옮긴 핸즈온 해킹이 며칠 전 출간되었습니다.

핸즈온 해킹 표지

제목이 암시하듯이 실습 예제들로 가득한 책입니다. 특히 테스트 대상 시스템을 VM 이미지로 제공하는 덕분에 예제들을 따라 하기가 꽤 수월합니다. 침투 테스트 대상 시스템은 우분투, 솔라리스, Windows Server 등이고 테스트 작업용으로는 칼리 리눅스를 사용합니다. 모두 VM으로 실행합니다. 책은 VirtualBox를 기준으로 설명하지만, 다른 VMM으로도 가능할 것입니다. 저는 번역하면서 Windows 10에서 VirtualBox로 예제들을 실행했는데, VirtualBox가 WSL과 뭔가 잘 맞지 않아서 번역하는 동안 WSL은 꺼두었습니다.

질문, 오역&오탈자 보고, 기타 의견 등은 http://occamsrazr.net/book/HandsOnHacking 페이지로 오세요! 위의 표지 이미지를 클릭해서 들어가도 됩니다.

top
TAG 번역서
의견 # + 0

g++ 11에서 C++20 헤더 단위 사용하기

류광, 2021/09/18 19:31
g++ 11도 C++20 헤더 단위 기능을 지원합니다.

이전 글 Visual Studio 2019에서 C++20 헤더 단위 사용하기의 GCC 버전입니다. 헤더 단위(header unit)에 관한 설명은 이전 글에 있으니 생략합니다.

예제 역시 이전 글과 동일하지만, 편의를 위해 다시 제시합니다. 목표는 다음과 같은 C++ 프로그램을 g++ 11로 성공적으로 빌드해서 실행하는 것입니다.

main.cpp

#include <iostream>
import <vector>;      // (1)
import "myheader.h";  // (2)

int main() {
    std::vector vec{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

    std::cout << "get_size(vec): " << get_size(vec) << "\n";
}

myheader.h

#pragma once
auto get_size(auto obj) { return obj.size(); }

g++ 11 버전 현재, 헤더 단위를 사용하려면 메인 프로그램을 컴파일하기 전에 먼저 import되는 헤더들을 일일이 컴파일해 주어야 합니다. 이번 예제는 사용자 정의 헤더 하나와 표준 헤더 하나를 사용합니다. 우선, 사용자 정의 헤더를 헤더 단위를 위해 컴파일하려면 모듈 기능을 위한 -fmodules-ts와 옵션과 링크 없이 컴파일만 하기 위한(메인 프로그램이 아니므로) -c 옵션, 그리고 C++20 기능을 위한 -std=c++20 옵션1이 필요합니다.

$ g++ -std=c++20 -fmodules-ts -c myheader.h

표준 헤더를 컴파일하려면 앞의 옵션에 -x c++-system-header 옵션을 추가해야 합니다.

$ g++ -std=c++20 -fmodules-ts -c -x c++-system-header vector  

이제 소스 코드를 컴파일하는 데 필요한 재료가 모두 준비되었습니다.2 이제 -c 없이 소스 코드를 컴파일하면 됩니다. 필요합니다.

$ g++ -std=c++20 -fmodules-ts main.cpp -o main

이렇게 하면 main(또는 main.exe)이라는 실행 파일이 만들어집니다.

참고로, 이 표준 헤더의 헤더 단위는 표준 라이브러리 모듈이 아닙니다. 표준 라이브러리 모듈은 C++23 또는 그 이후에 추가될 예정인데요. 관련 제안서 P0581r0에 따르면 표준 라이브러리 모듈은 import <헤더>;가 아니라 import std.???; 형태로 사용하는데, 표준 헤더마다 std.헤더가 있는 것이 아니라 이를테면 <new>, <exception> 등을 std.fundamental로 묶고, <iostream>, <locale> 등을 std.io로 묶는 등 기능별, 성격별로 좀 더 큰 모듈을 두는 방식입니다.


  1. 헤더 단위 자체는 -fmodules-ts만 있으면 되는 것으로 보입니다. 그러나 헤더 단위를 사용하는 코드는 다른 C++20 기능도 사용할 가능성이 크므로, 그냥 -std=c++20를 기본으로 붙이는 게 현실적일 것입니다. 실제로 myheader.h는 C++20의 기능 중 하나인 함수 매개변수에 대한 auto를 사용하기 때문에 -std=c++20이 필요합니다. 

  2. 참고로, 컴파일된 헤더들은 현재 디렉터리의 gcm.cache 디렉터리 어딘가에 존재합니다. 

top
의견 # + 0

번역서 "인공지능: 현대적 접근방식 제4판" 나왔습니다

류광, 2021/08/28 18:06
번역서 "인공지능: 현대적 접근방식 제4판"이 드디어 출간되었습니다.

Russell과 Norvig의 Artificial Intelligence: A Modern Approach, 4th를 옮긴 번역서 인공지능: 현대적 접근방식 제4판이 며칠 전 출간되었습니다.

인공지능: 현대적 접근방식 제4판 1권 표지 인공지능: 현대적 접근방식 제4판 2권 표지

2016년 나온 제3판(원서는 2015년)의 개정판인데, 당연하게도 기계학습(특히 심층학습) 관련 내용이 크게 보강되었습니다. 단지 요즘 추세를 반영한 것만은 아니고, 인공지능이 불확실한 환경에서 불확실한 인간의 요구를 충족하는 데 꼭 필요한 요소로서의 학습이 강화된 것으로 봐야 할 것입니다. 저자 서문에는 다음과 같은 문구가 있습니다.

이전에는 인공지능의 목표를 사람이 구체적인 효용 정보(목적함수)를 제공한다는 가정하에서 기대 효용을 최대화하려는 시스템을 만드는 것이라고 정의했다. 그러나 이번 판에서는 목적함수가 고정되어 있으며 인공지능 시스템이 목적함수를 알고 있다고 가정하지 않는다. 대신, 시스템은 자신이 봉사하는 인간의 진짜 목적이 무엇인지 확실하게 알지 못할 수 있다고 가정한다. 시스템은 반드시 자신이 무엇을 최대화할 것인지를 배워야 하며, 목적에 관해 불확실성이 존재하더라도 적절히 작동해야 한다

참고로 현재 이 번역서는 연습문제를 제공하지 않습니다. 애초에 원서 연습문제도 제대로 제공이 안 되있는 상황입니다. 제3판에는 각 장 끝에 연습문제들이 있었는데요. 제4판에서 원서 출판사는 연습문제들을 웹으로 제공하기로 했는데, 원서가 나온 지 1년이 지난 지금도 연습문제 사이트가 제대로 작동하지 않습니다.1 원서 출판사가 빨리 해결을 하길 기다릴 수밖에 없는 상황인데요. 이후 변동 사항이 있으면 이 블로그를 통해 알려 드리겠습니다.

질문, 오역&오탈자 보고, 기타 의견 등은 위의 표지 이미지를 클릭해서 들어가는 페이지에서 해 주세요. 단축 URL은 https://bit.ly/AI4th입니다.


  1. 예를 들어 본문에 "연습문제 2.vacr은 이런 경우들을 위한 에이전트의 설계를 요구한다"라는 문구가 있지만, 연습문제 사이트에서 2.vacr를 검색해도 아무것도 나오지 않습니다. Table of Contents 아래 챕터들은 제4판이 아니라 제3판의 것들이고, 클릭해서 들어가도 제3판 연습문제들이 그대로 나옵니다. 

top
TAG 번역서
의견 # + 0

Visual Studio 2019에서 C++20 헤더 단위 사용하기

류광, 2021/08/21 19:21
모듈 기능과 함께 C++20에 추가된 '헤더 단위' 기능을 Visual Studio 2019에서 사용하는 방법.

본문 열기

top
의견 # + 0

번역서 "실무 예제로 배우는 데이터 공학" 출간 소식 및 근황

류광, 2021/07/31 13:45
저번 주에 번역서 "실무 예제로 배우는 데이터 공학"이 출간되었습니다. Packt의 "Data Engineering with Python"을 옮긴 책입니다.

본문 열기

top
의견 # + 0

◀ PREV : [1] : [2] : [3] : [4] : [5] : ... [70] : NEXT ▶