Home

지금 쓰러 갑니다 ..

  • 무기가 되는 스토리 / 도널드 밀러

    웹사이트가 예쁘다고 물건이 팔리지는 않는다. 이것은 불변의 진리다. 물건을 팔아주는 것은 '말'이다. 우리가 분명한 메시지를 전하지 않는 한, 고객은 귀담아듣지 않는다. 여러분의 메시지는 무엇인가? 입에서 술술 나오는가? 간단하면서도 마음에 와닿고 반복 가능한가? 전체 직원이 우리 회사의 메시지를 호소력 있는 방식으로 전달할 수 있는가? 우리 회사가 무엇을 제공하고 고객은 왜 그 물건을 사야만 하는지에 대한 정확한 설명 포인트가 신입사원에게까지 전달되어 있는가? 웹사이트를 방문한 고객이 우리가 뭘 제공하는지 5초 만에 파악하지 못해서 우리가 놓치고 있는 매출은 과연 얼마나 될까? 여러 브랜드가 저지르는 첫 번째 실수는 그들이 제공하는 제품이나 서비스가 고객의 생존과 번창에 어떻게 도움이 되는지에 초점을 맞춰 이야기를 전개하지 못한다는 점이다. 훌륭한 이야기는 모두 '생존'에 관한 것이다. 그게 어떤 종류의 생존이든 말이다. 스토리가 그 외의 다른 것을 이야기한다면 듣는 이의 마음을 사로잡지 못할 것이다. 그런 내용에는 아무도 관심이 없다. 그렇다면 앞으로 제품이나 서비스의 포지셔닝을 이런 식으로 해보면 어떨까? 사람들이 생존하고, 사랑을 찾고, 열망하는 정체성을 완성하고, 나를 물리적,사회적으로 지켜줄 집단을 형성하는 데 도움이 되는 '어떤 것'이라고 말이다. 그렇게 한다면 모든 이들에게 어떤 것이든 팔 수 있을 것이다. 사람들이 관심을 갖는 것은 오직 이런 것들 뿐이다. 이 말은 절대적으로 믿어도 좋다. 여러 브랜드가 저지르는 두 번째 실수는 고객이 그들의 제안을 이해하는 데에 너무 많은 칼로리를 소모하게 만든다는 점이다. 어떤 정보에 너무 많은 처리 과정이 필요해 보이면 사람들은 그 쓸모없는 정보의 출처를 무시해버린다. 칼로리를 절약하기 위해서다. 다시 말해 고객들의 뇌에는 헷갈리기 시작하면 아예 무시하도록 디자인된 생존 메커니즘이 있다. 사람들이 칼로리를 많이 소모하지 않아도 되게끔 정보를 구성하는 가장 강력한 툴이 바로 스토리다. 마이크의 말처럼 스토리는 '고개를 끄덕이게 하는 장치'다. 스토리를 어떤 포부를 가져야 하는지 알려주고, 그 포부를 달성하기 위해 싸워야 할 난관을 정의하고, 그 난관들을 정복할 계획을 제공한다. 브랜드와 관련한 스토리를 구성할 때는 고객이 따라갈 수 있는 지도를 그려서 제품이나 서비스에 관심을 갖게 만들어야 한다. 노련한 작가라면 훌륭한 글의 핵심 열쇠는 '말하는 것'에 있지 않고 '말하지 않는 것'에 있음을 안다. 더 많이 잘라낼수록 더 훌륭한 시나리오, 더 훌륭한 책이 된다. 고객과 마음이 통하고 싶다면 더 이상 고객들에게 소음을 퍼붓지 말아야 한다. 일단 고객이 누구인지 알고 나면, 다음은 브랜드와 관련해 고객이 원하는 게 뭔지 생각해봐야 한다. 어떤 스토리든 주인공이 무언가를 원하기 때문에 이야기가 촉발된다. 그 나머지 스토리는 주인공이 원하는 것을 얻는지 못 얻는지를 알아가는 여정에 불과하다고 해도 틀리지 않다. 고객이 원하는 게 뭔지 알아내지 못한다면 고객은 우리가 들려주는 스토리에 초대받은 느낌이 들지 않을 것이다. 해마다 수천 개의 기업이 문을 닫는다. 그들이 훌륭한 제품을 만들지 못해서가 아니다. 그 제품을 본 고객들이 그 물건이 내 삶을 어떻게 개선해줄지 이해하지 못했기 때문이다. 우리가 고객의 스토리를 구성하는 각 요소를 면밀히 분석하지 않는다면, 고객은 우리가 무관심하다고 느끼고 다른 경쟁 브랜드로 옮겨갈 것이다.

    책은 나의 힘 /
  • Next.js (14.1.0) 캐싱에 대하여

    원문 Caching in Next.js Next.js 는 렌더링 작업 및 데이터 요청을 캐싱하여 어플리케이션 성능을 개선할 뿐만 아니라 비용을 줄여줍니다. 이 포스팅에서는 Next.js 캐싱 메커니즘과 캐싱을 구성하는데 사용할 수 있는 API, 그리고 서로 상호작용하는 방식에 대해 자세히 살펴보도록 하겠습니다. 개요 기본적으로 Next.js 는 성능개선과 비용절감을 위해 최대한 캐싱합니다. 선택적으로 캐시를 사용하지 않기로 결정하지 않은 한 라우트는 정적으로 렌더링되고 데이터 요청은 캐싱이 된다는 의미입니다. 아래 다이어그램은 빌드 시 라우트가 정적으로 렌더링되고 정적 라우트에 최초 진입했을 때 기본 캐싱 동작을 보여줍니다. 캐싱동작은 라우트가 어떻게 렌더링되는지 (정적, 동적), 데이터가 캐시되는지 아닌지 여부, 요청이 초기 방문의 일부인지 후속탐색의 일부인지에 따라 달라집니다. 사용 케이스에 따라 개별 라우팅과 데이터 요청에 대한 캐싱 동작을 다르게 구성할 수 있습니다. Request Memoization React 는 동일한 URL과 옵션을 가진 요청을 자동으로 메모이제이션하여 fetch API 를 확장합니다. React 컴포넌트 트리의 여러 곳에서 fetch 함수를 호출한다 하더라도 내부적으로는 메모이제이션하여 한번만 요청을 함으로써 동일한 데이터를 가져올 수 있다는 뜻입니다. 예를 들어, 같은 경로(예: 레이아웃, 페이지 및 여러 컴포넌트)에서 동일한 데이터를 사용해야 하는 경우 트리의 최상단에서 props 으로 하위 컴포넌트에 전달할 필요가 없습니다. 동일한 데이터를 네트워크를 통해 다중 요청하는 것에 대한 성능 영향에 대한 걱정없이 데이터를 요청할 수 있습니다. async function getItem() { // fetch 함수는 자동으로 결과를 메모하고 캐시합니다. const res = await fetch('https://.../item/1') return res.json() } // getItem 함수는 두번 요청되지만 한번 실행됩니다. const item = await getItem() // cache MISS (cache 에 없는 상태) // 두번째 요청은 같은 경로의 어디에서든 가능합니다. const item = await getItem() // cache HIT (cache 에 있는 상태) Request Memoization 이 동작하는 법 경로가 렌더링 되는 동안 특정 요청이 처음 호출되면 그 결과는 메모리에 있지 않고 cache MISS 상태일 것입니다. 그러므로 함수는 실행이 되고 외부소스에서 데이터를 가져와서 메모리에 저장합니다. 동일한 경로에서 같은 함수가 요청이 되면 cache HIT 상태이므로 함수를 실행하지 않고 메모리로 부터 데이터를 전달받습니다. 경로가 렌더링 되고 렌더링 패스 (화면에 구성요소가 그려지는 과정) 가 완료되면 메모리는 리셋되고 모든 요청 메모이제이션 항목이 지워집니다. 알아두면 좋아요 Request Memoization 은 Next.js 가 아닌 React 의 기능입니다. 다른 캐싱 메커니즘과 어떻게 상호작용하는지 보여주기 위해 여기에 포함시켰습니다. Memoization 은 fetch 요청의 GET 메소드에만 적용됩니다. Memoization 은 React 컴포넌트 트리에만 적용됩니다. generateMetadata, generateStaticParams, Layouts, Pages, 그리고 Server Components 에는 적용되지만 React 컴포넌트 트리의 일부가 아닌 Router Handler 에는 적용되지 않습니다. fetch 가 적합하지 않은 경우 (일부 Database, CMS Clients, GraphQL clients 등) React cache function 으로 함수를 메모할 수 있습니다. Duration 캐시는 React component tree 렌더링이 끝나는 서버요청 수명동안 지속합니다. Revalidating Memoization 은 서버요청 간에 공유되지 않고 렌더링되는 동안만 적용이 되기때문에 revalidate 할 필요가 없습니다. Opting out fetch 요청에서 memoization 을 하지 않기 위해서는 AbortController signal 을 요청에 넘기면 됩니다. const { signal } = new AbortController() fetch(url, { signal }) Data Cache Next.js 는 서버 요청, 배포를 통해 들어오는 데이터 결과를 유지하는 Data Cache 가 내장되어 있습니다. 이는 Next.js 가 native fetch API 를 확장하여 서버 상의 각 요청이 자체 영구 캐싱 규칙을 설정할 수 있게 함으로써 가능합니다. 알아두면 좋아요 브라우저에서 fetch 의 cache 옵션은 어떻게 요청이 브라우저의 HTTP cache 와 상호작용할지를 지시하지만 Next.js 에서는 어떻게 서버측 요청이 서버의 Data Cache 와 상호작용할지를 지시합니다. 기본적으로 fetch 를 사용하는 데이터 요청은 캐시처리됩니다. cache 나 next.revalidate 옵션으로 캐시 동작을 구성할 수도 있습니다. How the Data Cache Works 렌더링되는 동안 최초로 fetch 요청이 호출되면 Next.js 는 Data Cache 에서 캐시된 응답이 있는지 확인합니다. 캐시된 응답이 확인되면 즉시 반환되고 메모합니다. 캐시된 응답이 발견되지 않으면 데이터 소스에 요청해 결과를 Data Cache 에 저장 후 메모합니다. 캐시되지 않은 데이터가 필요하다고 설정할 경우 (e.g {cache: 'no-store'}) 결과는 항상 데이터소스에서 가져와 메모합니다. 데이터가 캐시되든, 캐시되지 않든 요청은 항상 메모하여 React 렌더링 패스가 진행되는 동안 동일한 데이터에 대한 중복요청을 피할 수 있습니다. Data Cache 와 Request Memoization 의 차이점 두 캐싱 메커니즘 모두 캐시된 데이터를 재사용하여 성능을 개선하지만 Data Cache 는 들어오는 요청과 배포를 걸쳐 영구적이며, Request Memoization 은 요청의 수명동안만 지속됩니다. Memoization 으로 동일한 렌더링 패스 안에서 렌더링 서버에서 Data Cache 서버 (e.g. CDN, Edge) 나 데이터 소스 (e.g. database, CMS) 로의 네트워크를 통한 중복 요청의 수를 줄일 수 있고 Data Cache 로 원본 데이터 소스에 대한 요청의 수를 줄일 수 있습니다. Duration Data Cache 는 revalidate 하거나 사용하지 않겠다고 선택하지 않는 이상 들어오는 요청과 배포에 걸쳐 영구적입니다. Revalidating 캐시된 데이터는 두가지 방식으로 재검증할 수 있습니다. Time-based Revalidation: 일정 시간이 지난 후 새로운 요청이 이루어지면 데이터를 재검증합니다. 자주 변경되지 않거나 최신 데이터의 중요도가 낮은 경우에 유용합니다. On-demand Revalidation: 이벤트 기반으로 데이터를 재검증합니다. (e.g. form submission) On-demand revalidation 은 태그 기반, 경로 기반 방식으로 한번에 그룹 데이터를 재검증할 때 사용할 수 있습니다. 가능한한 최신 데이터를 원할 때 유용합니다. (e.g. headless CMS 의 내용이 업데이트 될 때) Time-based Revalidation 일정한 시간 간격으로 재검증하기 위해 fetch 함수의 next.revalidate 옵션으로 리소스의 캐시 수명(초단위)을 지정할 수 있습니다. // Revalidate at most every hour fetch('https://...', { next: { revalidate: 3600 } }) 또는 특정 세그먼트 내의 모든 fetch 요청을 구성하거나 fetch 를 사용할 수 없는 경우 Route Segment Config options 을 사용할 수 있습니다. Time-based Revalidation 동작 방식 revalidate 로 최초 fetch 요청을 하면 외부 데이터소스에서 가져온 데이터가 Data Cache 에 저장됩니다. 지정한 시간 내의 모든 요청은 캐시된 데이터를 반환합니다. 지정한 시간 이후의 다음 요청도 여전히 캐시된 데이터 (now stale) 를 반환합니다. Next.js 는 백그라운드에서 데이터검증을 작동시킵니다. 데이터를 성공적으로 가져오면 Next.js 는 신규 데이터로 Data Cache 를 갱신합니다. 백그라운드 재검증이 실패하면 이전 데이터는 변경되지 않은 상태로 유지됩니다. 위의 동작은 stale-while-revalidate 와 유사합니다. On-demand Revalidation 데이터는 경로 (revalidatePath) 나 캐시 태그 (revalidateTag) 기반의 온디맨드 방식으로 재검증할 수 있습니다. On-Demand Revalidation 동작 방식 최초 fetch 요청이 호출되면 데이터를 외부에서 가져와 Data Cache 에 저장합니다. On-demand revalidation 이 작동하면 해당 캐시 항목이 캐시에서 제거됩니다. Time-based revalidation 과 다르게 동작합니다. 다음 요청에서 캐시가 발견되지 않아 (cache MISS) 데이터를 외부에서 가져와 Data Cache 에 저장합니다. Opting out 개별 데이터 요청의 cache 옵션을 no-store 로 지정할 수 있습니다. 이렇게 되면 fetch 가 호출될 때마다 데이터를 데이터 소스에서 가져옵니다. // Opt out of caching for an individual `fetch` request fetch(`https://...`, { cache: 'no-store' }) 또한 특정한 경로 세그먼트에 대해 캐싱하지 않으려면 Route Segment Config options 을 사용할 수 있습니다. 이렇게 하면 타사 라이브러리를 포함하여 경로 세그먼트의 모든 데이터 요청에 영향을 미칩니다. // Opt out of caching for all data requests in the route segment export const dynamic = 'force-dynamic' Vercel Data Cache Next.js 애플리케이션이 Vercel에 배포된 경우 Vercel Data Cache 문서를 통해 Vercel 특정 기능에 대해 더 잘 이해하는 것이 좋습니다. Full Route Cache 관련 용어 Automatic Static Optimization, Static Site Generation, Static Rendering 이라는 용어는 빌드 시 어플리케이션의 라우트를 렌더링하고 캐싱하는 프로세스를 언급할 때 혼용해서 사용될 수 있습니다. Next.js 는 빌드시점에 자동으로 라우트를 렌더링하고 캐싱합니다. 매 요청마다 서버에서 렌더링하는 대신 캐싱한 라우트를 제공하도록 최적화하여 페이지를 좀 더 빠르게 로딩할 수 있도록 합니다. Full Route Cache 가 어떻게 동작하는지 이해하기 위해서 React 가 렌더링을 어떻게 다루는지, Next.js 가 렌더링 결과를 어떻게 캐싱하는지를 살펴보는 것이 도움이 됩니다. 1. React Rendering on the Server 서버에서 Next.js 는 React API 를 사용하여 렌더링을 조율합니다. 렌더링 작업은 개별 라우트 세그먼트와 Suspense 경계에 의해 chunk 로 분할됩니다. 각 chunk 는 두 단계로 렌더링됩니다. React 는 서버 컴포넌트를 스트리밍에 최적화된 특수한 데이터 포맷으로 렌더링하는데 이를 React Server Component Payload 라고 합니다. Next.js 는 React Server Component Payload 와 Client Component Javascript instructions 를 서버에서 HTML 을 렌더링하기 위해 사용합니다. 이는 모든 작업이 렌더링될 때까지 기다릴 필요없이 응답을 스트리밍할 수 있다는 의미입니다. React Server Component Payload 란? React Server Component Payload 는 렌더링된 React Server Components tree 의 압축된 바이너리 형태입니다. React Client 에서 브라우저 DOM 을 업데이트하기 위해 사용됩니다. 다음을 포함하고 있습니다. Server Component 의 렌더링된 결과 클라이언트 컴포넌트가 렌더링될 위치에 대한 placeholder 와 해당 자바스크립트 파일에 대한 참조 Server Component 에서 Client Component 로 전달된 props 2. Next.js Caching on the Server (Full Route Cache) Next.js 에서는 서버 상에서 라우트를 렌더링한 결과 (React Server Component Payload and HTML) 를 캐싱하는 것이 기본 동작입니다. 빌드시에 정적으로 렌더링된 라우트나 재검증중인 경로에 적용됩니다. 3. React Hydration and Reconciliation on the Client 요청 시에 클라이언트에서는 .. HTML 은 Client, Server Components 의 상호작용이 없는 초기 화면을 즉시 표시하는 데 사용됩니다. React Server Components Payload 는 Client 와 렌더링된 Server Component trees 를 조정하고 DOM 을 갱신하는 데 사용됩니다. JavaScript instructions 는 Client Components 를 활성화 (hydrate) 해서 어플리케이션이 상호작용할 수 있도록 합니다. 4. Next.js Caching on the Client (Router Cache) React Server Component Payload 는 클라이언트 측 Router Cache (개별 라우트 세그먼트에 의해 분할 된 인메모리 캐시) 에 저장됩니다. Router Cache 는 이전에 방문한 경로와 프리페칭된 라우트를 저장해서 탐색 경험을 향상시킵니다. 5. Subsequent Navigations 이후의 탐색이나 프리페칭 중에 Next.js 는 React Server Components Payload 가 Router Cache 에 저장되어 있는지 확인해서 있다면 서버에 새로운 요청을 보내지 않습니다. 라우트 세그먼트가 캐시에 없는 경우 Next.js 는 서버에서 React Server Components Payload 를 가져와서 클라이언트 Router Cache 에 채웁니다. Static and Dynamic Rendering 라우트가 빌드 시에 캐시될지 아닐지는 정적, 동적 렌더링 여부에 달려있습니다. 기본적으로 정적 라우트는 캐시하고 반면에 동적 라우트는 요청 시에 렌더링 되며 캐시되지 않습니다. 아래 다이어그램은 캐시된 데이터와 캐시되지 않은 데이터를 사용하여 정적으로 렌더링된 라우트와 동적으로 렌더링된 라우트의 차이를 보여줍니다 Duration 기본적으로 Full Route Cache 는 영구적으로 지속됩니다. 렌더링 결과물이 사용자의 요청으로 캐시된다는 의미입니다. Invalidation Full Route Cache 를 무효화할 수 있는 두가지 방법이 있습니다. Revalidating Data: Data Cache 를 재검증하여 서버에서 컴포넌트를 다시 렌더링하고 새로운 렌더링 출력을 캐싱함으로써 Router Cache 를 무효화합니다. Redeploying: 배포간에 지속되는 Data Cache 와 다르게 Full Route Cache 는 신규 배포시 초기화됩니다. Opting out Full Route Cache 를 선택하지 않는 법, 다시 말해 들어오는 매 요청마다 동적으로 컴포넌트를 렌더링 하는 법은 다음과 같습니다. Dynamic Function 사용: 이렇게 하면 Full Route Cache 에서 경로를 선택 해제하고 요청 시점에 동적으로 렌더링합니다. Data Cache 는 계속 사용할 수 있습니다. dynamic = 'force-dynamic' or revalidate = 0 route segment config options: 이렇게 하면 Full Route Cache 와 Data Cache 를 건너뜁니다. 즉, 서버로 들어오는 모든 요청에 대해 컴포넌트가 렌더링되고 데이터를 가져옵니다. Router Cache 는 클라이언트 측 캐시이므로 계속 적용됩니다. Data Cache 사용하지 않기: 캐시되지 않은 라우트 요청이 있는 경우 Full Route Cache 에서 해당 경로를 제외합니다. 특정 요청에 대한 데이터는 모든 요청에 대해 fetch 됩니다. 캐싱하도록 설정된 요청은 여전히 데이터 캐시에 캐시됩니다. 이렇게 하면 캐시된 데이터와 캐시되지 않은 데이터를 혼합하여 사용할 수 있습니다.

  • 타이탄의 도구들 - 언제나 가능한 것을 시작하라 (케이시 네이스탯 편)

    케이시 네이스탯Casey Neistat, @CaseyNeistat 은 뉴욕을 무대로 활동하는 영화 제작자이자 가장 영향력 있는 유튜버다. 그의 온라인 영화는 지난 5년 동안 3억 회에 가까운 조회 수를 기록했다. 그는 작가, 감독, 편집자이자 HBO에서 방영한 <네이스탯 브라더스The Neistat Brothers> 시리즈에 출연한 스타이고, 2011년에는 영화 <키다리 아저씨Daddy Longlegs>로 인디펜던트 스피릿 어워드Independent Spirit Awards에서 존 카사베츠 상John Cassavetes Award을 받기도 했다. 그의 작품들은 인터넷에서만 독점 공개되며 대부분 단편 영화들이다. 하지만 공개될 때마다 평론가와 관객들의 극찬을 불러 모았다. 나아가 그는 아주 간단한 동영상 제작과 공유를 목표로 하는 스타트업 기업인 빔Beme의 설립자이기도 하다. 당신의 분노를 따라가라 케이시를 스타 반열에 올린 작품은 2011년에 그가 만든 <자전거 전용도로Bike Lanes>라는 단편 영화였다. 그의 실제 경험에 바탕한 이 영화는 입소문을 타고 폭발적인 인기를 불러 모았다. 케이시는 자전거 전용도로가 아닌 곳에서 자전거를 탔다는 이유로 뉴욕 경찰에게 소환장을 받았을 때 화가 머리끝까지 치밀어 올랐다. 하지만 그는 법원에 출두해 50달러짜리 소환장 때문에 한나절 동안 싸우며 시간을 허비하는 대신, 자신의 분노 방향을 다른 쪽으로 돌려 그것을 영리한 방법으로 표현한 영화를 만들었다. 케이시는 경찰이 자신에게 한 말을 관객들에게 되풀이하면서 영화를 시작한다. '자전거 운전자는 안전과 법적인 이유 때문에 반드시 자전거 전용도로로만 다녀야 한다.' 그는 자전거를 타고 뉴욕 시 여기저기를 돌아다니면서 사람들이 이 규칙을 지키지 못하게 만드는 자전거 전용도로 내의 온갖 시설물과 충돌한다. 이 영화의 클라이맥스는 케이시가 자전거 전용도로 한복판에 주차되어 있는 경찰차와 충돌하는 장면이다. 관객들의 반응은 상상을 초월했다. 공개 첫날에만 500만 건의 조회 수를 기록했다. 마침내 마이클 블룸버그Michael Bloomberg 뉴욕 시장이 기자회견을 열어 이 영화에 담긴 질문들에 답하고 적절한 조치와 개선을 약속해야 했다. 케이시는 이렇게 말했다. "어떤 창조적인 프로젝트를 하는 게 좋을지 잘 모를 때가 있는가? 그때는 자신의 분노를 따라가 보라. 내가 그랬던 것처럼 소득이 있을 것이다." 맥도날드 햄버거만 30일 동안 하루 세 끼 직접 먹는 체험을 통해 비만사회와 패스트푸드 기업에 일침을 날린 다큐멘터리 <슈퍼사이즈 미>의 모건 스펄록Morgan Spurlock 감독 또한 세상을 바꿀 만한 것을 만들려면 세상의 분노 속으로 직접 들어가야 한다고 강조한 바 있다. <슈퍼사이즈 미>는 세계적으로 큰 반향을 불러 일으켰고 아카데미 상 다큐멘터리 부분 후보에 오르는 등 큰 성공을 거두었다. 미국 최고의 코미디언이자 배우이자 작가인 휘트니 커밍스Whitney Cummings 또한 이렇게 말한 바 있다. "뭔가가 당신을 불쾌하게 한다면, 그 안을 들여다봐라. 무언가 있다는 신호다." 당신이 할 수 있는 가장 충격적인 일은? 유튜브에서만 2,000만 명 이상이 관람한 동영상 <가치 있는 순간을 만들어라Make It Count> 에는 케이시의 성공 비결이 함축적으로 담겨 있다. 2011년 케이시는 그 재능을 인정받아 광고계에서 성공적인 경력을 쌓아가고 있었다. 하지만 그의 표현을 빌리자면 '말할 수 없이 따분한' 시기이기도 했다. 그는 당시 나이키Nike 와 3건의 광고 계약을 맺고 있었다. 그가 처음 만든 두 편은 안정적인 성공을 거뒀다. 몸값이 1억 달러에 달하는 거물급 운동선수들이 출연했기 때문에 고객들의 반응이 매우 좋았다. 그런데 세 번째 광고를 제작할 때에 이르자 그는 갑자기 몹시 지루하고 피곤한 감정을 느꼈다. 앞에서 거둔 성공을 무심코 흉내 내다 보면 순식간에 삼류감독으로 전락할 것 같았다. 그는 나이키 광고 담당자에게 전화를 걸었다. "이봐요, 1~2편처럼 가는 건 너무 지루하지 않아요? 때려치웁시다. 대신 내가 늘 하고 싶었던 걸 해볼게요. 광고 제작 예산이 다 떨어질 때까지 무작정 세상을 돌아다니며 그 과정을 기록해볼게요. 그러면 그에 대한 영상도 만들 수 있을 겁니다." 그러자 담당자는 이렇게 말하며 전화를 끊었다. "당신, 미쳤군요. 하지만 좋아요." 나이키가 손을 들어준 미친 감독의 영화 <가치 있는 순간을 만들어라>는 이렇게 탄생했다. 영화는 다음과 같은 자막으로 시작된다. "나이키는 내게 가치 있는 순간을 만든다는 게 어떤 의미인지에 대한 영상을 만들어달다고 부탁했다. 나는 그들을 위한 영화를 만드는 대신, 오직 나 자신에게 가치 있는 순간을 만들기 위해 친구 맥스와 함께 세계를 돌아다니며 제작비를 다 썼다. 우리는 돈이 떨어질 때까지 돌아다녔다. 총 10일 동안 15개 나라를 돌아다녔다…" '타인이 아니라 나에게 중요한 것을 따라가라'는 메시지를 담은 이 영상은 메가 히트했다. 광고 영상의 공식과 판도를 송두리째 뒤엎어버렸고, 지난 몇 년 동안 지구상의 모든 메시지와 캠페인의 방식을 혁신적으로 바꿔놓았다. 언제나 가능한 것은 무엇인가? 케이시는 15살에 가출해 17살에 한 아이의 아빠가 되었다. 생활보호대상자로 지정되어 분유와 기저귀 값을 지원받는 어린 가장이었다. 이처럼 일찍부터 시련과 불우함의 연속이었던 그는 어떻게 자신의 삶을 가장 혁신적인 방식으로 바꿀 수 있었을까? 이 궁금증에 대한 그의 답은 진짜 멋지다. "가치 있는 일을 할 때 우리는 바뀐다. 그러면 가치 있는 일을 하려면 어떻게 해야 할까? '가능한 일'을 해야 한다. 우리는 곧 자기가 주변에서 가장 잘 생긴 사람이 될 수 없다는 걸 깨닫게 된다. 가장 똑똑한 사람도 될 수 없고, 가장 교양 있거나 조예가 깊은 사람이 되는 것도 불가능하다. 그런 면에서는 남들과 경쟁할 수 없다. 하지만 언제나 경쟁이 가능한, 성공에 있어서 진정으로 평등한 측면이 하나 있다. 바로 '노력'이다. 옆에 있는 사람보다 더 열심히 노력하는 건 언제나 가능하기 때문이다." 우리는 우리가 좋아하는 일에 더 많은 시간을 쓰려고 노력한다. 흠, 정말 그럴까? 원하는 일에 더 많은 시간을 내는 것은, 싫어하는 일을 하는 데 얼마나 더 적은 시간을 썼느냐가 결정한다. 그런데 생각해보라. 하루 종일 싫어하는 일을 하는 데 매달려 있지는 않은가? 케이시가 말하는 진정한 노력의 의미와 방향이 여기에 있다. 매달려 있는 것과 노력은 전혀 다른 차원이다. 역설적으로 들리겠지만, 좋아하는 일을 하는 데 시간을 많이 내는 것은 불가능하다. 하지만 싫어하는 일을 빨리 해치우는 건 노력을 통해 가능하다. 우리는 가능한 것을 해야 한다. 이것이 곧 불가능해 보이는 일에 접근 가능한 유일한 방법이다. 케이시는 싫어하는 일의 목록을 지워나가는 노력을 기울였다. 그러다 보니 '가치 있는 순간'을 만드는 것이야말로 자신이 가장 좋아하는 일이라는 것을 발견했다. 처음부터 자신이 원하는 일, 좋아하는 일을 알고 있는 사람은 없다. 케이시는 위대한 현자 벤저민 프랭클린의 다음과 같은 탁월한 조언을 등불 삼아 따라간 사람일 것이다. "죽어서 육신이 썩자마자 사람들에게 잊히고 싶지 않다면, 읽을 만한 가치가 있는 글을 쓰든지, 글로 남길 만한 가치가 있는 일을 하라." 훗날 그는 분명 자신이 사랑하는 일만 하다 떠난 우리 시대 가장 성공한 사람으로 기억될 것이다. 하지만 이와 동시에 정작 그가 한 일은, 싫어하는 일을 하는 데 가장 적인 시간을 쓰려고 노력한 것뿐임을 기억해야 한다. 이 두가지 기억의 미묘한 차이를 분명히 알아차릴 때 당신의 인생 또한 새로운 방식으로 변화해 나갈 것이다. 케이시 네이스탯의 자전거 전용도로Bike Lanes 케이시 네이스탯의 가치 있는 순간을 만들어라Make It Count

    책은 나의 힘 /
  • 타이탄의 도구들 - 모든 것을 기록으로 남겨라 (마이크 버비글리아 편)

    마이크 버비글리아Mike Birbiglia, @birbigs는 카메라 앞에서나 밖에서나, 세상에서 가장 바쁜 사람이다. 연극과 영화, 스토리텔링, 스탠드업 코미디가 합쳐진 그의 솔로 투어 공연은 전 세계에서 매진을 기록한다. 최근에는 제작, 감독, 각본, 주연을 맡은 영화 <돈 싱크 트와이스Don't think twice>로 평단과 관객의 찬사를 얻은 바 있다. 마이크!!! 너하고 약속이 있어 마이크는 상대를 움직이게 하는 힘을 갖고 있다. 더 놀라운 건 '자기 자신'을 자신의 뜻대로 움직이게 하는 데도 일가견이 있다는 것이다. 그 비결에 대해 들어보자. "내게는 지금껏 사람들에게 공개하지 않은 독특한 습관이 있다. 언젠가 천천히 나를 돌아보니, 자꾸만 미루는 버릇이 있었다. 사람들과의 약속을 미루는 법은 없었다. 그런데 운동을 하겠다거나 글을 규칙적으로 쓰겠다는 등 내 자신과의 약속은 언제나 뒷전으로 밀려나고 밀려나다가 나중엔 흐지부지되고 있었다. 문득 '내 자신도 내가 못 움직이는데, 다른 사람을 내 뜻대로 움직여보겠다고? 너무 한심하군!' 하는 생각이 들었다. 그래서 그날 밤부터 나는 '마이크!!!(느낌표의 개수도 중요하다) 내일 아침 7시에 페들러 카페(내가 주로 글을 쓰고 사색을 하는 장소)에서 너하고 약속이 있어!'라고 적은 쪽지를 침대 옆에 두고 잤다. 바보 같고 창피한 얘기처럼 들리겠지만, 효과가 컸다." 내가 이 책에서 마이크 버비글리아를 소개하는 가장 큰 이유가 여기에 있다. 다른 사람과의 약속처럼 자기 자신과의 약속 또한 명확하게 '시각화'해서 상기시키면 실행력이 매우 높아진다. 머릿속으로만 생각하거나 휴대폰 알람 메시지로 만들지 말고, 손으로 직접 쓴 쪽지를 자신에게 주어라. 이 작은 노력 하나로 마이크 버비글리아는 배우들 사이에서 가장 자기관리를 잘하는 사람으로 평가받았다. 페들러 카페에서 만나기로 한 자신과의 약속을 잘 지킨 그는 배우들 사이에서 가장 대본을 잘 쓰는 작가라는 명성도 얻었다. 모든 것을 기록하라 마이크는 젊은 팬들을 만날 때마다 '모든 것을 기록해두라'는 조언을 아끼지 않는다. 시간은 빠르게 사라지고 모든 일은 구름처럼 흘러간다. 그 찰나의 순간들 속에 우리가 얻어야 할 인생의 영감과 힌트, 단서들이 담겨 있다. 이것들을 놓치지 않는 유일한 방법은 '기록'이다. 그는 이렇게 말했다. "아무리 강조해도 지나치지 않은 게 있다. 일기를 쓰라는 것이다. 단 다름 사람들과는 좀 다르게 써라. 많은 사람들이 쓰는 방식에서 벗어나라는 것이다. 나만의 호흡으로 써라. 어떤 하루에 대한 기록은 책 한 권의 분량이 나올 수도 있고, 한 단어나 한 줄로 정리되는 하루도 있을 것이다. 절대 정해진 양을 채우려고 아등바등하지 마라. '표준'이나 '기준'에 굴복하지 말라는 뜻이다. 그래야 진짜 한 걸음 더 나간다. 한 걸음 더 나가서 남들에게 절대 보여주지 않을 것 같은 얘기를 일기장에 담아라. 그것들이 결국 언젠가 세상에 공개되면서부터 당신은 점점 명성을 얻어나가게 될 것이다." 이쯤 되면 '표준standard을 거부하라'는 메시지는 성공과 부, 지혜를 얻는 가장 기본적인 진리로 자리 잡는 것 같다. 이 책의 타이탄들 모두 입이 아프게 강조하니까 말이다. 강박적인 노트 수집가로서 나 또한 당신에게 단 하나의 조언을 주자면, 모든 걸 기록하라고 하겠다. 기록의 힘은 강력하다. 그리고 무엇보다 어렵지 않다. 가장 들이기 좋은 습관이다. 마이크는 마지막으로 이렇게 말했다. "자신을 더 많이 알리는 데 시간을 낭비하지 마라. 그 시간에 더 많이 알릴 수 있는 '능력'을 키워라. 단순히 잘하는good 사람이 아니라 위대한great 사람이 되려고 노력해야 한다. 나이가 들수록 점점 뚜렷하게 깨닫게 된다. 이 세상에는 정말 똑똑하고 능력 있는 사람은 많지만, 자신의 일에 영혼까지 쏟아 붓는 위대한 사람은 별로 없다는 사실을."

    책은 나의 힘 /
  • 타이탄의 도구들 - 오늘도 대담하게 뛰어들었는가 (브레네 브라운 편)

    휴스턴 대학교 사회복지학과의 브레네 브라운Brene Brown, @BreneBrown 박사는 '역대 가장 많은 사람이 본 테드TED 강연 영상 5개' 중 하나의 소유자다. 2010년 '취약성의 힘'이라는 주제로 열린 그녀의 강연 영상은 3,100만 건이 넘는 조회 수를 기록했다. 그녀는 지난 13년간 취약성과 용기, 가치, 수치심 등에 대해 연구했고, <마음 가면> <불완전함의 선물> <라이징 스트롱> 등의 베스트셀러를 펴냈다. 두려움과 용기는 늘 함께 다닌다 그녀는 이렇게 말했다. "용감하거나 겁쟁이거나, 사람은 이 둘 중 하나라는 말은 사실이 아니다. 우리는 모두 두려움을 느끼는 동시에 용기를 내기 때문이다." 나는 복싱 선수 마이크 타이슨의 전설적인 코치였던 쿠스 다마토Cus D'Amato가 큰 경기를 앞두고 선수들에게 했다는 말이 떠올랐다. "영웅과 겁쟁이는 똑같은 것을 느낀다. 하지만 영웅은 자신의 두려움을 상대 선수에게 던져버린다. 반면에 겁쟁이는 이를 피해 도망친다. 두 사람이 느끼는 건 모두 두려움이다. 그 두려움을 어떻게 써먹느냐가 승패를 결정한다." 당신은 경기장에 서 있는 투사인가? 젊은 시절, 브레네는 우연히 시어도어 루스벨트 대통령이 남긴 유명한 '경기장에 선 투사'라는 연설을 접하게 되었다. 살아가면서 상처가 되는 모든 공격과 비판에 직면한다 할지라도, 내가 옳다고 생각한 신념과 가치를 포기하지 않겠노라 굳게 결심한 것이다. 그렇다면 궁금해진다. 그녀의 삶에 터닝 포인트를 제공한 '경기장에 선 투사'란 어떤 의미인가? 그녀는 이렇게 말했다. "이 세상에서 가장 중요한 사람은 경기장에 선 투사다. 그는 얼굴에 흙먼지와 땀과 피를 잔뜩 묻혀가며 용감하게 싸운다. 실책을 범하고 거듭 한계에 부딪치기도 한다. 그가 누구인 줄 아는가? 바로 나, 그리고 당신이다." 더 나은 사람이 되려면 우리는 실수와 한계를 드러내는 일에 두려움을 갖지 않아야 한다. 가장 많은 실수를 드러내는 사람이 '가장 열심히 노력하는 사람'이다. 그러니 그것들을 보여주는 건 자랑스러운 일이지, 부끄러워 할 이유가 아니다. 브레네는 계속 설명한다. "경기장의 투사로 살면 확실하게 보장받는 것이 있다. '흠씬 두들겨 맞을 것'이라는 사실이다. 정신 없이 두들겨 맞을 것을 알면서도 대담하게 뛰어드는 것, 그것이 우리가 가져야 할 단 하나의 삶이다. 인생을 바꿀 만한 커다란 용기는 '흠씬 두들겨 맞을 것이다'와 같은 '취약성'을 드러내고 감수할 때 생겨난다. 우리는 매일 두 개의 질문을 던져야 한다. '나는 오늘 대담하게 뛰어들었는가?' '나는 편암함 대신 용기를 선택하기 위해 어떤 취약성을 드러내고 감수했는가?'" 이는 아침 일기나 저녁 일기를 쓸 때 하루를 돌아보게 해주는 매우 좋은 질문들이다. 그녀의 이 메시지는 3,000만 명이 시청한 강연을 만들어냈다. "테드TED 강연을 위해 내가 준비한 것은 내 취약성을 드러내며 대담하게 뛰어드는 것이 전부였다. 나는 내 자신의 다양한 실패에 대해 이야기했다. 심리 상담을 받고 돌아가는 길에 두 번 다시는 받지 않겠노라 결심한 이야기도 했다. 관객들은 경기장에 선 나에게 큰 박수를 보내주었다. 그리고 깨달았다. 강연이 끝났을 때 어지럽고 속이 울렁거리지 않으면, 그건 대담하게 뛰어들지 않았다는 뜻이라는 것을." 상대에게 도와줄 기회를 제공하라 취약성은 이제 더 이상 숨겨야 할 것이 아니다. 솔직하게 드러낸 취약성은 사람들에게 신뢰를 심어주는 훌륭한 도구다. 흔히 상대에게 단단한 신뢰를 먼저 얻고 난 다음에 자신의 취약성을 드러내야 한다고 생각한다. 하지만 먼저 나의 연약함, 취약함을 드러내지 않으면 시간이 흘러도 신뢰관계는 형성되지 않는다. 브레네는 마지막으로 이렇게 말했다. "인생은 결코 편안하게 흘러가지 않는다. 생각해보라. 편안하게 얻은 게 하나라도 있는지를. 뭔가를 얻으려면 빈틈이 없는, 매끄러운 사람이 되어선 안된다. 그런 사람에게 사람들이 귀를 기울이고 칭찬할 것 같은가? 천만에다. 속이 울렁거리고 얼굴이 화끈거려 몹시 불편하더라도 기꺼이 먼저 자신의 취약한 부분을 드러내는 사람을 세상은 더 높게 평가하고 도와준다. 상대에게 도움의 기회를 제공하는 사람이 가장 용감하게, 가장 빠르게 성공한다." 브레네 브라운의 "취약성의 힘" (테드 영상)

    책은 나의 힘 /
  • homebrew mysql 설치 및 사용자 생성 과정 (MAC M1)

    mysql 설치 및 실행 # 설치 (현재 기준 8.3.0 버전) $ brew install mysql # 실행 $ brew services start mysql # 로그인 $ mysql -u root 로그인 시 mysql.sock 에러가 발생한다면? Can't connect to local MySQL server through socket '/tmp/mysql.sock' $ cd /opt/homebrew/Cellar/mysql/8.3.0/support-files $ mysql.server start 사용자 생성 (mysql console) # localhost 만 허용 mysql> create user 'newuser'@'localhost' identified by 'password'; # 모든 호스트 허용 mysql> create user 'newuser'@'%' identified by 'password'; # 권한 부여 mysql> grant all privileges on *.* to 'newuser'@'localhost'; # 사용자 삭제 mysql> drop user 'newuser'@'localhost'; # 변경 사항 적용 mysql> flush privileges;

  • Stable Diffusion WebUI 실행하기 (Apple Silicon)

    레퍼런스 https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Installation-on-Apple-Silicon 실행방법 아래는 python 이 설치되어 있다는 가정하에 작성된 명령들입니다. ## 소스 다운로드 $ cd ~/Documents/Project/ $ git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git $ cd stable-diffusion-webui ## virtual 환경 실행 $ python3 -m venv ./env $ source env/bin/activate ## 패키지 설치 $ pip install -r requirements.txt 상단 레퍼런스의 v1-5-pruned-emaonly.ckpt 링크 혹은 허깅페이스에서 ckpt 파일을 다운로드한 다음 models/Stable-diffusion 디렉토리에 옮겨주고 루트경로에서 아래 명령을 실행합니다. $ mv ~/Downloads/v1-5-pruned-emaonly.ckpt ./models/Stable-diffusion $ ./webui.sh http://127.0.0.1:7860/ 경로의 웹페이지가 자동으로 열리는데 다운로드한 모델을 선택하고 프롬프트를 입력한 다음 Generate 를 클릭하면 이미지가 생성됩니다. 실행결과

  • 요즘 것들의 사생활 - episode 01 서른의 퇴사, 1년간의 직업 실험 _ with 김가현

    나에게 1년 정도 시간을 줬던 거네요. 그 시간 동안 다양한 직업 실험을 했다면서요? 맨 처음 하게 된 일은 어떤 거였어요? 맨 처음 하게 된 일이 프리랜서로 웹 기획하는 거였어요. 내가 회사 안에서 쌓아온 그 기술이 회사 밖에서도 팔릴지 너무 확인하고 싶었거든요. 개발자와 대화하기 위해서 밤을 새우면서 통화 녹취를 풀고 공부하며 쌓은 그 기술이요? 어떻던가요? 한참 잘 먹고 잘 살았죠. (웃음) 시간당 페이가 높더라고요. 되게 쏠쏠한 직업이었죠. 그 시간이 헛되지 않았네요. 정말, 정말 헛되지 않았더라고요. (웃음) 그런 일을 시작으로 어떤 것들을 하며 먹고살았어요? 프리랜서 웹 기획자를 시작으로, 콘텐츠 제작자로 일하기도 하고, 강사로 강연을 하기도 했고요. 바리스타가 돼서 커피를 내리는 일도 했고, 문화 기획자가 돼서 1박 2일짜리 행사를 만들기도 했어요. 되게 다양한 일을 했네요. 회사에서 했던 일과는 무척 다르고 전공과도 상관없는 완전히 새로운 일이 많았던 것 같은데, 이런 실험을 한 이유는 뭐였나요? 내가 어디까지 할 수 있는지, 그걸로 돈이 벌리는지 알고 싶었어요. 그래서 최대한 겹치지 않는 일들을 하려고 했던 것 같아요. 그중에 제일 재미있었던 일은 뭐였어요? 강원도에서 제 또래 청년들을 만나는 일이었어요. 거기서 자기 나름대로 일과 삶의 균형을 맞춰가면서 어떻게 먹고사는 일을 해결하는지 인터뷰하는 프로젝트를 직접 기획해서 진행했었는데요. 저는 평생 서울에서만, 그러니까 굉장히 자원이 집중된 환경에서 살아왔단 말이에요. 근데 강원도만 해도 인적 자원과 물적 자원이 서울과 굉장히 달라요. 그런 환경에서 나랑 비슷한 사람들이 먹고사는 일을 해결하고 있더라고요, 자기 나름대로. 그걸 보는 일이 굉장히 재밌었어요. 신선했고, 영감을 많이 받았고, 그 사람들이 또 나의 동료가 되기도 했고요. 강원도를 왔다 갔다 하면서 내가 그동안 얼마나 좁은 울타리에서 살았나, 얼마나 좁은 가능성만을 생각하면서 살았나, 하는 생각을 했던 것 같아요. 나에게 맞는 일을 좀 찾은 것 같나요? 직업 실험에서 가장 흥미로웠던 것은, 진짜 나답지 않은 일을 했을 때 더 많이 성장하고 가능성이 열리고 더 많은 영감을 얻었다는 거였어요. 어떤 것에 의존하지 않고 스스로 먹고살 수 있는 힘을 기르는 건 좋지만, 그걸 계속하기 위해서는 지속 가능한 수익 구조도 있어야 된다고 생각하거든요. 혹시 그런 부분에서 구체적인 계획이 있나요? 사실 이 실험을 계획할 때는 지속 가능한 수익이 저의 고려 사항은 아니었어요. 왜냐하면 그때는 회사에서 매달 받는 월급이 저한테는 지속 가능한 수익이었으니, 그게 갖고 싶으면 퇴사하지 말아야 한다고 생각했죠. 그런데 지금 생각해보면 그 월급이라는 것도 사실은 지속가능하지 않다고 느껴지거든요. 우리는 입사해서 정년퇴임을 하는 그런 시대에 살고 있지 않잖아요. 월급이라는 것도 결국에 회사가 주고싶을 때까지만 이어지는 그런 돈이라고 생각하거든요. 그러면 지금 단계에서 나는 지속가능한 수익을 만들 게 아니라 지속 가능한 나, 어떤 변화에도 적응하는 나, 어떤 일 앞에서도 맥락을 갖추는 나, 내가 하는 일을 설명할 수 있고, 왜 하고 있는지 알고 있는 나를 만드는 게 더 중요하고 그게 지금 내 단계에서 해야 할 일이라고 생각했어요. 여하튼 365일을 살아냈잖아요. 그럼 이젠 내가 먹고사는 걸 해결하기 위해서 만든 돈을 조금 더 많이, 조금 더 꾸준히 벌 수 있는 방법을 고민하는 게 이 다음 단계에 저한테 놓인 숙제겠죠.

    책은 나의 힘 /
  • 내 생애 단 한번 / 장영희

    "깨어지기 쉽고, 날카로운 모서리를 갖고 있고, 또는 너무 비싸서 아주 조심스럽게 다루어야 하는 장난감은 진짜가 될 수 없어. 진짜가 될 즈음에는 대부분 털은 다 빠져 버리고 눈도 없어지고 팔다리가 떨어져 아주 남루해 보이지. 하지만 그건 문제 되지 않아. 왜냐하면 진짜는 항상 아름다운 거니까." 짝사랑이란 삶에 대한 강렬한 참여의 한 형태이다. 충만한 삶에는 뚜렷한 참여 의식이 필요하고, 거기에는 환희뿐만 아니라 고통 역시 수반하게 마련이다. 우리 삶에 있어서의 다른 모든 일들처럼 사랑도 연습을 필요로 한다. 그리고 짝사랑이야말로 성숙의 첩경이고 사랑 연습의 으뜸이다. 학문의 길도 어쩌면 외롭고 고달픈 짝사랑의 길이다. 안타깝게 두드리며 파헤쳐도 대답 없는 벽 앞에서 끝없는 좌절감을 느끼지만, 그래도 포기하지 않고 끝까지 나아가는 자만이 마침내 그 벽을 허물고 좀더 넓은 세계로 나갈 수 있는 승리자가 된다. 그러므로 젊은이들이여, 당당하고 열정적으로 짝사랑하라. 사람을 사랑하고, 신을 사랑하고, 학문을 사랑하고, 진리를 사랑하고, 저 푸른 나무 저 높은 하늘을 사랑하고, 그대들이 몸담고 있는 일상을 열렬히 사랑하라. 사랑에 익숙지 않은 옹색한 마음이나 사랑에 '통달'한 게으른 마음들을 마음껏 비웃고 동정하며 열심히 사랑하라. 눈앞에 보이는 보상에 연연하여, 남의 눈에 들기 위해 자신을 버리는 사랑의 거지가 되지 말라. 창 밖의 젊은이들을 보며 나도 다시 한번 다짐한다. '불혹'의 편안함보다는 여전히 짝사랑의 고뇌를 택하리라고. 내가 매일 대하는 저 아름다운 청춘들을 한껏 질투하며 나의 삶을, 나의 학문을, 나의 학생들을 더욱 더 열심히 혼신을 다해 짝사랑하리라. 이 책에서 내가 개인적으로 제일 좋아하는 말은 노인이 죽은 물고기를 지키기 위해 혼신을 다해 상어와 싸우며 하는 말, "희망을 갖지 않는 것은 어리석다. 희망을 버리는 것은 죄악이다 It is silly not to hope. It is a sin "라는 말이다. 삶의 요소요소마다 위험과 불행은 잠복해 있게 마련인데, 이에 맞서 '파괴될지언정 패배하지 않는' 불패의 정신으로 하루하루를 살아가는 것은 참으로 숭고하다. 그러나 희망이 없다면 그 싸움은 너무나 비장하고 슬프다. 지금의 고통이 언젠가는 사라지리라는 희망, 누군가 어둠 속에서 손을 뻗어 주리라는 희망, 내일은 내게 빛과 생명이 주어지리라는 희망, 그런 희망이 있어야 우리의 투혼도 빛나고, 노인이 물고기에 대해 느끼는 것과 같은 삶에 대한 동지애도 생긴다. 그리고 그런 희망을 가지지 않는 것은 죄이다. 빛을 보고도 눈을 감아 버리는 것은 자신을 어둠의 감옥 속에 가두어 버리는 자살 행위와 같기 때문이다. 살아가면서 누군가를 미워할 때 그를 '용서해야 할 이유'보다는 '용서하지 못할 이유'를 먼저 찾고, 누군가를 비난하면서 그를 '좋아해야 할 이유'보다는 '좋아하지 못할 이유'를 먼저 찾고, 마음의 문을 꽁꽁 닫아건 채 누군가를 '사랑해야 할 이유'보다는 '사랑하지 못할 이유'를 먼저 찾지는 않았는지. 나는 '구심' 병을 손에 꼭 쥐고 하느님께 용서를 빌었다. "주님, 제 육체 속의 심장은 멀쩡히 뛰고 있지만 제 마음이 병들었나이다. 제 마음을 고쳐 주소서. 저에게 '구심救心'의 은총을 베푸시어 희고 깨끗한 마음을 주소서." <주홍 글씨>라는 소설에서 너새니얼 호손은 이 세상에서 가장 '용서받지 못할 죄unpardonable sin'는 다른 사람의 '마음의 성역'을 침범하는 일이라고 말했다.

    책은 나의 힘 /
  • 지식인의 서재 / 한정원

    "글을 쓰는 게 중요한 게 아니고 글쓰기를 통해서 이 세상의 모든 사물들이 귀하다는 것을 깨닫게 되는 거야. 왜냐하면 세상을 자세히 보아야 글을 쓸 수 있거든. 자세히 본 것을 쓰다 보면 더욱 자세히 보여. 그러면 급속도로 발전이 돼지. 정신적으로 풍요해지는 거야. 글쓰기가 중요한 이유는 세상 사람들에게 드러나는 모든 것이 글이기 때문이야. 자기 분야에서 앞서가는 사람들은 모두 글을 써. 글을 쓰기 때문에 앞서가는 거야. 글쓰기란 세상을 보는 눈을 갖게 하고 그것을 표현하는 힘을 주지." (김용택) 집안이 나쁘다고 탓하지 말라. 나는 아홉 살 때 아버지를 잃고 마을에서 쫓겨났다. 가난하다 말하지 말라. 나는 들쥐를 잡아먹으며 연명했고, 목숨을 건 전쟁이 내 직업이고 내 일이었다. 작은 나라에서 태어났다고 말하지 말라. 그림자 말고는 친구도 없고, 병사로만 10만, 백성은 어린애, 노인까지 합쳐 2백만 명도 되지 않았다. 배운 게 없다고, 힘이 없다고 탓하지 말라. 나는 내 이름도 쓸 줄 몰랐으나 남의 말에 귀 기울이면서 현명해지는 법을 배웠다. 너무 막막하다고 그래서 포기해야겠다고 말하지 말라. 나는 목에 칼을 쓰고도 탈출했고 뺨에 화살을 맞고 죽었다 살아나기도 했다. 적은 바깥에 있는 것이 아니라 내 안에 있었다. 나는 내게 거추장스러운 것을 모두 깡그리 쓸어버렸다. 나를 극복하는 순간, 나는 징기스칸이 되었다. 그녀(김진애)가 꿈꿔온 인생은 자신의 스케쥴을 자신의 의지대로 행하며 사는 것이다. 그리고 그녀는 지금 야성을 가지고 속도감을 즐기며 살고 있다. "젋음의 특권은 실패입니다. 저는 실패한 게 훨씬 더 많아요. 실패를 한다는 것은 아주 중요한 경험이죠. 온몸을 던지고 나야 실패도 다가오니까요. 깨져보는 건 젊을 때 해봐야 돼요. 그래야 클 수 있어요." 그(이주헌)는 미술책을 읽다가 어려워 읽기 힘들거든 책에서 글을 빼고 그림만 보라고 했다. 그리고 '자기 내면의 소리에 집중하라'고 했다. 다른 사람들의 평가나 이야기에 좌우되지 말고 자신의 느낌을 지휘하라는 것이다. 예술에 감동할 줄 아는 사람은 책을 읽을 때나 사람과 대화할 때 내용의 본질을 받아들이는 깊이가 다르다. 책을 통해서, 예술을 통해서 감성을 기른 사람은 아주 작은 것에도 기쁨을 맛보고 행복을 느낀다. 그렇게 자주 행복과 충만함을 느끼게 되면 어려움 속에서도 삶에 대해 불평하기보다는 감사하게 된다. 그런 삶을 살고 싶지 않은가?

    책은 나의 힘 /