글쓰기 메뉴

할일관리 원더리스트

예전에 그러니까 대략 8~9년전에 todoist 라는웹서비스가 내 첫번째 태스크매니져였지. 스펠 확인하려고 검색해보니 지금도 여전히 서비스 중이고 훨씬 커지고 발전된 모습이네.


내가 기억하는 투두이스트(!)는 개인개발자가 Ajax(비동기 요청 처리방식)로 전체 서비스를 만들었고 (개발자 아버지가 입원 중이시라 간병하며 시간이 남아 만들었다는 스토리가 어디 소개됐었는데) 당시 웹2.0과 심플한 디자인이 인기였던지라 흐름을 타고 입소문이 나서 꽤 인기를 끌었었지.


아무튼 요점이 그게 아니지. 그 후로 직접 만들었던 서비스 하나를 포함해 4~5가지 매니져를 거쳐서 현재는 wunderlist 의 도움을 받는 중.


n디바이스 대응. 프로젝트 관리. 반복 설정. 알림 등등 대부분의 기능은 대부분의 매니져가 갖고 있는 비슷비슷한 정도로 느껴지는데 (사실 대부분의 기능을 내가 쓰지 않지) 내가 맘에 드는건 "원더리스트" 라는 모험심을 자극하는 이름과 인민별 같은 빨간 태그에 별이 그려진 아이콘.


태스크매니저는 업무툴이라 (자발적인 선택이라해도) 태생적으로 부담스러운 도구. 한마디로 꼴도 보기 싫어서 켤 수가 없다능..


왜 그런지 모르겠지만 원더리스트는 그 부담이 덜해서 잘 쓰고 있는 중. 나처럼 태스크매니저 켜는데 심각한 부담을 갖고 있는 사람이 있다면 한번 써보면 좋을 듯.


screenshot_2015-09-21-13-57-33.png


핸드폰에 있는 사진 업로드해볼라고 글 쓴다는건 비밀.

어디서 왔지?
[["synd.kr", 11], ["unknown", 640], ["www.google.co.kr", 13], ["www.google.com", 1]]
다른 글들
2 3
Square

틈이 없네

큰숨 한 번 쉬고 기지개도 켜고 주위도 둘러보면 좋겠는데 의자에서 일어나는 시간도 부담스럽네.
1 3

졸린데

괜히 끄적..
자야하는데 그냥 뭔가 쓰고싶고
근데 뭘써야할지..
자야..겠지요?
이런 쓰잘데기없는 글 막써도 부담없는 여기좋아
아, 흔적인가보다
쓸말없는데 그냥 들어와 흔적을 남기고싶었나보다
정들고있나봐, 이 공간
0 0

우분투 14.04 wkhtmltopdf 설치

wkhtmltopdf 는 HTML 페이지를 PDF 로 만들어주는 오픈소스 도구로 Qt WebKit 엔진을 사용한다. 자매품인 wkhtmltoimage 는 같은 방식으로 HTML 을 다양한 형식의 이미지로 변환시켜준다.
Ubuntu 14.04 에서 apt-get 으로 wkhtmltopdf 패키지를 설치할 수 있으나 Qt 가 wkhtmltopdf 에 맟춰 패치되지 않았다면 몇 가지 기능이 제한된다. 예를 들면 HTML 에 있는 링크가 PDF 에 사라지는 등의 오류가 있을 수 있다. 관련 옵션은 --enable-external-link 인데 Qt 가 패치되어 있지 않으면 해당 옵션을 켤 수 없다. 
그러니 wkhtmltopdf 홈페이지에서 컴파일되어 있는 바이너리를 다운받아 설치하도록 하자. 만사가 편하다.
* 우분투 서버를 사용하고 있을 경우 X 시스템과 폰트관련 패키지가 설치되어 있지 않다. 이럴 경우 먼저 필요한 패키지와 폰트를 설치하자.
폰트는 마음에 드는 패키지를 찾아 설치하면 되는데 별도의 설정없이 바로 사용할 수 있는 한글 폰트는 unfonts, baekmuk, nanum 정도 되겠다. 각각 패키지는 아래와 같다. (우분투위키에서 CJK 폰트 참고)
은폰트 - unfonts
백묵폰트 - baekmuk
나눔폰트 - nanum
폰트툴과 폰트가 설치 된 후 wkhtmltopdf 다운로드 페이지에서 Ubuntu Trusty (14.04.1) 버전(64-bit)의 .deb 파일을 다운받아 아래와 같이 설치한다. 
설치 후 아래와 같이 확인할 수 있다.
webpage/url 이라는 주소의 웹페이지를 save.pdf 로 변환하는 명령어 예제는 다음과 같다. 자세한 옵션은 man wkhtmltopdf 로 확인할 수 있다.
--print-media-type
스크린 타입이 아니라 프린트 미디어로 PDF를 렌더한다.
--page-size
페이지 사이즈를 지정한다. Letter, A4, A3 등의 형식으로 지정할 수 있다.
* 공식 홈페이지에서 전체 리스트 링크를 제공하고 있으나 현재 사용이 연결이 되지 않는다. 소스에서 확인한 전체 리스트는 이 곳에 적어둔다.
* --page-width, --page-height 로 페이지 크기를 지정할 수 있다 
--dpi
dpi (dots per inch) 값을 지정한다.
-T, -B, -L, -R
상(Top), 하(Bottom), 좌(Left), 우(Right) 여백을 지정한다.
요즘 웹페이지의 PDF 변환이나 이미지 캡처는 요즘 PhantomJS 를 사용한 방식이 훨씬 많이 소개되고 있다. 의존패키지에 대한 고려나 설정에 대한 부담감이 없기 때문일텐데 개인적으로 wkhtmlto* 를 오래전부터 사용하고 있어서 정리해봤다.
2 1

잠이오질안네

어디로인지 가야만하는, 내일을 위해.... 
의무감으로 잠을 청해보지만....
돌아가는 머릿속에 가까워지는건 알람시간. 아침과 마주하는건, 알 수없는 부담감
그래도 화이팅이다^^
2 2

이사

늙긴 늙었나부다
이사를 살면서 엄청 많이 한편인데
이번처럼 이렇게 매번 부담스러웠었나~!?
지루함을 못참는 성격이라 이사가는거 좋아해서
설레기도 하고 새롭기도 하고 은근 신나서
닥치면 바로바로 암생각 없이 좋다고 갔었는데
이번엔 그냥 귀찮고 피곤하네.

이제 정말 나이 들었나부다.
3 0
Square

씬디 업데이트 - 파일로 글쓰기

1. 노트와 연습장, 연필과 펜으로 작성된 아날로그 컨텐츠를 디지털로 변환시키는 최초의 소프트웨어가 뭘까?
  - 접근성과 가벼움으로 승부하는 - 메모장
  - 전통의 워드 프로세서 - MS워드, 아래아한글, 오픈오피스
  - 디지털 네이티브 - 구글 독스, 에버노트, 블로깅 툴 등
2. 한글이나 워드로 작성한 기사를 메모장에 붙여넣었다가 다시 CMS 기사 입력기에 붙여넣고 있어요.
  - 기자들한테 진짜 많이 들은 얘기. 주로 앞뒤의 다른 문제를 설명하기 위한 기초 설명이지.
3. 메모장에 작성한 글을 복사해서 씬디에 올렸는데 앞부분이 잘렸어요.
  - 씬디 사용자에게 받은 피드백. 2번과 같은 구조. 
  - 앞부분이 잘리는 문제는 당연히 코드를 수정해야겠지만 "메모장 복붙" < 이거 해결해야겠다.

그래서 씬디에다가 "파일로 글쓰기"라는 기능을 추가해봤지!
아직까지는 오로지 문서 파일에 있는 "텍스트"만 발라내는 용도로 쓰이고 있어.
하지만 기능이 유용하다고 생각되면 - 사용자의 글쓰기 과정 & 디지털 퍼블리싱 과정에 알맞은 기능이라고 생각되면 - 엑셀 파일을 올릴 경우 표나 차트를 자동으로 만들어준다거나, 문서에 포함된 사진, 비디오 같은 멀티미디어도 옮겨준다거나 하는 쓰임이 추가될 수 있겠지. 
글쓰기 화면 하단에 있는 업로드 영역에 드래그&드랍으로 파일을 떨구거나 "글 불러오기" 버튼을 사용해 파일을 업로드하면 끝!
복붙에서 발생되는 문제와는 또 다른 무시무시한 문제가 있지.
인코딩.
아! 좌절스러워 ㅋㅋㅋ
일단은 문서의 인코딩을 추측해서 자동으로 변환하고 있지만 컨텐츠가 발라지지 않거나 문자가 깨지는 문서들이 꽤 있을 것 같아.
그렇지만! 서비스와 기능은 오픈시켜 사용되지 않으면 발전할 수 있는 기회도 없다는걸 잘 알고 있기 때문에 과감하게 적용! 은 사용자가 적으니 위험부담없이 적용
컴퓨터에 잠자고 있는 글들 올려보세요!
3 3

왔다 내 사랑

치료를 위해 대전에 갔던 아내가 왔다
오자마자 부랴부랴 마트를 간다고
호들갑을떨며 따라 나오란다..
감자도 넣고 당근도 넣고
닭도 넣고....
하나 둘 장바구니가 채워질때쯤
우두커니 소고기 앞에서 서있다
물끄러미 보다가 이내 고개를 저으며 
돌아온다
가격이 부담이 되는거겠지...
남편이 백수니....
오늘 또 가슴으로 울었다
내 생일이라며 오자마자 닭볶음탕을 해줬다
참 맛있는 요리네...
마트서 집에 오는길에 소고기구이 가게안에서
먹는 사람들을 또 물끄러미 처다본다..
하하......
식사후 입에 문 담배 한대가
입가에 씁쓸함을 남긴다...
2 1

email anxiety

이메일 anxiety:

소식이나 결정서를 이메일로 받는시대에 겪는 정신적 증후군.
소식에대한 뒷감당에 대한 부담감인 것이다.
손가락 하나 까딱할 힘도 없이 무기력하다고 생각했는데,

메일이 희소식임을 알고나서,
마구 마구 에너지가 솟구치면서, 
몇 분 만에 바로 운동을 할 에너지가 샘솟는 것을 보면서, 
세라토닌이라는 게 정말 중요한 거구나, 
우울에 지배당하지 말아야지 라는 것을 깨닫고는 한다.
2 2
Square

볼테르의 명언으로 시작된 혼란

처음엔 그냥 좋은 문장 하나 찾았으니 대충 멋있는 척 올려보자였는데 이게 쉽사리 끝이 나질 않는다.
- Voltaire
완벽함에 이르기 위해 작업을 끝내지 못한다면 충분한 상태로 끝난 작업보다 못하다는 해석이 적당하다.

Le meglio è l'inimico del bene
볼테르(Voltaire)의 철학사전(Dictionnaire philosophique)에 있는 내용으로 옥스포드 인용 사전에 수록되어 있다고 함.
2003년 구글 answers 에서 사용자들끼리 레퍼런스를 찾아내는 재미난 쓰레드도 있네.

The best is the enemy of good
좋고 나쁨의 여러 단계에서 사회통념적으로 영단어 "best"가 의미하는 단계를 어디로 보는가에 따라 문장의 느낌의 달라질텐데 나는 "best" 가 극도로 좋다는 표현으로 느껴지지 않아 Perfect가 사용된 문장이 좋다. 
The perfect is the enemy of good

인터넷에 '볼테르'의 명언으로 번역된 문구는 크게 2가지.
최선은 선의 적이다
"선(善)"이 "최선(最善)"에 못 미친 상태인건 맞는 것 같은데 "선"이라는 단어가 그 쓰임에 와닿지 않고 "최선"은 극한의 상태를 표현한다고 느껴지지 않는다. 돌직구같은 아래의 번역이 마음에 든다.

완벽함은 훌륭함의 적이다

그런데 제품을 만들어 사업을 하는 나는:

정말 "완벽함"을 추구하지 않아도 될까?
스티븐 잡스의 아이폰은 완벽함을 추구하는 제품의 아름다움과 강력함을 증명한 결과물이 아닌가?
완벽함을 포기하고 현재에 안주하고자 하는 내게 당위성을 부여하는 변명의 문장인가?
만약 완벽함이 아니라면 내 작업과 제품의 "훌륭함" 단계는 무슨 기준으로 정해야할까?
아, 머리 아퍼.
내가 이 문장에 왜 매달리고 있는거지?
그렇지만 뭔가 생각을 포기해버리면 안될 것 같은 기분.

내 친구 중에 부모님이 크고 아름다운 식당을 하는 친구가 있어.
어릴 때부터 잘 알던 친구고 그 집 부모님들과도 오래 알고 지내서 거기서 뭘 먹고 돈을 내본적이 없지.
하지만 너무 당연하게 갈 때마다 식사를 마치면 계산서를 들고 카운터로 가.
"어머니, 잘 먹었습니다. 여기, 5만원 맞죠?"

"이놈 봐라? 내가 니 돈 받겠냐? 맛있게 먹었으면 자주나 와라."
"어휴~ 어머니, 자꾸 돈을 안받으시니까 부담스러워서 못 오자나요."
"에라, 이놈아! 어여 가고 다음주에 또 와."
그런데 서로가 대사를 바꾸면 아주 골때리지.
"어머니, 저한테 돈 받으실거 아니죠? 또 올께요!"
"5만원이나 나왔는데 또 돈 안내고 그냥 가려고?"
"어휴~ 어머니 언제는 제가 돈 냈어요? 하루이틀 알고 지낸 사이도 아니고."
"아니 이놈아 공짜로 처먹을라면 1~2년에 한두번이나 오던가!"
뻔한 결론이 나와버렸네.
내 제품의 "훌륭함"을 내가 판단할 수 없다는 것.

비유로 든 얘기가 생산자와 소비자의 거래에 대한 얘기라 오해의 여지가 있지만, 여기서 강조하고 싶은 부분은 각자의 입장에서 안전하게 할 수 있는 말이 있다는 것과 어떤 말을 입 밖에 꺼내면 웃긴 놈이 된다는 것.
제품의 사용자들이 제품의 훌륭함과 완벽함을 판단할 수 있는 것이지 내가 제품의 훌륭함과 완벽함을 단정한다는 것이 이미 주제넘은 일인 것 같네.
이쯤에서 다시 한번, 내 사업이 인터넷/온라인 서비스에 기반하고 있음에 감사해야겠네.
이건 조각이나 벽화, 건축이나 공산품과 다르게 명확한 문제를 해결하는 기능들을 작은 단위로 끊임없이 사용자에게 제공하고 실시간에 가깝게 어떤 단계에 있는지 가늠할 수 있다는 점이 정말 감사하네.
제품의 단계가 "완벽함 - 훌륭함 - 충분함 - 부족함 - 쓰레기" 다섯 단계라고 봤을 때 내 제품들은 아직 부족함과 쓰레기 사이를 오가고 있지만 이건 문자 그대로 "단계"인거야.
하나씩 해결하고 한걸음씩 내딛으면 결국 앞으로, 위로 나아갈 수 있는 그런 게임이지.
다들 힘내자구.


영문위키: Perfect is the enemy of good
+) 내가 대체 왜, 어디서 시작해서 어떤 전개로 여기까지 온거냐?
2 1

일상의 반복

어느날 처럼
오늘도 해가 눈을 밝힌다
부스르르 일어나 식사를 하고
첫 담배를 피고
나를 씻긴다..
아내가 설겆이 하는 소리를 들으며
조용히 컴퓨터 앞에 앉는다..
그리곤 구인광고를 본다..
이력서를 넣는다..
익숙함이란 정말 무서운거라 다시 느낀다
좌절이...
내 날개가 뜯기고 찢겨
날마다 흘리는 피눈물이..
이젠 아무렇지않다..
가슴이 찢겨질듯 아파도
아픈데... 아무렇지 않다...
무심코 달력을 본다..
아 월세날이 얼마 안남았네...
조급한 마음이 든다..
중식이밴드 노래를 들으며
다시 마음을 가다듬는다..
가사처럼 내 얼굴을 잊어버렸다..
정말 사랑이란 사치였나..하는
말도 안되는 생각을 해본다..
나에게는 모든것인데...
아내가 설겆이를 끝마치고
쪼르르르 달려온다
황급히 구인광고창을 내린다..
왜인지 몰라도...
아내에게 이런모습도 안보이고싶고
부담을 주기도 싫다
얼마전 집앞에 악세사리 부업이 생겼다..
월요일부터 거기라도 다녀와야겠단다..
월세라도 벌면 내 부담감이 줄어들지 않겠냐고한다..
오늘도 가슴으로 울었다...
오늘은 피눈물을 흘렸다..
한없이 멈추지않고 가슴에서 피눈물이 흐른다..
찢기고 뜯겨 상처만 남은 내 날개가
아물생각을 하지않는다..
다시 날개가 돋아날 생각도 하지않는다..
이젠 그 누구를 원망하는거도 지쳤다..
공사판에서 노가다판에서 버텼던 내가..
GOP에서 2시간씩 자며
영하 30도의 날씨에 
버텼던 내가...
지쳤다.......
그리고 아내를 보며 다시 지친 나를
일으킨다..
아직도 어른 탈을 쓴 어린아이다..
참...
정신을 바짝 차린다..
가슴에 흐르는 피눈물이
따뜻하다..
3 7

몇 가지 제안

일전에 게스트로 글을 남겼었는데 계정 생성해서 첫 번째 글을 남깁니다.
부담 없이 자유롭게 생각, 감정을 표현할 수 있는 공간으로서 끊임없이 발전하기를 바랍니다.
그런 점에서 몇 가지 제안 해드려요
하나, 계정 생성
계정 생성하는 버튼이 따로 없더라구요. 제가 예전에 작성한 글을 찾아서 소유권 주장(?), 계정 생성하기 링크를 누른 후에 계정을 생성했어요. 일부러 의도적으로 버튼은 안만드신건가요? 게스트 입장에서 좀 더 자유롭게 글을 남기라는 의미로요? 개발자님의 의도는 잘 모르겠지만 처음 들어오는 사람은 약간 당황할 수 있을 것 같아요.
(아니면 멍청한 제가 계정 생성 버튼을 못 찾는 것일 수도 있구요!)
둘, 계정 이름
현재 계정 이름이 agent로 되어 있잖아요. 제가 사용하던 어떤 커뮤니티에서는 익명 게시판 닉네임이 글을 쓸때마다 자유롭게 바뀌더라구요. 예를 들어 "못생긴호랑이", "용기있는거북이" 이런식으로요. 음, 계정이 생성되면 "agent숫자"로 계정명이 부여되는데 그게 관리 차원에서 더 쉬울수도 있겠죠. 그런데 약간 좀 딱딱한 느낌이 들어서요. 랜덤으로 이름이 정해지는 것이 힘들다면 agent 대신에 "신디요원"이라든지 뭔가 귀여운 계정명으로 바꾸시는 건 어떨까요?
(단순히 제안입니다. 개발자님의 개발 의도를 충분히 존중합니다!)
끊임없이 발전하는 신디를 응원하며.
1 0

리디렉션 페이지에 구글 아날리틱스 코드 집어넣기

리디렉션 되는 페이지에 구글 웹로그 분석기 추적 코드를 넣고 meta 태그나 스크립트로 페이지를 이동시키면 데이터 수집이 완료되지 않은 상태로 페이지가 종료되고 로그가 남지 않는 문제가 있지.
리디렉션을 5초 정도로 잡아도 무관하다면 그냥 5초로 잡고 돌려도 OK.
리디렉션 타깃 페이지가 같은 도메인 아래에 있다면 타깃 페이지에 추적 코드가 있는 것 만으로 레퍼러로 처리되어 데이터가 수집되니까 이것도 OK.
하지만 리디렉션을 외부 사이트로 보내야하고 1~5초 정도 사용자를 묶어두는게 부담스럽다면 추적 코드의 동작이 완료된 후 리디렉션을 실행하면 되겠지.
2013년부터 사용된 Google Universal Analytics 추적 코드라면 hitCallback 콜백을 사용하면 되고 혹시 2013년 이전 코드라면 글로벌 오브젝트인 _gaq 큐에 함수를 밀어넣으면 된다네.
추적 코드 어딘가에 _gaq 가 있으면 그냥 오래된 코드, _gaq 가 없고 다음과 같이 추적코드가 시작된다면 Universal.
오래된 버전에서는 아래처럼 리디렉션이 가능
Universal 버전에서는 아래처럼 hitCallback을 사용할 수 있음
이상 끝!