글쓰기 메뉴

씬디에 대해서

씬디는 "민주적 글쓰기"를 위한 환경이 필요하다는 생각을 배경으로 시스템이나 기술의 측면에서 내가 기여할 수 있는 부분이 어떤 것이 있을까라는 고민의 결과물입니다.

"민주적"이라는 표현을 조금 더 쉽고 명확하게 다듬을 필요가 있겠습니다만 글에서 사용된 의미는 "누구나 자신의 생각과 의견을 나눌 수 있는 공간이 필요하다" 입니다.


1. 익명

계정이 없어도 글을 쓸 수 있고 기본적으로 익명으로 사용되는 이유는 아무얘기나 책임감없이 해도 좋다는 뜻이 아니라, 글을 읽는 사람이 글쓴이의 영향력에서 벗어나 글을 글로 받아들였으면 좋겠다는 생각의 일차원적 해석입니다. (오글거리는 글을 누구도 모르게 쓰고 싶다는 개인적인 욕망도...)


반대로, 글쓴이의 배경과 역사가 글에는 없는 다양한 의미를 가질 수 있다는 점도 생각하고 있기에 머지않아 닉네임이나 프로필사진, 자기소개 등으로 자신을 드러내는 것이 가능하도록 할 것 입니다.


그리고 하나 더.

"작가"와 "작품"이라는 단어가 사용되는 자리에 "사람"과 "글"을 넣고 싶습니다.

작품을 만들기 위한 글쓰기가 아니라 글을 쓰기 위한 글쓰기였으면 좋겠고 글빨이 있거나 없거나, 사회적 명성이 있거나 없거나 누구나 글을 쓸 수 있었으면 좋겠습니다.


2. 디자인과 컨셉

심심하고 깊이 없는 단순한 디자인은 디자이너가 없어서 글을 쓰고 읽는데 집중시키고 싶다는 생각의 표현이고 두루뭉실한 컨셉 - 글이 쓰고 싶을 때, 글 쓸 곳이 없을때 - 은 마케터가 없어서, 글빨이 부족해서 내용과 용도에 제한이 없다는 생각을 전달하고 싶어 사용하고 있습니다.


+)

"누구나 작가가 될 수 있습니다"가 아니라, "글을 쓰는데 자격이란게 있을리 없다", "너는 이미 충분하다", 라는 메시지를 전달하고 싶고, "작품이 되는 공간"이 아니라 "많은 사람들의 생각이 담겨있는 공간"이라는 메시지를 전달하고 싶은데 간단하고 멋지게 표현하지 못하겠습니다. 좋은 생각있으시면 좀 도와주세요.


3. 목표 (2015. 11~)

"민주적 글쓰기" 라는 목적을 이루기 위한 현재의 목표들은 다음과 같습니다.

1) 사용자 수 20,000% (200배) 증가

    에.. 이것은 서비스의 시작 시 사용자가 저 혼자 였으니 200명이 목표라는 얘기입니다...

2) 팀 구성

    민주적 글쓰기 공간의 필요에 공감하는 누구나를 대상으로 5명+ 정도의 팀을 구성

    가진 것도 없고 수익도 없으니 씬디의 지분을 나눠주고 종신계약! 모셔야지  

    관심있으신 분께선 hah@codemakes.com 으로 이메일 ㄱㄱ

3) 다른 목표는 사용자와 팀이 꾸려지면 ㄱㄱ!

    길게는 3개월, 짧게는 2주일 정도로 달성가능한 목표들을 세워야




소설을 써야겠다면 써라. 하지만 돈을 버는 건 우연한 사고라고 생각해라. 보상은 쓰는 것 자체로부터 얻어라. - 펄 S. 벅


pearl_buck.jpg



어디서 왔지?
[["synd.kr", 594], ["search.naver.com", 1], ["m.facebook.com", 30], ["unknown", 2547], ["www.google.com", 2], ["lm.facebook.com", 1], ["www.google.co.kr", 6], ["www.facebook.com", 20], ["m.search.naver.com", 1], ["www.synd.kr", 1]]
다른 글들
1 2

무명씨 인사합니다.

새벽에 내린 하얀 눈에, 첫 발을 내딛는 장난꾸러기 아이처럼,
하얀 벽에 무언가 낙서하고픈 그런 장난기 가득한 얼굴로,
이 글을 남겨 봅니다.
무명씨 인사드립니다.
6 1
Square

씬디 시즌투를 시작한다

시즌1이라는게 없었는데 시즌2를 시작한다니 놀랍군.
어쨋든 시즌2는 다음과 같이 요약됨.
숨겨진 감성이든
누군갈 욕을하든
알게된 지식이든
맛있는 사진이든
자꾸쓰면 잘써진다.
잘쓰려면 자꾸쓰자.
글쓰기는 잔근육빨.
0 0
Square

밤에 드는 생각

졸리다 피곤하다
그런데 잠이 안온다
왠지 차가울것같은
달이 하늘을 비추는 밤에 말고도
누가봐도 뜨거운
해가 하늘을 비추는 낮이 있는데
낮에는 꼭 안 떠오르던
여러 잡 생각들
올 듯 말 듯
내 잠이 떠났다
꼭 '밤'이어야만 하는거니
1 1
Square

[3분 복붙] 기사면 랜딩 PV 2배로 올리기.
브라우저 뒤로가기 제어.
이딴거 만들지 말자.

대부분의 서비스가 보다 많은 활동 사용자를 목표로 함은 분명하다.
하지만 얼마나 많은 활동 사용자가 있는지를 가늠할 수 있는 지표에 대한 목표설정은 좀 다른 얘기라고 생각한다.
심지어 그 목표의 달성을 위한 실현 과정이 사용자들을 열받게 만든다면 이 얼마나 근시안적 추태인지...
PV (Page View, 페이지 조회수) 에 대해 강한 집착을 보이는 국내 언론사들이 근래 "뒤로가기"가 실행되는 경우 이전 페이지로 보내지 않고 메인페이지로 이동되도록 하는 기능을 속속 도입하고 있더라. (좀 됐지.. 내가 잠수였던거지..)
사용자 입장에선 개빡치는 UX. 
그렇지만 남들이 한다니까 자기들도 해달라는 클라이언트의 등장은 당연지사.
해당 기능을 도입한 사이트들을 둘러보니 대부분 광고대행사 등이 제공한 스크립트를 사용하는 것 같더라.
메인페이지를 거치는 것도 짜증나는데 그 중간에 광고까지 껴있으니 개짜증..
이딴거 누가 안만들면 좋겠는데 일개 개발자가 뭘 할 수 있겠냐 고민하다가...
클라이언트에게 만들어준 간단한 스크립트를 모두에게 제공하고 너도나도 다들 도입해서 더 많은 사용자들이 더 빠르게 빡돌게 만들면 슬슬 이딴 쓰레기 같은 기능을 버리지 않을까라는 골때리는 결론에 도달했다.
0.
jQuery 를 사용하고 있다고 가정한다.
1.
아래의 코드를 기사 페이지 등 기능이 동작될 페이지에서 로드되는 js 파일에 추가한다.
3번 라인 정규식 패턴안의 synd\.kr 부분은 자신의 도메인으로 변경한다.
2.
기능이 동작될 페이지 HTML 코드 사이에 아래의 코드를 삽입한다.
완성!
코드는 단순해서 쉽게 이해할 수 있겠지만 몇몇 부분을 설명해보자면...
1. pushState 이후에 replaceState 를 다시 콜하는 이유.
pushState 만으로 history 를 조작할 경우 firefox 에서 백버튼이 골때리게 반복된다.
external > page > main > page > main > external
replaceState 를 다시 콜하면 아래와 같이 의도한대로 동작된다.
external > page > main > external
2. popState 이벤트를 사용하지 않고 hashChange 를 사용하는 이유
페이스북 앱 등 in app browser 를 사용할 때 해쉬가 없는 경우 뒤로가기 실행시 popState 이벤트가 발생되지 않음
해쉬를 추가해야 뒤로가기 실행 시 기존 URL (해쉬없는) 로 페이지 변화없는 이동이 발생하고 이 타이밍에 hashChange 가 콜 됨.
또한, Safari 9버전 이하에서 popState 가 지멋대로 fire 됨.
3. 이건 좀 쓸데없는 설명이지만 location.href 는 history 에 기록되고 location.replace 는 history 에 남지 않기 때문에 replace 를 사용해야함.
지원브라우저
웹이고 모바일이고 html5 history api 를 지원하는 브라우저 (http://caniuse.com/#search=history) 에선 기본적으로 모두 동작된다고 기대할 수 있으나 아이폰 크롬에서 동작안됨.
그 외 페이스북 앱 등 인앱에서 웹뷰를 사용하는 경우도 정상 동작.
Tested.
Microsoft Edge.
Microsoft IE 11.
Firefox 52.x (Windows)
Firefox 47.x (Linux)
Firefox 52.x (Mac)

Firefox 52.x (Android)
Firefox 6.x (iOS)
Chrome 57.x (Windows)

Chrome 48.x (Linux)
Chrome 56.x (Mac)

Chrome 57.x (Android)
Chrome 57.x (iOS) *동작안됨
Safari 10.x (Mac)
Safari 10.x (iOS)
Android 6 browser 4.x
Facebook App
자 이제 자리에서 일어나서 팀장이든 부장이든 상사에게 "저희 PV 를 2배로 올리겠습니다!" 라고 보고하고 보다 많은 사용자들의 빡을 돌려(?) 주삼. 
1 1
Square

SSL 인증서 설치 및 적용
스마트폰 ssh 접속으로 5분만에 완료?!!?!
그것도 무료??!!?!??!

이건 누구의 얘기도 아닌 제 얘기. 제가 씬디에 https 를 적용하기 않고 버틸 수 있던 합리적(!) 이유들.

하지만 계속 눈에 밟히는....
그리고 괜시리 갖고 싶은 녹색 자물쇠
그리고 오늘.. Let's encrypt 와 EFF 의 Certbot 으로 인증비용없이 뻥안치고 스마트폰으로 5분만에 SSL 도입 끝.
물론 후속 설정들과 이미지, 외부 소스 등에 대한 url 점검과 설정이 필요했지만 이건 레알 신세계.
근데 이거 나만 몰랐어???
불과 몇달전에도 클라한테 인증서 구매시키고 서버세팅했었는데???
블로그 참 열심히 하시는 존경스러운 outsider 님이 2015년에 베타를 경험했던 포스팅은 여기.
이후 EFF 에서 Certbot 에 Apache, Nginx 등의 소프트웨어와 서버 OS 를 플러그인으로 개발하면서 지금은 서버설정까지 Certbot 이 완료시켜주고 있음.
설치는 EFF Certbot 페이지에 가서 자신의 서버와 웹서버를 선택하면 나오는 메뉴얼대로 (대략 5 ~ 7 커맨드) 하면 끝.
난 심지어 지하철에서 스마트폰으로 ssh 연결해서 설정 끝냈음. ㅇㅇ
내 케이스는 nginx / ubunt 14.04 LTS 로 실제 설치 커맨드 히스토리는 아래와 같음. 아래가 전부임.
이렇게 하면 1) 이메일 주소 입력하세요. 2) 이메일 수신 OK? 3) (서버레벨에서 확인된 도메인 중) 어떤 도메인 쓸꺼임? 4) https 만 씀? 80도 같이 씀? 이렇게 4개 물어보고 답하면 된다.
이후에 nginx 에서 http 접속을 https 로 리디렉션 시키던지 Rails 에서 모든 연결에 ssl 을 적용하는 등의 설정을 하면 됨. 이건 별도의 글로 작성.
이제 Let's encrypt 라는 회사를 살짝 알아보자.
리눅스 재단 (Linux Foumdation) 과의 협력프로젝트라고 사이트 상단에 '이미지'가 박혀있는데 어떤 관계인지는 확인하지 못했다.
ISRG 라는 캘리포니아의 기업에서 "HTTP" 보안이 기업들과 사용자들의 비용절감에 직간접적인 도움이 된다는 생각으로 시작했다고한다.
기본적으로 ACME (인증관리자동화환경) 을 보고 있고 실제로 해당 목적을 훌륭하게 수행하는 솔루션이 있다. letsencrypt 에서 개발하다가 현재는 EFF 에서 개발하고 있으며 패키지이름은 Certbot. 인증절차 및 인증서 설치 이후 갱신을 "명령어 하나로" 처리해준다.
SSL CA 로 중요한것은 얼마나 많은 주효한 클라이언트가 이를 인증된 CA 로 받아들이는가 하는 부분인데 해당 목록은 이곳 링크에서 확인할 수 있고 파폭 2.0+, 크롬, 익스 XP3+, 엣지, 안드 2.3.6+, 맥 사파리 4.0+, iOS 사파리 3.1+ 등등 그냥 믿고 사용해도 되는 수준이다.
또 하나는 letsencrypt 의 생존력인데.. 인증서가 무료다보니 기업의 유지가능성도 살펴보는게 좋겠다.
기업 스폰과 기부금으로 운영되는 것으로 보이며 공식홈페이지에서 스폰서들은 소개하고 있다.
문서상으로 년간 30만불(3년유지) 또는 35만불을 지원하는 플래티넘 스폰서는 mozilla, Akamai, SISCO, EFF, OVH, chrome 등의 6개사이고 그 외 IdenTrust,  포드재단, 페이스북, 디지털오션, 볼터, 쇼피파이 등 다수의 스폰서들이 있다.
역시나 결론은 그냥 믿고 쓰면 되겠군이라는 결론 ㅋㅋ
EFF 는 Electronic Frontier Foundation 의 약자로 한국위키 이름이 "전자 프런티어 재단" 이다.

뭔가 틀리진 않았지만 우습달까?
EFF 는 '디지털 월드' 에서 사용자들의 자유를 지키기 위해 1990년 설립된 비영리 재단으로 블루 리본 캠페인도 여기서 시작했다고 한다.
물리적으로는 관계되기 힘든 연결고리 없는 사람들과 조직이 어느날 나에게 직접적으로 혜택을 주는 일들이 많아지는게 참 재밌고 고마울 뿐이다.

진짜 고마우면 Donate! 
Support Let's encrypt
Support EFF Certbot
2 4
Square

차별이 뭔지 못 배웠고
차별금지법도 없고

언젠가 무슨 이유였는지 모르겠지만 별로 친하지 않은 열댓명이 모였다. 다들 놋북을 꺼내놓고 작업도 하고 얘기도 나누고 있었다. 새로 들어온 누군가가 크고 까만 놋북을 꺼낸다. 앉아있던 사람 중 하나가 웃음을 터트린다.
"푸하 그거 뭐에요? 와~ 나 윈도우 놋북 진짜 오랬만에 봐. 거기서 개발 잘 돼요? 여기도 다 맥이고 요즘 만나는 사람들은 다 맥 쓰던대"
내가 소심하다고 생각해본적은 없는데 가방속에 들어있는 놋북을 꺼내려다가 슬며시 다시 집어넣었다. 나도 윈도거든. 
"어? 형도 윈도써요? 개발 가능?" 
이 지랄하고 깝치면 안 때릴 자신이 없어서 못 꺼내겠더라.
어떤 OS 를 사용하는지를 이유로 자연스럽게 사람을 구분하고 구별하는게 니가 싫고 차별을 막기 위한 교육도 법도 없는 나라도 밉다.
0 0

종이

 종이.
 나무로 만드는 종이.
 나무와 화학 약품과 각종 재료를 사용해 만든 종이.
 우리는 종이를 사용합니다.
 하루에도 몇십, 몇백 장의 종이를.
 얼마나 많은 재료가 사용됬을까.
 얼마나 많은 약품이 사용됬을까.
 얼마나 많은 종이가 만들어졌을까.
4 0
Square

언론사의 위기는 언제 찾아올까?

해외의 미디엄이나 국내의 브런치 같은 "글쓰기 플랫폼" 서비스는 블로그 스피어의 무덤위에서 Feedly, Flipboard 같은 어그리게이션, 구독 서비스들이 풍기는 죽음의 냄새를 양분삼아 Pinterest, Pocket 등의 일부 생산 서비스의 강점을 영양분으로 "완결된 디지털 콘텐츠 경험"을 제공하는 서비스다.

이들은 영상분야의 1인 크리에이터들과 MCN 사업자들의 바탕이 되는 유튜브와 같은 포지션에서 다른 언어를 사용하는 크리에이터들에게 토양을 제공하고 있으며 생산과정이 통합되어 있다는 차별화된 강점도 지니고 있다.
부족한 점이라면 아직 크리에이터들에게 유튜브의 규모로 수익을 돌려줄 수 없다는 정도.
나는 이런 플랫폼의 발전이 지난 5~7년간 듣기만 했던 "언론 위기"의 실체라고 본다.
모든 언론사가(그야말로 모든 언론사가) 카드뉴스의 적절한 사이즈와 가독성이 높은 폰트에 대해 고민하고, CMS와 기술 시스템을 문제의 중심에 놓고 얘기하고 있는 지금 이 순간에도 미디엄과 브런치는 "디지털 콘텐츠 전문가"들을 훈련시키고 있다.
카드스택이니 스노우폴링이니, 인터렉티브니 하는 것들은 애당초 고민의 대상이 아니다. 글쓰기에 집중할 수 있는 환경은 지속적인 생산을 가능케하고 충분히 연결되어 있는 독자들과 이들의 피드백은 어떤 구성과 형식을 취해야할지 체득할 수 있는 환경을 제공한다.
언론사들이 버즈피드나 피키캐스트 같은 미디어에 대해 상상할 수 있는 가장 방어적인 해석을 내놓고 서로 어깨를 두드리며 위로하는 것 처럼 미디엄과 브런치가 뉴스와 무관한 비전문가들의 텍스트 놀이라고 판단하고, 그래서 이들이 경쟁자가 아니라고 생각하는 순간 소문처럼 떠돌던 그 위기가 반드시 찾아 올 것이다.
뜬금없이 개인적인 경험을 애기하자면, 난 저서 활동이 활발한 글쓰기 전문가인 언론인들을 신뢰하고 존경했으며 그 전문가들이 만든 기사에 그들에 대한 신뢰를 투영했었기 때문에 그들이 만드는 뉴스와 소속된 언론사에 대해 믿음을 가질 수 있었다.
하지만 지금.
기자들은 디지털 환경에서 여전히 "글쓰기"에 대해 전문가일까?
독자들이 생각하는 디지털 콘텐츠 전문가들은 누구일까?
아래는 조금 전 알렉사에서 확인한 브런치의 트래픽 랭크다. 
그리고 아래는 같은 시각에 확인한 피키캐스트의 트래픽 랭크다.
접는 서비스가 더 많은 다음카카오니까 모기업의 영향력이라는 이상한 생각은 접으시고, 왜 브런치가 성장하고 있는지, 지금 시점에 미디어는 무엇을 준비해야할지 다들 고민해보자.
1 0

그루잠 같은

침대에 누워서 창 밖을 바라보자 하늘에서 눈물을 주르륵, 주르륵 흘리었다. 울적하게 만들기는 정말 나같은 놈이네, 나는 속으로 애꿎은 하늘에게 비아냥 거렸다.
너는 지금쯤 어디에 있을까. 아직 이 곳에 있으려나, 아니면 저 먼 곳에 있으려나. 뭐..상관없지 하지만 다치지 말고 건강했으면 좋겠다. 너와 내가 다시 만날 때까지. 나는 조그맣게 중얼 거렸다. 

병원에 있는 건 정말 아무 것도 할 것이 없다는 것을 알게 되었다. 평소에 하던 고양이 밥주기, 고양이 놀아주기, 고양이랑 이야기하기, 고양이랑 합체하기 같은 건 당연히 못하고 산책하는 것마저도 꿈도 못 꾸었으니까. 
다리 뼈가 부러진 나는 다리를 나의 몸보다 높이고선 그저 침대에 누워있는 것 밖에 하지 못하였다. 뭐..해 볼만한 일은 몇 개 있었지만...
핸드폰하기, 핸드폰이 없어서 패스. 게임기로 게임하기, 게임기는 형제들이 가져오지 않아 패스. 보나마나 집에서 오소마츠 형이나 쥬시마츠가 하고 있겠지. 
또 가끔씩오는 형제들과 이야기하기, 하지만 각자의 고민을 털어놓는 상황이 벌어져 강력하게 패스. 특히 톳티 녀석..자기 옷사는 걸 왜 나한테 골라달라고 하는거냐. 어짜피 자기가 사고싶은 어울리지도 않는 귀여운 옷 살꺼면서. 
그리고 책읽기. 앞의 것들보다 가장 해 볼만한 일이고, 유일하게 해 보았던 일. 하지만 책 읽을 때 허리가 아파서 오래 할 수는 없어서 패스. 
그래서 안 타는 쓰레기 같은 내가 선택한 일은 침대에 누워서 창 밖을 바라보거나 매일 같이 바쁜 의사 선생님과 간호사를 보는 일.
이리저리 돌아다니며 환자를 돌보는 사람들. 힘들텐데도 뭐가 그리 단단한지 얼굴의 가면을 벗지 않고 언제나 밝은 웃음으로 환자를 치료한다. 킥..정말 힘들게 사네. 뭐 조금은 부럽기도 하고. 나는 그들을 바라보며 생각했다. 
어느날이었다. 내가 있는 6인실 병실 내 옆자리신 할머니가 완치 되셨다. 숫기가 없는 나에게, 쓰레가 만도 못한 나에게 말을 걸어주시고, 자신이 좋아하는 간식도 나눠주시고, 매일같이 병실의 아침을 알리셨던 할머니가 이제 이 병실에서 나가신다고 하니 기쁜 일이었지만 조금의 서운함이 내 마음에 있었다. 
무슨 병인지는 모르겠지만 할머니가 다시는 병원에 오지 않고 건강하시길 바란다고 할머니께 인사드리며 생각했다.
목발을 짚고 마중을 나가고 싶었지만 손사래를 치며 나오지 말라고 하시던 할머니에 나는 나가지 못하고 침대에 누워있었다.
할머니가 나가시기 직전에  잘 챙겨먹으라고 남겨주신 간식을 먹으며. 할머니의 빈자리가 느껴지겠네, 라고 생각하던 참에 간호사가 침대 끝에 이름표를 바꾸는 것을 보았다. 쳇..아직 빈자리 느끼지도 못했는데 벌써 들어오다니. 묘한 감정이 들었다.
이윽고 소란스러운 소리와 함께 네다섯명의 사내놈들이 병실에 들어와 침대로 걸어왔다. 사내놈들은 머리부터 발 끝까지 검정색 양복, 검정색 셔츠, 검정색 신발 그리고 각각 다른 넥타이 색을 착용하고 있었다.
토하겠네 토하겠어 지들이 무슨 007을 찍는 것도 아니고 뭐람, 이라고 생각했다. 4명의 남자 중 핑크색 넥타이를 한 남자가 주위를 두리번 거리더니 각각의 침대를 분리시키는 용도로 있는 커튼을 촤아악 요란한 소리와 함께 쳤다.
"정말 형들도 참 이렇게 공개적인 병실을 구하면 어떻게?" 
"이에에...톳티 정말 콕 집어서 이야기 하다니 예리하네 그렇게 콕찝으면 형아 아프다구?" 
중저음의 능글거리는 말투에 나는 기겁했다. 에엑..형아라니 우리집 쓰레기 장남이 하는 짓을 하는 사람이 있다니 믿어지지가 않네. 
기겁을 하고있자 약간의 차가운 목소리를 가진 남자의 목소리가 들렸다. 
"이것보다 좋은 병실이 있기는 했지만, 예산이 부족해서 말이지? 누구 때문인지 모르겠지만. 그리고 딱히 문제는 없잖아? 여기 있는 사람들은 모두 보통적인 사람이니까" 
"뭐어..쵸로마츠 형이 그렇다면 그런거지 여기 어때? 괜찮아? 쥬시마츠형?" 
"하잇! 여기 좋아! 조용하기도 하고! 근데 나는 여기 몇 일동안 있어야 하는 거야?"
다 들린다 이놈들아 여기는 병원이라고 병원, 이라고 속으로만 생각했다. 우리 형제들이 올 때면 이처럼 시끄러웠던 일이 한두번이 아니었기에.
뒤늦게서야 병실에 같이 있는 사람들에게 미안한 감정이 들었다. 다음에 형제들이 오면 밖으로 나가자고 해야겠다. 나는 침대 옆에 있는 개인 사물함에서 읽을 책을 꺼내며 생각했다.
쿠소마츠가 가져다 준 책은 뭐려나..설마 자신의 옷장 컬렉션이 있는 잡지라던가 잡지라던가, 잡지는 아니겠지. 나는 책을 찾아 내 앞으로 가져왔다.
다행히도 나의 눈 앞에 있는 책은 안쓰러운 잡지 책이 아닌 '어린왕자' 였다. 어릴 때 읽었던 어린왕자라..뭐 조금은 읽을 만 하겠군, 라고 생각하며 나는 책을 펼쳤다.
이로써 나는 사내놈들의 이야기를 나의 귀에서 차단하려고 했다. 남의 이야기를 엿듣는 것은 좋은 것은 아니니까.
하지만 나는 의도치 않게 들려오는 소리에 어.쩔.수.없.이 듣게되었다. 마치 우리형제를 보는 듯하여 재미있어서 그런건 아니라고 말 할 수..없..다.
"음..쥬시마츠 아무래도 이번 달 말까지는 무리 아니겠어? 솔직히 지금 네가 필요한 상황은 아니니까 편히 쉬어도 될꺼 같은데? 맞지 쵸로마츠?"
"응 뭐 맞기는 하지. 이번 달은 무력을 사용하는 일은 거의 없고, 또 무력을 사용하는 건 카라마츠 형이 맡을 수 있으니까"
"응응 게다가 쥬시마츠형 이번에는 꽤나 크게 다쳤다고? 평소 같았으면 반나절 안에는 일어났어야 하는거 이번에는 하루를 넘겼었으니까"
뭐..뭐야 이놈들..? 정말 007이라도 찍는거야? 무력을 사용한다니, 반나절 안에 일어나지도 못 할 만큼 크게 다쳤다니. 소설 속의, 드라마 속에서의 이야기가 내 귀에 들리자 나는 저 놈들에게 묻고 싶을 정도로 궁금증이 생겼다.
아냐아냐...진정하자 이치마츠..너 같은 쓰레기가 남에게 관심을 갖는다는 건 위험한 거다..위험한 거라고. 이제는 그만 엿들어야 한다..그만해야되. 내 머리 속에서는 빨강색 빛의 알람이 위험 신호를 보내고 있었다.
누군가 말한 적이 있었다. 모든 사람들은 자신의 호기심을 이기지 못한다고. 나 역시 그 모든 사람에 속하는 듯, 나의 귀는 옆 침대의 소리를 계속 듣고 있었다.
"응! 그럼 나 이번 달까지 휴가라고 생각하고 쉬면 된다는 거?"
"뭐..그렇지 비상금은 네 개인 사물함에 넣어둘께 필요할 때 쓰고. 그리고 이번에 열심히 했으니까 푹 쉬고 다시 투입 될 준비하라고 쥬시마츠?" 
단호하고 냉철해 보이는 듯 한 목소리를 가진 남자가 침대에 누워있는 남자에게 이야기 했다. 침대에 있는 남자는 고개를 끄덕이며 알았다구, 라는 짧은 말을 말했다.
이윽고 단호한 그 남자의 핸드폰으로 생각되는 것에서 진동이 울렸다. 남자는 진동을 확인 하고는 다시 입을 열었다.  
"앗, 밑에 이치마츠랑 카라마츠 형한테 연락 왔다. 오소마츠형, 톳티 이제 가야해. 쥬시마츠 잘 있을 수 있지?"
"우리 쥬시마츠 형은 잘 할 수 있...아 조금 걱정 되기는 하는데..."
"에이 걱정 말라구 우리 쥬시마츠는 씹동정 체리마츠가 아니라서 잘 있을 수 있어 고작 12일이라고?" 
"확실히 그건 그렇게..쿡" 
귀여운 척 하는 남자는 능글거리는 남자의 말에 동의 하며 비웃었다. 풉..저기에도 씹동정 체리가 있나보군..우리 라이징 시코마츠처럼.
문득 나는 지금쯤 냐짱 지하 라이브를 가서 '냐짜아앙!!!' 을 외치고 있을 쵸로마츠 형을 떠올렸다.
냉철한 말투를 가진 남자는 화가 난 듯 거기에 있는 놈들에게 이야기 했다.
"어이, 따지고 보면 너희들도 씹동정인건 똑같잖"
"하이잇! 나 잘 있을 수 있으니까 잘 가라구! 아 톳티 나가기 전에! 나 커튼 좀 치워줘 불편해!"
침대에 있는 남자는 냉철한 말투를 가진 남자의 말을 끊고서는 말했다. 그렇게 냉철한 남자는 말을 뺏기고 침대에 누운 남자를 바라보았다. 그리고는 쥬시마츠으! 나 너한테 뭐 잘못한거 있냐?, 라고 울먹거리며 말했다.
울먹거리는 남자를 능글거리던 남자가 토닥이었고귀여운 척 하는 남자는 침대에 누운 남자가 요청한 것을 들어주었다.
그 상황의 주범인 침대의 남자는 그저 헤실헤실 웃고 있었다. 아 뭔가 저 장면을 보고 있으니까..기시감 같은게 느껴졌다.
"어이 쥬시마츠 12일 후에 만나 그 때까지 푹 쉬고"
"쥬시마츠, 진짜 너도 나 놀리는 거냐고!?!"
"쥬시마츠 형! 쵸로마츠 형은 신경쓰지 말구 밥 잘 먹고 잘 쉬고 있어! 회복에만 집중하기야!" 
세 사내놈들은 계속 울려대는 핸드폰에 침대의 남자에게 신신당부와 인사를 하고 병실에서 나갔다. 병실은 그제서야 조용해졌다.
정말 못말리는 형제들이구나, 밖으로 나가는 세 놈들을 보며 생각했다. 옆에서 느껴지는 눈빛에 옆 침대를 바라보자 나를 보고있는 남자가 보였다.
그것도 눈을 말똥말똥 뜨고있는 남자. 뭐...뭐지 왜 나를 보는 거야, 라는 생각과 동시에 나도 모르게 입 밖으로 한마디가 나갔다. 
"아....안녕?"
5 3

꽤나 쾌적하지 못한 환경이군요

운영자님 봐주세요.
요원 106 이하 게스트들이 아직도 글인지 광고인지 모를 것을 지속적으로 쓰고 있네요. 단순한 광고가 목적이 아닌 불쾌함을 목적으로 한 글이라면 목적을 초과달성한 것이 아닐까 싶을 정도로 매력적인 글일 것이고, 광고가 목적이었다면 html 태그가 안 통하는 이상 실패입니다만, 아마도 후자라는 생각이 듭니다. 아마 지금까지의 대처는 두가지였을거라 봅니다.
1. IP 블럭. 아마 실패할겁니다. 이 친구들 약삭빠르게 유동 IP를 사용할테니까요.
2. ID 차단. 역시나 위와 같은 이유로 실패할 겁니다.
그러므로 쾌적한 씬디가 되기 위해 아래의 두가지를 제안합니다.
1. ID나 IP가 아닌 키워드를 블럭하는 겁니다. 지금 계속 불법 도박 사이트를 광고하고 있는데, 글을 쓸 때 '바카라, 사다리'를 금칙어로 지정하는 것만으로 글을 복붙하는 것은 막힐 겁니다. 이렇게 몇몇 키워드를 블럭하는 것으로 광고글을 꽤 막을 수 있을 것으로 보입니다.
2. 고소하세요. 스샷은 확보해두었지만 운영자님이 직접 고소하는 것이 맞다고 봅니다. 관련 근거는 아래와 같으니 사이버수사대에서 협조 해 줄 것입니다.
정보통신망 이용촉진 및 정보보호 등에 관한 법률 제50조의7(영리목적의 광고성 정보 게시의 제한) ① 누구든지 인터넷 홈페이지 운영자 또는 관리자가 구체적으로 밝힌 거부의사에 반하여 영리목적의 광고성 정보를 인터넷 홈페이지에 게시하여서는 아니 된다.
② 인터넷 홈페이지 운영자 또는 관리자는 제1항을 위반하여 게시된 영리목적의 광고성 정보를 삭제하는 등의 조치를 할 수 있다.
제76조(과태료) ① 다음 각 호의 어느 하나에 해당하는 자와 제7호부터 제11호까지의 경우에 해당하는 행위를 하도록 한 자에게는 3천만원 이하의 과태료를 부과한다. <개정 2011.3.29, 2012.2.17>
(중략)7. 제50조제1항부터 제3항까지의 규정을 위반하여 영리 목적의 광고성 정보를 전송한 자
8. 제50조제4항 또는 제5항을 위반하여 광고성 정보를 전송할 때 밝혀야 하는 사항을 밝히지 아니하거나 거짓으로 밝힌 자
9. 제50조제7항을 위반하여 비용을 수신자에게 부담하도록 한 자
10. 제50조의5를 위반하여 이용자의 동의를 받지 아니하고 프로그램을 설치한 자
11. 제50조의7제1항을 위반하여 인터넷 홈페이지에 영리목적의 광고성 정보를 게시한 자 (후략)
1 3

페이스북 임베드 URL,
소셜 플러그인 (XFBML) 파싱

임베드 대상 페이스북 콘텐츠는 "포스트", "비디오", "사진" 이렇게 종류별로, 웹과 모바일에서 각각 URL 형식이 조금씩 달라 프로그램으로 이를 처리하기 위해 동일한 형태의 주소가 필요하다.
SDK를 사용해 페북 컨텐츠를 임베드하는 경우 기준이 되는 URL 은 웹용 URL 이다.
뭐, URL은 딱보면 알겠지만 fbid 라는 고유ID만 빼오면 된다. 
모바일에서 포스트에 대한 주소만 URL 파라미터로 처리되어 있고 나머지는 전부 URL Path에 포함되어 있으니 아래와 같은 정규식으로 fbid부터 발라내자
정규식은 Ruby 2.x 버전에서만 동작을 확인했지만 look-behind 와 look-ahead 외에 정규식 엔진을 타는 내용이 없기 때문에 동작이 안된다면 그 부분만 수정하자.
사실 효율을 생각한다면 저딴 정규식으로 한방에 fbid 를 뽑는 것 보다 fbid 가 파라미터로 존재하는 케이스를 분리시키고 나머지 정규식도 2회로 나눠 돌리는게 더 좋지만... 귀찮으니 한 줄로 하자.
상식적으로 fbid 만 뽑아내면 될 것 같으나 페북 임베드에 사용되는 URL은 사용자 아이디가 버킷 이름처럼 포함되어 있다. 문제는 모바일 URL에 사용자 아이디-문자-가 없다는 점.
이 문제는 페이스북의 짧은 주소 fb.com 을 사용해 해결할 수 있다. http://fb.com/<fbid>의 형식으로 리퀘스트를 보내면 해당하는 완성된 주소로 리디렉션 시켜준다. - 임베드 코드 생성 시 fb.com 을 그냥 쓸 수 있으면 좋을텐데 안되더라.
curl 로 리디렉션된 최종 URL을 뽑는 코드는 아래와 같다.
내가 쓰는 Typhoeus 에선 아래처럼 최종 URL을 받으면 된다. 
이렇게 얻은 URL 로 
위와 같은 XFBML을 사용해 임베드가 가능하다. 다양한 옵션은 페북 문서 확인.
Javascript SDK 를 사용하는 경우 SDK 가 로드된 후 FB 객체를 initialize 하면서 페이지에 있는 모든 XFBML 을 파싱할 수 있고, 이와 다른 타이밍에 추가적으로 XFBML 을 파싱해야하는 경우는 아래의 코드로 가능하다.
특정 엘레먼트만 파싱하려면
jQuery 로 돔을 잡아 파싱하려면
이렇게 파싱하면 컨텐츠가 임베드된다.
4 4
Square

업데이트 정리
알림과 글거리

열흘 정도 씬디는 손도 못대다가 이틀정도 짬을 내 몇가지 업데이트를 적용했습니다.
더딘 작업의 원인은 작업 시간과 인력이라는 절대적인 리소스의 부족도 있습니다만 그보다는 "잘 쓰고 잘 보여준다" 라는 주제가 너무 어려워 스케치와 설계만 반복하던게 더 크네요.
페이지 단위의 글쓰기나 기절할 정도로 화끈한 결과물 디자인은 설계와 스케치 그리고 자료조사만으로 시간을 잡아먹고 있었고 구글 보이스 입력은 적용 직전까지 개발했었으나 개발단계에서의 테스트 결과와 실사용 테스트 결과의 차이가 커서 시간만 잡아먹고 후일로 미루게 됐네요.
그 외에 사용자 행동과 입력 내용을 분석해 딥/머신 러닝으로 새로운 글쓰기를 제안해보자는 의견도 실사용이 가능한 수준으로 개발하자니 덩어리가 커서 망설이고 있습니다.
십여일의 방치가 마음의 짐이되어 괴로움을 떨쳐내기위해 조금 덩어리가 작고 맥락이 다른 기능들을 업데이트했습니다.
1. 폰트 변경
주 폰트였던 네이버의 나눔 고딕과 MS의 맑은 고딕을 구글과 어도비의 Noto Sans KR 로 변경했습니다.
제목에는 noto 폰트가 사용되고 있었습니다만 이를 본문 등으로 확대 적용했습니다.
그간은 PC와의 평균적인 스타일 유지를 위해 보다 범용적인 고딕체를 사용했습니다만 모바일 사용자가 압도적이라 모바일 기준으로 변경했습니다.
2. 카드 디자인 변경
noto 폰트의 굵기(weight)를 normal 보다 한단계 낮은 300으로 사용하고 있습니다. 기존의 둥그런 덩어리의 카드 디자인이 여리여리한 폰트와 잘 맞지 않아 선을 살려보려고 디자인을 변경했습니다. 덩달아 제목의 크기도 살짝 작아졌습니다.
낯설고 마음에 들지 않는다는 의견이 있습니다만 ㅠ.ㅠ
3. 알림
요원(!)간의 활동과 내부활동을 위한 일반적인 알림 기능을 적용했습니다. 웹소켓 등을 사용하지 않고 있어 완전한 실시간은 아닙니다만 현재의 규모에선 아직 필요를 못 느끼고 있습니다. 
작성 글에 댓글이 등록되거나, 작성한 글이나 댓글이 추천받을 때, 댓글 입력시 @로 사용자를 호출할 때 알림이 생깁니다. 최근 5건의 알림은 우상단에 있는 종 아이콘을 눌러 확인할 수 있습니다.
알림은 7일간 보관되고 7일간의 전체 알림을 확인하는 페이지는 아직 없습니다.
4. 글거리
"ㅇㅇ에 대해 글을 써보세요" 라는 기능의 시작은 게스트 사용자들이 "asdf" 식의 무의미한 테스트 글을 작성하는 것을 좋은 방향으로 유도해보자는 의도였습니다.
그리고 그 뒤로 의미없는 문자들로 작성되는 게스트글들이 사라졌으니 효과가 있었네요.
게다가 주제어를 사용한, 주제어와 유사한 글이 간간히 등록되는 것에 혼자 고무되어(!) 이를 "글거리"라는 이름으로 모두에게 공개하면 좋겠다고 생각하게 됐습니다.
메뉴에서 글거리 항목을 클릭하고 들어가면 간단하게 글거리를 등록할 수 있습니다.
글거리를 등록한 요원이 누군지는 노출되지 않습니다. 재밌는 거리들이 등록되면 저도 멋진 글 좀 써보고 싶습니다 ㅎㅎ
5. 추천글 로직 변경
이건 뭐 씬디 없어지는 날까지 계속 변경되지 않을까 싶습니다. 태그와 키워드, 작성자를 기준으로 보여주던 것 중 작성자 기준을 삭제하고 일정 시간 이내의 추천수와 조회수로 변경해봤습니다.
여전히 딱히 마음에 드는 결과가 나오진 않네요 ㅎㅎ
끝!
+)
아. 시스템 업데이트도 있었네요.
딱히 해킹을 당했거나 성능에 영향이 있는 정도는 아니였지만 스팸시스템들도 계속 스팸 등록을 시도하고 있었고 널리고 널린 감염 시스템들이 묵묵히 공격을 수행하고 있기에 fail2ban 필터를 늘리는 등의 보안 강화 작업이 있었습니다.
그냥... 그랬다구요. ㅎㅎㅎ
뜬금없음에 종지부를 찍어보자면...
씬디 요원님들 애정합니다~ ㅎㅎ