Q. 작, 가는 다른 잔과 달리 위로 솟은 기둥이 있다. 실용적 또는 상징적 기능을 위한 것인가?
A. 균형을 잡는 용도다. 작은 세발 잔인데, 액체가 들었을 때와 비었을 때 모두 균형을 잡도록 만드는 기술이 초기에는 부족했다. 그래서 균형추 역할을 위해 위로 기둥을 붙인 것이다.
(오랜 의문을 해결한 결과가 흥미로우면서도 허무했다. 강연이 끝나고 나서야 이어서 생각난 의문인데, 상나라 이후에는 강연 내용처럼 검약과 절제를 위해서라기보다는 기술 발전으로 기둥 달린 작을 쓰지 않았던 것일까? 어쨌든 관우가 작으로 술을 마시는 창천항로의 한 장면은 일반적 고증 관점에서 잘 된 것은 아니라는 얘기다. 물론 일반적 상황 얘기고, 골동품 애호가는 후한 말에도 있었을테니. )

- 북토크 전에 전시를 보지 못해 한 질문인데, 방문했더라면 안 했을 - 그래서 방문 안한 가치가 있었던 질문이다.

전시 첫머리에 있던 가의 동형 기둥이 '술을 거르기 위해 천을 걸었던' 것이라는 설명이 떡하니 있었기 때문이다.

그렇다면 작의 기둥도 목적이 같지 않았을까? 무엇보다도, 불안정해서 달았다는 설명은 주둥이 맞은편 꼬리에 어울리는 설명이지, 중간에 높이 솟은 기둥에 어울리는 설명은 아닌 듯하다.

그러나, 전문가가 그렇게 말했다면 일단은 그 말이 맞지 않을까 하여, 방문이 늦어 질문을 했던 의의가 있었다는 뜻이라고 남겨 둔다.

Q. 준은 화병 모양도 있고 동물 모양도 있다. 형태 차이가 큰데 이를 준이라고 묶어 부르는 이유가 있는지?
A. 후세(송?) 학자들이 구분하면서 붙인 명칭을 이어받아 쓰는 것으로, 당시에 엄밀하게 구분하기 어려웠던 경우도 있을 것이다. 참고로, 제작자/사용자가 불렀던 이름이 쓰이는 경우는 정 정도고, 다른 이름은 준과 비슷하게 후대에 분류한 것이다.

두 가지 의문에 답을 얻은 것만으로도 참가한 보람이 차고넘친다.

Posted by TUNC AUTEM
,

안그래도 알라딘 중고샵 의존도가 높은 구매자인데, 요즘 들어 절판된 (그리고 프리미엄이 붙은) 책 구매가 늘다 보니 헌책 검색은 더욱 늘고 있다.

그런데 시간을 꽤 잡아먹는 과정이 무엇이냐 하면,

 

- 특정한 책을 최저가로 판매하는 판매자를 우선 검색하는 문제

  + 그리고 판매자를 알라딘/비알라딘으로 구분하는 것도 중요하다. 내 경험으로는 알라딘직배송/우주점 상품은 설령 중급 상태로 표기되었어도 받아보면 상태가 양호한 경우가 많은 반면*, 일반판매자 물건은 대안이 없을 경우 좀 각오를 하고 사는 것이 '중'이고, '최상'도 조금 불안할 경우가 있음

   * 물론 많은 것이지 모두는 아니다.. 기껏 월4회인 알라딘 카드 할인회수를 한 번 소모해 가며 주문했더니 주문에 포함된 한두 권이 도저히 참아넘기기 어려운 상태면, 그 한 권을 반품해도 할인잔여 회수는 돌아오지 않는 괴로움이 있다. 그렇다고 할인잔여 회수를 살리려고 주문 전체를 취소할 수도 없고. 한 번은 반품 신청하면서 그런 불만을 같이 토로했는데, 답변에서는 반품 처리 얘기만 하고 이 부분에 대해서는 한 마디 대꾸도 없음.

 

- 위에서 선택한 판매자별로, 다른 물건도 검색하는 문제.

  : 되도록 내가 원하는 책을 많이 가지고 있는 판매자에게 주문하여 주문 건수(=배송 건수)를 줄일 필요도 있다. 배송비 문제보다는 월초만 되면 책 택배가 문앞에 쌓여 가족에게 눈치가 보이는 문제가 더 큼

 

 

그래서, (반쯤 취미로) 검색하느라 적지 않은 시간을 들일 때마다, 만들어봐야지 만들어봐야지 하다 드디어 (그동안 팽팽 놀다 개학할 때 되니까 공부는 하기 싫고 해서) 얼기설기 혼자 만들어본 개인용 검색기!

 

결과물은 이렇게 나온다. (열 너비는 엑셀에서 열고 조정)

- 판매자 구분, 상태에 따라 정리 대상에서 제외 가능

  (excluding 조건. 현재 기본은 기타 판매자 물건 중 상태 '중' 제외 하나지만, 예컨대 지금 코드에 [True, 1]도 추가하면 직배송/우주점 물건도 상태 '중'은 제외하는 등 추가 조건도 가능)

- 알라딘 직배송/우주점 목록이 먼저, 기타 판매자 목록은 그 다음에 (aladinpriority = True 조건으로)

- 검색한 책을 더 많이 보유한 곳이 우선, 보유 종수가 같으면 가격 총계가 낮은 곳이 우선.

 

물론 이 결과물이 나와도 의사결정까지는 첩첩산중이지만 책 구매가 원래 그런 것이라...

 

 

앞으로 귀찮음을 이기게 되면 추가할 만한 기능:

- 판매자별 배송비 옵션도 크롤링

  + 모든 아이템을 중복 없이 구매하는 최저가 solution 제시

  + 어느 정도 범위 안에서는 주문 건수를 최소화하는 solution도 제시

- 웹 기반 사용으로 간편한 interface (대상 입력 편하게, 제외조건/정렬조건을 체크박스 등 이용하여 바로 반영)

  + 포인터를 가져다 대면 상태별 가격 목록을 주석으로 띄우는 기능

 

그러나 이거 하나 만들어야 하는데 생각만 하다 만드는 데까지 걸린 시간 고려하면...

#searchlist : '온라인 중고'에서 검색된 해당 책 페이지. 주소마다 따옴표, item 사이마다 쉼표
#책 이름만으로는 특정 아이템 지정이 되지 않아 이런 형식으로,
#itemid만 넣는 방식도 당연히 가능하나 어차피 복사해서 붙여넣을 거면 이 편이 나을 듯하여

searchlist = [
"https://www.aladin.co.kr/shop/UsedShop/wuseditemall.aspx?ItemId=117394127",
"https://www.aladin.co.kr/shop/UsedShop/wuseditemall.aspx?ItemId=17538764", 
"https://www.aladin.co.kr/shop/UsedShop/wuseditemall.aspx?ItemId=232918242", 
"https://www.aladin.co.kr/shop/UsedShop/wuseditemall.aspx?ItemId=476372", 
"https://www.aladin.co.kr/shop/UsedShop/wuseditemall.aspx?ItemId=247913467", 
"https://www.aladin.co.kr/shop/UsedShop/wuseditemall.aspx?ItemId=3176012", 
"https://www.aladin.co.kr/shop/UsedShop/wuseditemall.aspx?ItemId=278072", 
"https://www.aladin.co.kr/shop/UsedShop/wuseditemall.aspx?ItemId=42991240"
]

#제외조건 : 알라딘직배송 및 중고서점(True:알라딘, False:기타), 등급(1:중, 2:상, 3:최상)
#한 가지 제외조건(판매자직접배송 중 중등급은 제외)만 넣었으나, 여러 조건도 넣을 수 있음
excluding = [
    [False, 1]
]

#알라딘직배송 및 중고서점 목록을 우선 보기 여부(False로 지정하면 구분 없이 다수 책 보유, 총액 적은 순서로만 정렬)
aladinpriority = True


from bs4 import BeautifulSoup
from urllib.request import urlopen
import pandas as pd
from datetime import datetime


#등급 및 가격 얻어오는 함수
#중고등급별 : status_list로, 가격 : price_list로
def get_statusprice(source):
    statusprice_raw = source.find_all('span')
    for item_raw in statusprice_raw:
        status_c = 0
        item = str(item_raw)

        if '최상</span></span>' in item:
            status_c = 3
        elif '상</span></span>' in item:
            status_c = 2
        elif '중</span></span>' in item:
            status_c = 1

        if status_c != 0:
            status_list.append(status_c)

        if 'Ere_fs20 Ere_sub_pink' in item:
            beginnum, endnum = 0, 0
            for idx in range(0,len(item)):
                if beginnum == 0 and item[idx] == '>':
                    beginnum = idx + 1
                if beginnum != 0 and endnum == 0 and item[idx] == '<':
                    endnum = idx - 1
                    
            price = item[beginnum:endnum+1]
            price_after = price.replace(',', '')
            price_list.append(int(price_after))

#판매점 얻어오는 함수
#알라딘직배송/우주점도 여기에서 구분
def get_shop(source):
    shop_raw = source.find_all('li')
    for item_raw in shop_raw:
        item = str(item_raw)
        #print(item, len(item))
        status_c = 0
        if ('/shop/usedshop/wshopitem.aspx' in item and 'color:' in item) or 'Ere_store_name' in item:
            item_cut = item[:-9]
            #print(item_cut, len(item_cut))
            for idx in range(len(item_cut)-1,0, -1):
                if item_cut[idx] == '>':
                    item_new = item_cut[idx+1:]
                    #print(item_new)
                    shop_list.append(item_new)
                    break
            if 'Ere_store_name' in item and item_new not in aladinshop_list:
                aladinshop_list.append(item_new)
        elif '알라딘 직접 배송' in item:
            shop_list.append('알라딘직접배송')
            if '알라딘직접배송' not in aladinshop_list:
                aladinshop_list.append('알라딘직접배송')

#대상별로 제목, 총 탐색 페이지수 구하는 함수
def get_titlepage(source_org):
    
    html = urlopen(source_org)
    source = BeautifulSoup(html.read(), 'html.parser')
    page_raw = source.find_all('div')
    
    title = source.find('title').get_text()
    title = title.replace('\r', '').replace('\t', '').replace('\n','').replace('[알라딘]','')

    # total page 구하기
    for item in page_raw:
        #count += 1
        item_str = str(item)
        #print(item_str)
        if 'nright_text' in item_str and item_str[-9:] == '페이지</div>':
            page_total = 0
            idx = -10

            while(item_str[idx] != ' '):
                if page_total == 0:
                    cdigit = 0
                else:
                    cdigit = len(str(page_total))
                #print(item_str[idx])
                cpage = int(item_str[idx])
                page_total += cpage * 10 ** cdigit
                idx -= 1
                
    return title, page_total


#탐색루프 시작
click = 0 #첫 타이틀인지 아닌지 (맞으면 그대로 사용, 아니면 있는 테이블에 합침)
aladinshop_list = []

for booknum, source_org in enumerate(searchlist):
    status_list = []
    price_list = []
    shop_list = []

    title, page_total = get_titlepage(source_org)

    for page in range(1, page_total+1):
        print('book: %s/%s, page: %s/%s (%s)' %(booknum+1, len(searchlist), page, page_total, title))
        
        sourceurl = source_org + '&page=' + str(page)

        html = urlopen(sourceurl)
        source = BeautifulSoup(html.read(), 'html.parser')

        get_statusprice(source)
        get_shop(source)

    df_current = pd.DataFrame({'store':shop_list, 'status':status_list, 'price':price_list})
    df_current['title']=title
    
    if click == 0:
        df_total = df_current.copy()
        click = 1
    else:
        df_total = pd.concat([df_total, df_current])



#알라딘 직배송/우주점 해당여부 컬럼 추가
aladinshop = []
for idx in range(0,len(df_total)):
    if df_total.iloc[idx]['store'] in aladinshop_list:
        aladinshop.append(True)
    else:
        aladinshop.append(False)

df_total['aladinshop'] = aladinshop


#제외조건 적용
df_total_drop = df_total.copy()
df_total_drop['drop'] = False

for idx, condition in enumerate(excluding):
    filter_current = (df_total['aladinshop']==condition[0]) & (df_total['status']==condition[1])
    df_total_drop['drop'] = df_total_drop['drop'] | filter_current
    print('by condition %s [aladin:%s, status:%s], %s items filtered out' %(idx+1, condition[0], condition[1], len(filter_current[filter_current==True])))
print('by all condition, %s items filtered out' %(len(df_total_drop[df_total_drop['drop']==True])))

df_total_drop = df_total_drop[df_total_drop['drop']==False]


#피벗테이블 작성 : 각 판매자별, title 별 최소값만 나옴
resulttable = pd.pivot_table(df_total_drop, index='store', columns='title', values='price', aggfunc='min')


aladinshop = []
for idx in range(0,len(resulttable)):
    #print(df_total.iloc[idx]['store'])
    if resulttable.index[idx] in aladinshop_list:
        #print('checked')
        aladinshop.append(True)
    else:
        aladinshop.append(False)

resulttable['aladinshop'] = aladinshop


#정렬 (aladinpriority가 True면 알라딘직배송/우주점 여부로 우선 정렬, 그 다음으로 판매자별 보유수(내림), 총액(올림)순
resulttable['titlenum'] = resulttable.count(axis=1) - 1
resulttable['pricesum'] = resulttable.sum(axis=1, skipna=True) - resulttable['titlenum'] - resulttable['aladinshop']

if aladinpriority:
    resulttable_sorted = resulttable.sort_values(by=['aladinshop', 'titlenum', 'pricesum'], ascending=[False, False, True])
else:
    resulttable_sorted = resulttable.sort_values(by=['titlenum', 'pricesum'], ascending=[False, True])


#엑셀파일로 출력
timestamp = str(datetime.today().strftime('%Y%m%d_%H%M%S'))
filename = 'Aladin_' + timestamp + '.xlsx'
resulttable_sorted.to_excel(filename, sheet_name='default')

 

Posted by TUNC AUTEM
,

아이와 사전

기타 2019. 3. 10. 00:16

국민학생 쯤 부터였을까, 모르는 단어 뜻을 물으면 아버지는 "사전을 찾아 봐라."라고 말씀하셨다. "아니 내가 사전을 찾을 줄 몰라서 여쭤 본 것도 아니고..."라고 불만을 나누던 동생에게 깊이 공감하던 시절이었다. 지난 설 연휴 때 들은 일인데, 아버지와 터울이 꽤 지는 작은아버지 두 분도 어린 시절에 아버지께 단어 뜻을 물으면 그런 대답을 들으셨던 모양이다. 50년도 전에 들었을 (그리고 나와 동생이 그랬듯 몇 번 듣고는 다시 청하지 않았을 테니 그리 많이 반복하여 듣지도 않았을) 그런 대답이 '정말 듣기 싫은 말'이었다고 말씀하셨을 정도니까.


사실 동생이 불만을 나눴을 때 쯤이면, 나는 아버지께 묻지 않고 사전을 찾기 시작한 지 이미 2년이 되어 아버지가 왜 그렇게 대응하셨는지 어렴풋이나마 알았을 것이다. 정확한 뜻을 알려주기에는 사전보다 뛰어날 수 없을 것이고, 단어 공부나마 혼자 해결하는 습관을 들이는 데도 물고기를 달라고 하는 아이에게 잡을 방법을 알고 잡을 도구도 있으니 직접 잡으라고 하는 편이 나을 테니까. 


물론 당시 관점으로만 봐도, 아무 결점 없이 긍정할 일은 아니었다. 의도야 어쨌든, 내가 받을 수 있음을 당연히 아는 것을 거부당한 그 시점이 부모님께 거리감을 느낀 첫 기억이었다. '이제는 가능한 한 스스로 해결해야겠구나' 하는 자립심 또는 고립감. 자녀는 언제가 되었든 부모를 떠나게 되고 또 떠나야 하니 그 결점 역시 사실은 결점조차 아니라 할지라도.


아니, 정말 결점이 아닐까? 모르면 일단 책을 찾고 혼자 해결해 보려는 태도라면 최소한 공부를 열심히 하고 시험 점수를 잘 받는 데 유리할 것이다. 하지만 (결국 책을 찾고 공부하는 과정은 혼자 해야 하더라도) 문제를 해결할 실마리를 우선 잘 알 만한 사람에게 묻고, 잘 풀리면 아예 맡겨버리는 (그리고 그 만큼을 도와주는) 방법이 '혼자 하는' 방법보다 나은 경우도 많다는 사실을 아는 지금으로서는, 그런 '도움받고 도와주는'  방법에 저항감이 덜하고 또 능하게 되는 편도 좋았겠다는 생각이 든다.


첫째가 초등학교에서 5일을 보낸 후 처음 맞는 주말이었다. 첫째가 단어 뜻을 물으면 아직은 아는 한 친절히 대답하고 있다. 몇 달 전 사전 찾는 법을 보여주었지만 지금은 사전으로 해결할 마음이 전혀 없는 듯하다. 왜 안 그렇겠는가, 한 마디면 미흡하나마 바로 대답해 주는 생체사전이 바로 옆에 있는데. 하지만, 생체사전의 비루한 능력을 고려하면 사전을 우선 찾는 습관은 역시 중요하다. 한편, 나보다는 책에 덜 매달리고 사람에 더 의지하는 태도도 필요하다. 


그렇다면.. "아빠, 공허가 뭐야?"라는 질문에 있는 지식 없는 지식 다 동원하여 "아, 공허란 빌 공 자에 빌 허 자를 쓰는 단어니까 텅 비었다는 뜻이야."라고 적극적으로 대답하거나 "이제 초등학생이니까 사전을 찾아 보렴"하고 냉정하게 대답하지 않고, "아빠는 잘 모르겠네? 사전을 찾아봐야겠는걸?"하고 따뜻한 (아니, 최소한 차갑지 않은) 소극적 방법을 사용하는 편이 어떨까 싶다. 그렇게 쓰고 나니, 40 평생 내 질문에 '잘 모르겠다'고 대답한 수많은 사람들 가운데 상당수는 정말 몰라서 모른다고 답한 것이 아니지 않았을까 하는 깨달음이 온다.

Posted by TUNC AUTEM
,

아침달과 숨어있는책방을 갔던 며칠 전 일이다. 평일 오후 3시 좀 넘은 시간이라 자그마한 책방은 주인(이겠지)과 나 밖에 없어 (내게만) 긴장감이 도는 한편, 겨울이 다가오는 시기다 보니 벽만한 창문 또는 창문같은 유리벽으로 들어오는 햇살에 벌써 쨍한 느낌이 덜해 한편으로 나른했다. 그리고 그런 장면보다 더 깊은 인상을 준 것은 한 음 한 음을 아껴 치는 듯한 음악이었다.


돌이켜 보면 서점에서 배경음악을 의식한 적이 없다. 대형서점은 물론 어렸을 적 가던 동네 서점에서 노래를 틀었는지 기억도 나지 않고, 뿌리서점 같은 창고형 헌책방에서야 말할 것도 없다. ('창고형'이라는 단어의 의미는 코스트코나 이마트트레이더스 같은 할인마트를 묘사하며 사용할 때와, 내가 헌책방을 묘사할 때 전혀 다르다. 기억나는 김에 덧붙이면 몇 달 전에 갔을 때 뿌리서점은 더 이상 '창고형' 헌책방이라고 부르기 힘들어졌다. 여주인분이 다른 손님과 나누는 이야기를 들어보니, 남주인분 건강이 안 좋아져 여주인께서 주로 운영하시게 되면서 체계를 깔끔하게 정리하신 모양이다. 그 후로는 간 적 없다.) 그리고 스마트폰으로 검색해도 찾을 수 없는 음악이었다. 만약 교보문고에서 틀었던 BGM이 그만큼 인상깊었더라도, 아니 만약 다른 손님이 하나라도 있었더라면 그 서점에서조차 그러지 않았겠지만, 책을 계산하고 주인에게 노래를 물었다. 주인은 뭐라 대답했고 나는 딱히 아는 이름도 아니어서 알아듣지 못했지만 그렇다는 내색도 하지 않았는데, 주인은 나를 창가에 있는 스피커와 아이패드로 데려갔다. 나는 아이패드 스크린에 뜬 앨범 사진을 찍었다.


앨범은 Aaron Martin, Part Timer의 Seed Collection 이었다. 일 하며 듣기 좋은 음악을 하나 더 알게 되었으나, '이게 그 때 나오던 그 음악이 맞는가?' 하는 의문이 든다. 그것이 노래의 생명력(아니면 반복청취 내구력이라고 해야 할까) 때문인지, 그 때 그 장소와 가장 어울리는 음악이어서였는지 (아니면 그 노래가 가장 잘 어울리는 시간과 장소가 그 때 그 곳이어서였는지), 아니면 그저 지금 내 심리가 그때와 달라서인지.


그리고 물어보지도 못한 음악에 관해서. 그 날 이어서 간 숨어있는책방에서는 아예 1분에 한 음 씩 치는 듯한 전위적 음악을 틀고 있었다. 피아노도 오케스트라도 나오니 협주곡이었을지, 아니면 애초에 피아노와 오케스트라 곡이 별개였을지 모르지만 이번에도 역시 시간과 장소 효과인지 또 다른 방식으로 인상 깊었고, 또 마찬가지로 스마트폰에 나오지 않았다. 그리고 이번에는 다른 손님도 있었고 계산대도 마치 헌책을 쌓아 만든 패닉룸처럼 가볍게 말 건네기 어려운 구조였으며, 결정적으로 그 음악을 들은 때와 계산대로 책을 들고 간 때 사이에 시간이 꽤 흘렀기에 음악을 묻지 못했다.


그리하여 만들어 본 가설 : 독립서점을 오래 운영하다 보면 대중성과 거리가 먼 음악에 점점 더 끌리게 된다. (물론 그것이 혼자 가게를 지키며 갖은 라디오 방송 및 대중적 가요/팝/클래식을 섭렵한 끝에 신선함을 찾아가게 된 궁여지책인지, 독립서점 운영에 필요한 특징과 음악 취향 사이에 모종의 관계가 있어서인지는 알 수 없다.) 사실은 그 날 스 시간에 흘러나온 음악이 수천 곡으로 만든 플레이리스트 중 그저 우연히 그 노래였을 가능성이 더 크지만, <어떤 돈가스 가게에 갔는데 말이죠>를 읽다가 '헬스장에서 재생되는 <인터스텔라> OST, 한적한 바닷가 커피점에서 듣는 데스메탈, 그리고 헌책방에 흐르는 EDM'이라는 구절을 읽고 생각 난 김에 망상을 전개해 보았다.

'기타' 카테고리의 다른 글

생활코딩 - 알라딘 중고샵 물건 판매자별 정렬  (0) 2021.09.05
아이와 사전  (0) 2019.03.10
KT통신망 화재  (0) 2018.11.25
오프라인 책 구매 기록  (0) 2018.11.23
완전종합영어 - 15년의 추적  (1) 2017.10.17
Posted by TUNC AUTEM
,

KT통신망 화재

기타 2018. 11. 25. 23:07

KT 아현지사 지하 통신구 화재로 우리 집의 실질적 기준으로는 토요일 12시-일요일 21시 동안 KT통신망을 이용한 커뮤니케이션 완전 불가.

지나치는 가게마다 'KT 통신 장애로 카드 결제 / 포인트 할인 및 적립 불가, 현금 또는 계좌이체만 가능'이라는 손글씨가 붙어있는 광경은 나름대로 인상 깊은 장관이었다.


잃은/못한/불편한 것

- 아이들 예방접종 실패 : 토요일 12시에 소아과 방문했으나, 전산 기록에 접근 불가하여 무료 접종 할 수 없음. 

- '고가의' 케익 살 때 파리바게트 KT 포인트 할인 / 해피포인트 적립 불가 : 토요일 당일이 아내 생일이라, '전산 복구되면 처리'로 대응 불가.

- 점심 카드결제 실적 인정 불가 : 피해 지역은 용산구, 서대문구, 마포구 대부분 + 종로, 은평구, 종로구, 고양시 일부라고 하던데, 여의도 식당도 카드 결제 불가하다고 하여 현금 결제.

- 일요일 22시 화상영어수업 : 토익 시험 보러 가기 전까지 통신망 복구 안 되는 것 보고 수업 연기 연락. 사실 21시에 귀가하니 인터넷이 드디어 복구되었지만, 재조정은 하지 않음.


얻은 것

- 강제 낮잠 : 인터넷도 안 돼, IPTV도 당연히 안 돼, 지상파용 안테나 선은 어디 뒀는지 안 보여. 그럼 역시 독서지 하고 책을 꺼내들었으나, 책을 든 채 소파에 누우면 결과는 뻔함. 10시에 일어난 주제에 15시부터 20시까지 낮잠. 덕분에 피로를 풀었다고 애써 자위.

'기타' 카테고리의 다른 글

아이와 사전  (0) 2019.03.10
여우의 은빛/잿빛 털과 까다로운/유순한 성질  (0) 2018.11.28
오프라인 책 구매 기록  (0) 2018.11.23
완전종합영어 - 15년의 추적  (1) 2017.10.17
Coursera - Machine Learning  (0) 2016.08.21
Posted by TUNC AUTEM
,

공급이 수요를 창출한다는 얘기는 경제학 족보에 있는데, 내 경우에는 판매채널도 수요를 창출한다.


트위터에서 알게 되었다가 종이책 출간 소식을 듣고 산 반-바지의 <슈뢰딩거의 고양희>부터 텀블벅 지름의 역사가 시작되는데, 책만 해도 이후 <전국투표전도 2018>, <동이귀괴물집>, <검은사전>, <마음을 움직이는 배색 스타일 핸드북>까지 이어진다. (<중세의 전쟁>도 있는데, 사실 이건 '중세 화투를 샀더니 책이 사은품으로 같이 왔네?'라는 마음가짐으로 산 거라.. 물론 책이 좋지 않다는 말이 아니라, 그냥 이 중세 화투 하나가 가지고 싶었다는 얘기다. 그리고 책 아직도 안 읽음) 왠지 '이런 책은 오프라인 서점에는 안 깔릴 것 같은데 안 사면 후회할 것 같다!'는 마음이 들게 만드는 것이 텀블벅 프로젝트의 (내 개인적) 셀링 포인트가 아닌가 자평 및 반성 중이다. 낱낱이 밝히지는 않겠으나 저 다섯 권 중 오프라인 또는 인터넷에서 결정했다면 결국 안 샀을 책이 세 권은 될 듯...


생각해 보면 하나 빼고는 텀블벅 프로젝트의 특성 때문에 사게 된 책들이다. 그런 면에서 <슈뢰딩거>를 이어 트위터 지름의 계보를 잇게 된 소책자가 있었으니 바로 <타이완 기담보>. 페이지도 필요 없을 정도로 얇은 괴담집이다. 위에 텀블벅 이야기 하다 보니 새삼스레 깨닫게 되는 사실인데, 나는 괴담/오컬트 자료집을 좋아한다. (아마 이벤트 통해 1차로 팔았다 반응이 좋아 2차 판매에 들어간 듯한데) 일반 서점에는 깔지 않고 직판 및 로컬 독립 특수 등등 일부 서점을 통해서만 팔고 있다. 11월 말까지는 트위터 DM을 주면 배송해 준다고 하지만 트위터는 읽는 것이지 쓰는 것이 아니라는 신념을 지키고자, 어쩌다 쓰게 된 오후 여유시간을 <기담보>를 찾아 아래와 같이 보내게 되었다.


상수역 - gaga99page 방문 (실패). 건물 주변에서 5분 헤메고, 결국 3층까지 올라가는 데 실패. 어차피 시간도 남는 것, 원래 가려 했던 아침달 북스토어까지 걸어가기로 했다.


연남동 - 아침달 도착. 목적물을 발견했으나 여기까지 와서 이것만 사면 취향이 지나치게 적나라하게 드러날 것이므로 아래와 같이 구매

 - <타이완 기담보>

 - <어떤 돈가스 가게에 갔는데 말이죠> : 보통 서점이었다면 소재를 보나 문체를 보나 이런 류 책은 사지 않았을 듯한데, 또 큐레이션 서점의 분위기와 잘 어울린 김에 집어들게 됨. 그리고 집에서 읽어봐도 나쁘지 않음

 - <고맙습니다> : 올리버 색스 저, 김명남 역 이라는 조합에 책도 얇은 김에 충동구매

 - 2/3 노트 : 아침달 특산품-_-이라서 같이...

 + 2만원 이상 구매하면 역시 아침달 특산품-_- 인 마스킹 테이프 2종 중 1종 무료. 문양도 좋겠지만 한글이 아이들에게 더 자극적이지 않을까 해서 시구로 선택


그리고 또 어차피 시간도 남고 운동도 할 겸 집까지 걸어오는 길을 설정하다, 이름만 듣고 육교에서만 보던 경의선 책거리를 통과하기로 결정. 책을 더 살 생각은 (솔직히 없진 않고) 많지 않았는데, 세계시인선이 잘 전시된 문학 컨테이너가 눈에 띄어 들어가려다 문이 잠겨 180도 돌았다가 사장님과 눈이 마주쳐 멋적은 김에 바로 옆 컨테이너로 들어감. 역시 몇 권 구경하다, 한 권 구매.


경의선책거리

 - <만엽집 읽기> : 또 수집하기 좋아하는 책이라면, 익숙치 않으나 언젠간 배워야지 하는 언어의 대역문고 등 자료.


가게를 나서 집으로 다시 걸어오다, 역시 시간도 남는데 글벗서점이나 갈까 하여 가던 길을 다시 돌려 골목으로 접어들었다. 그런데 예전 헌책방을 검색하다 간판만 보았던 숨어있는책방을 발견.. 했다고 하면 조금 건조한 표현이고, 내국인 출입을 자제해 달라는 중국유학생라운지인가 하는 건물을 신기하게 보며 한 50m 지나쳐 갔다가 '잠깐, 방금 무슨 서점을 본 것 같은데?' 하고 뒤돌아보았더니 역시 그 서점이었다 하는 얘기다. 뭐 별 거 있겠어, 한 10~20분 있다가 한 두 권 집어들고 글벗서점 가야지 하던 마음가짐이었는데 결국 여기서 1시간 넘게 보내고 체력이 고갈되어 글벗서점 방문은 포기.


동교동(이라고 하면 나는 감이 잘 안 와서 신촌 근처 골목이라고 하겠지만)

 - <지상아> : 법의학에도 관심이 있다. 이 정도 되면 거의 고서급 아닌가 싶은데 (아님) 왠지 장르소설 서가에 꽂혀 있던 걸 그대로 낚아챔

 - <괴담> : 괴담으로 분류해야 하나? 아니면 (가공된) 설화집? <괴담의 과학> 등에서 마주친 라프카디오 헌의 이름을 보고 선택. 이야기가 짤막짤막해서도 좋음

 - <채지충 고전만화시리즈 사기>

 - <고전만화시리즈 장자 - 자연의 피리소리>

 - <자연적소성 - 장자설 (대만판)>

 : 위 셋은 채지충 만화. 대학 때였는지 고등학교 때였는지 채지충 만화를 재미있게 보았던 기억이 있어 몇 년 전에 인터넷 중고서점에서 타이틀도 무관하게 몇 권을 사들였는데, 재밌던 게 재밌었던거지 채지충 만화라고 다 재미있지는 않다는 쓰라린 깨달음을 얻음. 하지만 사기나 장자 정도라면 재미있게 읽을 수 있을 것 같고, 또 <자연적소성>은 역시 내가 좋아하는 외국어 자료라 보자마자 집어듦.


그리하여 하루 오프라인 (소)책(자) 구매 기록을 9권으로 경신함. 다행인지 뭔지 얇은 책들이라 다 합해도 두께는 반 뼘 정도.

'기타' 카테고리의 다른 글

여우의 은빛/잿빛 털과 까다로운/유순한 성질  (0) 2018.11.28
KT통신망 화재  (0) 2018.11.25
완전종합영어 - 15년의 추적  (1) 2017.10.17
Coursera - Machine Learning  (0) 2016.08.21
라즈베리 RC Car  (0) 2016.03.17
Posted by TUNC AUTEM
,


1990년대 중반에 출판되었을 책이다.

지금 제목으로는 인터넷 서점에서 '절판'으로조차 검색되지 않는다.

해답편이 잘려나가 서지도 확인 불가하다. (그래서 출판 년도가 확실치 않다)

이 헌책의 가격은?


답 : 10,000원. 배송비 합하면 12,500원.



고등학생 때 학원 교재였다. 한낱 참고서를 (그것도 심각한 하자품을) 저 가격 주고 헌책으로 산 이유는 우선 기억에 남아서, 둘째 없으니까다.


저자는 고급 지문을 풍부하게 수록했다. '인용된 작품과 저자' 앞 몇 줄만 인용해 보아도 <A Little Cloud>(James Joyce), <A look at Our Schools>(P. Mort & W. Vincent), <A study of History>(Arnold J. Toynbee), <A writer's Notebook>(W. Somerset Maugham) 등등. 특별히 영어 관련 배경이 없는 고등학생이 읽기에는 부담스러워 보이는데, 그게 또 흥미로울 만한 부분만 짤막짤막하게 적혀 있다 보니 난이도도 적당하게 높으면서 기가 꺾일 만큼 지루하지 않았다. 요지가 계속 머리에 남아 있던 아래 사례를 이제 다시 들춰보니, 부모 처지에 선 지금 느낌이 새롭다. 완전히 동의하지도 않고 완전히 반대할 수도 없는 화두다.


A child develops best when, like a young plant, he is left undisturbed in the same soil. Too much travel, too much variety of impressions are not good for the young and cause them as they grow up to become incapable of enduring fruitful monotony. I do not mean that monotony has any merits of its own; I mean only that certain good things are not possible except where there is a certain degree of monotony.

- Bertrand Russell, <The Conquest of Happiness>



그런 책이 왜 없어졌느냐. 언젠가 시간이 나면 들춰보겠지 하는 마음으로 대학 진학 후에도 고이 모셔두던 책을 정말 써먹게 된 기회는 영어 과외였다. 영어만 못했다고 기억하는 동생 친구를 가르칠 때, 시작한 지 몇 달 지나 어느 정도 기초를 잡았다고 판단한 나는 이 책을 주고 매 번마다 지문 몇 개씩을 해석하는 숙제를 내 주었다. 해답도 같이 주었는지는 모르겠는데, 해답을 보며 숙제를 한다 해도 도움은 충분히 되었을 것이다. 그 후 어느 정도 지나자, 원래 실력과 지문의 난이도를 아는 나로서는 가끔 놀랄 만큼, 학생은 독해에 능해졌다. 이제는 혼자 공부해도 되겠다는 판단이 들어 나는 과외를 그만두겠다고 말하고, (다 마치지 않은) 이 책은 보잘것없으나마 선물로 주었다. 그러고 나서 학생의 동생에게 수학 과외를 이어서 하게 된 일은 주제와는 별 상관 없는 이야기다.


선물로 주고 난 직후부터 나는 헌책방을 갈 때마다, 헌책방 사이트를 뒤질 때마다 이 책을 찾았다. 출판 시기가 꽤 오래되었고 추정컨대 그리 잘 팔리지도 않은 듯하다는 점이 지금까지 실패한 원인 중에서도 첫 번째이자 근본 이유라면, 두 번째이자 사소한 이유는 이 책 제목을 '그랜드 종합영어'로 잘못 기억했다는 것이다. 이는 검색 실패 뿐 아니라 검색 오류로까지 이어져, 웬 상태 안 좋은 중학교 영어책을 2,000원에 샀다가 바로 분리수거한 일까지 야기했다. (사이트에는 실물 사진이 없었다. 판매자도 누가 이런 걸 진짜 사네 하고 의아했을 것이다.)


길었던 지난 연휴 중 하루, 뿌리서점을 다녀온 후 지금은 기억도 나지 않는 키워드를 습관처럼 검색했다가 이 빨간 표지를 본 것이다. '해답쪽 뒤쪽이 없'읍'니다', '상태 : 하' 라는 내용은 즉시구매를 클릭하는 손가락에 전혀 영향을 주지 못했다. 이리하여 15년에 걸친 탐색은 결국 승리로 끝난 것이다. 아무리 나라도 이 책에 예컨대 5만원을 내야 한다면 주저했겠지만, 12,500원은 갈증을 풀기에 충분히 쓸 만한 금액이었다.


그리하여 내가 찾는 헌책은 이제 두 권으로 줄었다. 한 권은 물량은 꽤 있지만 절판되어 가격이 새책의 세 배로 올랐을 뿐이니 돈만 내면 살 수 있지만, 오기가 있어 아직 판매자의 농간에 넘어가지 않고 있다. (물론 이 책 판매자의 농간에는 넘어갔지만.) 그리고 한 권은 글벗서점에서 들춰본 러시아어 잡지인데, 제목도 호수도 모른다. 이건 평생 구할 수 없으리라. 결혼 전 아내가 말했던 대로, 마음에 드는 건 고민하지 않고 바로 그 자리에서 사는 편이 돈과 시간을 절약하는 지름길인 것이다.

'기타' 카테고리의 다른 글

KT통신망 화재  (0) 2018.11.25
오프라인 책 구매 기록  (0) 2018.11.23
Coursera - Machine Learning  (0) 2016.08.21
라즈베리 RC Car  (0) 2016.03.17
알파고  (0) 2016.03.13
Posted by TUNC AUTEM
,

Coursera - Machine Learning

기타 2016. 8. 21. 22:47
Coursera에서 Machine Learning 과목을 들었다고 한다면 당연히 이 과목이라는 바로 그 과목! (*아닙니다.)

<The Future of the Professions> 번역과 정통으로 수강기간이 겹치는 바람에 처음에는 미친 짓 아닌가 하는 생각이 들었지만 뭐 일단 저지르고 나면 그렇게까지 못할 일은 아니다. 덕분에 애둘 잘 때까지 대기 중/휴식 중 뿐 아니라 내가 혐오해 마지않는 보행 중/버스 대기 중에도 핸드폰 강의를 보아야 했지만 그만큼 삶이 충실해지는 느낌을 받는 데는 도움이 되었다.

강의 자체 얘기를 한다면, 기계학습 개론으로서 매우 훌륭하다. 일반인 대상 개론서가 보통 지나치게 얕은 반면 이 과목은 숙제로 코딩을 해야 통과가 되기 때문에 이론도 어느 정도 새기게 된다. 물론 본격 기계학습 코딩을 간단하나마 A-Z까지 하는 것이 아니라, 이미 거의 완성된 틀에 이론 핵심을 반영하는 일부분만 삽입하면 되기 때문에 한 편으로는 그만큼 쉽고, 한 편으로는 그만큼 '기계학습에 숙달했다'고 말하기 힘들다. (물론 강의 하나 듣고 기계학습 학습을 완료했느니 말할 수 있다면 기계학습은 이미 별 것 아닌 주제였으리라)

YWKDXAKH4UGL.pdf




'기타' 카테고리의 다른 글

오프라인 책 구매 기록  (0) 2018.11.23
완전종합영어 - 15년의 추적  (1) 2017.10.17
라즈베리 RC Car  (0) 2016.03.17
알파고  (0) 2016.03.13
무상급식과 보편배당  (0) 2016.01.24
Posted by TUNC AUTEM
,

라즈베리 RC Car

기타 2016. 3. 17. 00:10


라즈베리파이와 아두이노 사용자라면 개나소나 다 만들어본다는 RC car

전 세계 인터넷에 올라온 제작기 수를 합치면 현대차 1년 생산대수를 넘는다는 RC car

저도 만들어보았습니다.

(명목은 알파고 승리 기념 '기계제국에 충성을 맹세하는 공물')

'기타' 카테고리의 다른 글

완전종합영어 - 15년의 추적  (1) 2017.10.17
Coursera - Machine Learning  (0) 2016.08.21
알파고  (0) 2016.03.13
무상급식과 보편배당  (0) 2016.01.24
[이코노미인사이트 2015.12월] 경제와 책  (0) 2015.12.05
Posted by TUNC AUTEM
,

알파고

기타 2016. 3. 13. 12:01

바둑돌을 잡지 않은지 - 라고 시작하기에는 대학교 이후부터 바둑을 온라인으로 두었으니, 타이젬에 접속하지 않은지라고 하는 편이 나을텐데, 어쨌든 마지막으로 그런 지 벌써 4년이 넘었다. 그럼에도 불구하고 바둑이 취미냐고 묻는다면? 이제 번역, 라즈베리파이, 외국어 등 보다 순위는 밀릴지라도 최소한 취미'군'에는 여전히 포함된다고 해야 한다. 며칠 전에 같은 질문을 받는다면 후보군으로도 생각나지 않았을 바둑을 다시 목록에 올리는 것은, 역시 알파고 때문이다.

컴퓨터 바둑대회에서 전승에 가까운 성적을 거두건, 판후이에게 5전 전승을 하건, 알파고가 일반인에게 관심을 끌 재료로는 크게 부족했다. 역시 실력으로나 지명도로나 세계 최고급인 이세돌과 경기를 한다 하니 나같은 냉담자는 물론이고 문외한조차 관심을 두게 된 상황을 보면, 우승상금 100만 달러를 걸었지만 이세돌이 거절하면 그 열 배도 낼 의향이 있었다는 구글의 계획은 대성공을 거둔 셈이다. 나도 소식을 들은 후 몇 번이나 날짜를 확인했다.

1국이 열린 날은 평일이라 중계를 볼 수 없었다. 가끔 뉴스를 새로고침해도 딱히 불리하다는 얘기는 후반까지 나오지 않았다. 습관처럼 아무 기대 없이 새로고침을 누르다 '이세돌 불계패'라는 글자를 보았다. 그 때 느낀 충격은 그날 하루 종일 계속되었다. 상대를 제대로 모르고 두었다는 1국, 단단하게 두었으나 밀렸다는 2국. 그리고 지금은 자기 스타일대로 두었으나 결국 돌을 던져 3국이 끝나고, 대회 승부가 난 다음날이다.

알파고의 CPU가 천 몇백개라서 불공정하다느니, 알파고는 이세돌의 기보를 공부했지만 이세돌은 알파고를 분석할 수 없었으니 불공평하다느니 하는 말은 사실 여부와 무관하게 가치 없는 불평일 뿐이다. 애초에 이 대결의 본질은, 컴퓨터가 오목이나 체스 같이 '천박한' 게임이 아니라 바둑이라는 '심오한' 게임에서 사람을 이길 수 있느냐는 질문에 답하는 것이었으니까. 또한 대결이 얻은 주목의 강도와는 무관하게, 알파고 자체는 스카이넷이나 매트릭스 같은 어두운 미래를 불러오지 않는다. 알파고는 매우 한정된 규칙과 공간 안에서 단일한 목표를 풀어내는 약인공지능에 불과하다.

알파고에게 치명적인 충격을 받은 것은 바둑의 본질이다. 인간의 심오한 사고, 동양문화의 정수가 담겼다는 바둑이 실제로는 계산기로 풀어낼 수 있는 숫자놀이에 불과하다는 사실, 그리고 이제까지 그러지 못한 이유는 단순히 계산력이 부족해서라는 사실이 밝혀진 것이다. 두터움과 엷음, 좋은 모양과 빈삼각 같은 나쁜 모양, 기세, 맛, 승부수 같은 개념은 부족한 연산력을 보충하기 위한 직관 또는 임시방편에 불과하고, 최소한 상대방보다 수를 더 깊고 넓게 읽어낼 수 있다면 그런 편법은 불필요하다. 써놓고 나면 당연한 얘기지만 알파고 이후에야 충격적인 형태로 반박 여지 없이 검증된 이야기다.

바둑에 대한 관심을 이끌어냈다 하여, 이세돌의 패배와는 관계 없이 바둑(업계)의 승리라는 의견도 많다. 관심 수준에서 본다면 확실히 그렇기도 하다. 그런데 바둑을 업으로 하는 사람 입장에서는 김빠지는 얘기이기도 하지 않을까? 100m 달리기 경기를 예로 든다면 (컴퓨터끼리 싸우는) 세계 육상선수권을 보겠느냐, (인간 기사끼리 싸우는) 전국체전을 보겠느냐는 선택에 비유할 수 있다. 아니, 그렇게 말하면 오히려 지나치게 후하다. 국내에서 척박한 분야 1인자가 세계 우승하는 일은 육상은 몰라도 피겨에서는 이미 있었다. 

하지만 이제 인간이 바둑을 이기기는, 마치 사람이 주판을 (아니 많이 봐줘서 계산기를) 들고 컴퓨터를 상대로 눈높이수학 문제풀이 대결을 벌여 이길 가능성과 크게 다르지 않다. (설령 오늘 또는 모레에 이세돌이 한 판이라도 얻는 일이 일어난다 해도, 추후 이벤트 대국에서 사람이 알파고를 잡는 일이 일어난다 해도, 바둑이 계산력 대결이며 기계의 계산력이 비할 수 없이 우월하다는 본질은 바뀌지 않을 것이다) 

이제 바둑의 진리는 인간이 아니라 컴퓨터로 추구할 수밖에 없는 목표다. 4천년 동안 남은 수많은 '명국'은 이제 해부 후 빨간펜으로 수없이 지적당할 것이다. 그나마 과거 대국자는 대답할 수 없어 오히려 다행이지만, 지금 살아있는 취미(초보와 아마추어를 통틀어)/프로기사는 기계 앞에서 자신의 무력함을 인정하고 절대자에 의지해야 할 것이다. 탈것의 속도가 음속의 몇배에 달하는 지금도 육상선수는 있듯, 프로 바둑 산업은 계속될 것이다. 그러나 이제 육상경기의 목표가 절대적 속도가 아니라 '인간 한계'의 초월에 있듯, 인간 바둑의 목표 역시 절대능력에 비하여 무력함을 인정한다는 전제 아래 '인간 중 최강자', '인간 계산력의 한계 초월'로 한정될 것이다.

'기타' 카테고리의 다른 글

완전종합영어 - 15년의 추적  (1) 2017.10.17
Coursera - Machine Learning  (0) 2016.08.21
라즈베리 RC Car  (0) 2016.03.17
무상급식과 보편배당  (0) 2016.01.24
[이코노미인사이트 2015.12월] 경제와 책  (0) 2015.12.05
Posted by TUNC AUTEM
,