[글쓴이:] changwoo

  • 매듭 묶기 연습 시작.

    드디어 매듭 묶기를 시작했다.

    취미 생활은 여러 가지인 것이 좋은 것 같다. 하나에 몰두해 보고, 또 조금 싫증나면 바로 다른 취미로 넘어갈 수 있어 신선한 리듬이 계속 될 수 있으니까.

    매듭 묶기를 실천함에 있어 느낀 점이 참 많다. 간단히 기록만 하려다가, 이참에 조금 썰을 적어 놓기로 하자.

    todoist.com이 큰 역할을 했다. 매듭을 묶는다는 첫 발을 띄우기 위해 작은 일로 조각내고, 마감 기한을 정하고, 실천하면 할 일 항목에 체크를 하여 일이 진행되고 있음을 인지시켰다. 이 앱은 내가 하고 싶은 일을 기록하여 잊지 않도록 도와주었다. 그리고 이 일의 마감기한을 설정하고, 마감기한이 임박하거나 지나면 그 일을 하려고 계획하고 있었음을 계속 알려 주었다.

    사실 “매듭 묶기”를 취미로 두자고 기록한 후 한 달이 지나도 매듭 묶기를 시작하지 못했다. 그렇게 시일이 지나도 일을 시작하지 못하자 나는 왜 이 일을 시작하지 못하는지에 대해 궁금증이 생겼다.

    되게 간단한 일인데? 왜 자꾸 잊어버리고 하지 않는 것일까? 왜 자꾸 귀찮아할까? 그것은 간단해 보여도 실은 나에게는 “쉽지 않은 일”이었던 것이다. 생전 처음으로 시작하는 일, 누구의 도움도 없이, 또 절박한 동기 없이 시작하는 일이다. 처음 하는 행동은 심리적으로 매우 거부감을 주는 일임을 잘 알지 못했었다. 정녕 간단하다면 바로 했겠지, 왜 차일피일 미루었겠는가? 귀찮음 뒤에는 간단해 보여도 심리적으로는 그다지 넘기 어려운 큰 산이 있다는 뜻인 것이다.

    그래서 나는 “매듭 묶기” 취미 할 일을 찬찬히 뜯어 생각해 보았다. 생각해 보니 이 목표는 매우 두루뭉술하다는 것을 깨달았다. 매듭 묶기를 대체 어떻게 시작해야 할지에 대해서는 전혀 언급되지 못한 것이다.

    그래서 나는 이 목표를 게임처럼 어떤 메인 퀘스트로 생각하고, 이 목표를 해결하기 위한 서브 퀘스트들을 생각해 보았다.

    매듭을 묶기 위해서는 줄이 필요하다. 예전에 빨랫줄을 매듭묶기 연습을 위해 사 두었다. 서랍에 처박아 두었다. 그러면 잊어버린다. 중요한 아이템을 습득해 직장 책상 위에 두었다. 언제든 줄을 보고 다른 서브퀘스트를 시작하기 쉽게.

    줄을 놔 둔다고 매듭 묶기를 시작하는 것은 아니었다. 따라해 볼 교재가 필요하다. 이것은 간단하다. 내 페이스북 저장된 페이지에는 이미 작년이나 제작년부터 “해 봐야지” 하면서 놓아둔 매듭법 사진이 있다. 이 사진을 휴대전화에 저장해 두었다. 나중에는 하나 프린트해서 가지고 다니리라.

    빨랫줄이 책상에 있다고 해도 매듭 연습을 바로 시작하지는 못했다. 이것이 진짜 제대로 취미가 되려면 자꾸 내가 줄에 노출되어야만 한다는 사실을 깨달았다. 빨랫줄을 잘라서 호주머니에 넣어야 한다. 할 일에 넣었다.

    이렇게 작은 서브퀘스트를 조직하자, 일이 풀리기 시작했다. 줄을 적당한 크기로 2개 잘라 호주머니에 넣었다. 먼저 줄을 사 두고, 이것을 보기 쉽고 손닿기 좋은 곳에 놔 두지 않았다면 또 생각만 하고 실천하지 못했을 일이다. 그제서야 나 스스로도 ‘매듭짓는 연습을 해야 한다’는 분위기가 생가기 시작했다. 화장실 갈 때 휴대전화와 매듭을 챙겨 보았다. 화장실에서 일을 보는 동안 휴대전화에 저장된 매듭 사진을 보고, 쉬운 것 하나를 골라 연습했다. 쉬운 거라 바로 습득이 된다. 이제야 성공이다. 매듭짓는 연습을 시작하게 된 것이다.

    이 간단한 일을 시작하는데 드는 수고가 이렇게 많았다니?! 간단하지만 간단하지만은 않은 일이었구나. 나 스스로 너무 자만한 것이다. 습관을 만드는 일은 단순히 보기에는 간단하지만, 사실 알고 보면 꽤 많은 심리적인 벽을 부수고 허무는 과정이 필요함을 깨달았다. 어떤 일을 하고는 싶은데 막상 귀찮음과 게으름에 부딫쳐 일을 시작하지도 못하고 있다면 생각해보자. 그 귀찮음과 게으름을 뛰어넘을 만큼 심리적인 에너지(동기)와 시간이 수반되면 그걸 뛰어넘고 실천할 것이다. 그러나 만약 그렇지 못하다면 생각보다 그 일을 수행하기 위한 전제 조건, 예를 들면 왜, 무엇을, 어떻게 그것을 해야 하는지, 그 일을 하기 위해 꼭 필요한 것은 무엇인지, 이런 것들을 무시한채 무작정 행동고 있는 것이 아닌지 점검해 봐야 한다고 생각했다.

     

     

     

  • nonce 필드 때문에 캐싱이 안 된다고?

    뭐, nonce 필드 때문에 캐싱이 안 된다고?

    사실이다. nonce 값은 사이트의 보안을 위해 필수적이다. 그러나 잘못 쓰면 페이지 캐싱이 되지 않아 사이트 성능에 큰 손실을 줄 수 있다.

    (더 보기…)

  • 2017 웹 어워드 수상작 발표

    회사 동료로부터 ‘2017 웹 어워드 수장작 발표’라는 웹페이지(http://www.i-award.or.kr/Web/Prize/2017/Awarded01.aspx)를 받아 보았다.

    이 중에 워드프레스로 만들어진 것은 몇 개나 있을까 궁금하여 급히 알아 보았다. 워낙 급하게 조사한 거고, 중간에 접속도 원활하지 않은 점도 있어서 정확한 것은 아니지만, 추정컨데 총 114개 사이트 중 7개가 워드프레스였다. 약 6%.

    다음은 수상작 중 워드프레스 기반으로 보이는 목록이다.

    – LG챌린저스 http://www.lgchallengers.com/
    – LG 옳은미래 http://www.lgfuture.com
    – LG전자 공식 블로그 'Social LG전자' http://social.lge.co.kr/
    – 스텝스 앱 홍보 웹사이트 http://steps.plus/
    – 카페 바라보다 https://baraboda.com
    – 서경대학교 예술종합평생교육원 웹사이트 https://lifeedu.skuniv.ac.kr/
    – 랑벨 https://lanbelle.com

    엘지 사이트가 굉장히 많네, 엘지가 워드프레스를 굉장히 적극적으로 이용하고 있는 것이 보인다. 수상 여부를 떠나서 엘지 이노텍 사이트도 워드프레스이고…

  • 게토리아 피자

    게토리아 피자

    여기 피자는 정밀 맛있어!

  • Uncode 테마 + KBoard 게시판은 성능 저하를 일으킬 수 있습니다.

    불타는 금요일을 보내고 토요일 새벽까지 디버깅을 한 결과입니다.
     Uncode 테마와 KBoard 게시판을 사용할 경우 워드프레스의 성능 저하를 유발시킬 수 있습니다. 둘을 따로따로 쓰면 문제가 없지만 같이 사용하는 경우 사이트에 로딩이 생기며, 특히 비주얼 컴포저 사용시 심각한 로딩 시간이 생기게 됩니다.

    원인은 KBoard의 세션과 Uncode 테마의 ‘list_images‘ AJAX 동작 때문에 발생합니다. KBoard의 메인 파일인 kboard/index.php 파일의 초반에는 session_start()로 세션을 시작하는 구문이 있습니다. 그리고 이 세션은 KBoard 곳곳에서 활용됩니다.

    한편 Uncode는 list_images라는 ajax 액션을 통해 uncode_list_images()라는 함수를 동작시킵니다(uncode/core/inc/admin.php: 1086). 이 함수는 무려 모든 이미지 파일을 불러와 그 이미지 파일의 용량을 계산합니다. 그리고 아래와 같은 메시지를 응답으로 넘깁니다.

    The Adaptive Images system is using 87.6M of the 6.29G space left.

    JSON 포맷이 아닌, 그냥 단순 텍스트 응답으로 날아옵니다. 이 응답이 자바스크립트 같은 곳에서 프로그래밍적으로 유의미한지는 확인하지 않았으나, 그렇게 보이지는 않습니다.

    문제는 이미지의 양이 많아질 때 터집니다. 제가 작업 중인 사이트는 이미지 파일만 1만개에 가깝게 유지하고 있습니다. 사이트의 용량만도 기가바이트급입니다. 언코드는 무식하게도 이 1만개에 육박하는 이미지를 매번 관리자 화면 로딩시 별도의 AJAX 요청을 통해 모두 쿼리로 불러와, 용량을 계산하고, 위 메시지를 출력하고 있던 것입니다.  이 계산을 위해 대략 수 초, 심하면 저의 경우처럼 30~40초까지 걸리기도 합니다.

    이제 이 상태에 KBoard가 끼어들면 문제가 정말 심각해집니다.  KBoard는 로딩될 때마다 세션을 실행합니다. 세션에는 한 번에 하나의 연결만 접근할 수 있으므로 둘 이상의 연결을 동시 처리할 수 없습니다. 그런데 언코드는 파일 용량을 계산하는 AJAX를 페이지를 부를 때마다 자동으로 실행합니다. 병목구간이 발생하는 것입니다.

    비주얼 컴포저로 각 위젯을 편집 버튼을 누르면 각 UI 정보는 AJAX를 통해 얻어 옵니다. 그러나 이미 이미지 용량 계산 때문에 다른 AJAX 요청에는 응답할 수 없는 상태입니다. 그래서 꽤 오랫동안 로딩이 걸리게 되는 것입니다. 아마 다른 페이지에 접근할 때도 마찬가지로 로딩이 심하게 발생할 수 있을 것입니다.

    문제를 해결하려면

    1. Uncode와 KBoard를 같이 쓰지 않는다.
    2. 같이 써야 한다면 Uncode의 이미지 계산하는 부분, uncode/core/inc/admin.php 파일의 1086번째 줄 부근의
      /* AJAX call to load all images */
      add_action( 'wp_ajax_list_images', 'uncode_list_images' );

       부분을 주석 처리.

    3. 코어를 건드리는 것은 부담스러우므로 차일드 테마나, 별도의 플러그인을 생성.
      add_action( 'plugins_loaded', 'my_uncode_kboard_fix' );
      
      function my_uncode_kboard_fix() {
        if( has_action( 'wp_ajax_list_images', 'uncode_list_images' ) {
          remove_action( 'wp_ajax_list_images', 'uncode_list_images' ) ;
        }
      }

    매번 이런 용량 계산을 하는 언코드도 문제지만, KBoard도 굳이 세션을 써야 했나 생각이 듭니다.