글쓰기 메뉴
4 0

피들리

최근 봐야할 사이트가 많아서 피들리를 처음 써봤는데 정말 편하고 좋다.
(피들리는 rss서비스라고 하네요. )
분류도 쉽고 효율성도 올라가고 피들리를 쓰고나서 플립보드 앱은 바로 지웠다. 설치하고 사용을 거의 안했는데 
피들리는 많이 쓸거 같은 느낌.
feedly.com

인터넷 검색 많이 하시는 분은 한번 사용해보세요.
저는 인터넷 하면 창에 기본탭이 10개 이상입니다. ㅋㅋ 중독인가봐여
0 0

Rails4, Elasticsearch
관계 모델 및 Method 인덱싱

searchkick 이나 tire(retire) 등을 사용하지 않고 elasticsearch-model 을 사용하는 경우 mapping 을 사용해 인덱스를 설정할 수 있다.
내 경우엔 다국어 사용을 위한 store 컬럼들과 관계모델의 컬럼들, 그리고 일부 메쏘드를 인덱스에 포함시켜야했다. - 아마 모두가 비슷하겠지.
간단하게 as_indexed_json 을 오버라이드하고 인덱스 재성성 ㄱㄱ
해시와 배열이 뒤섞여 있어 좀 거지같아 보이지만 직접 해보면 이해가 쉽다.
1 3

가방

가방 들고 다니는거 너무 귀찮다.
옛날 커피숍 "보디가드"에 있던 하이텔 단말기처럼 아무데서나 사용할 수 있는 디바이스들이 있으면 좋겠다.
음.. 환경설정이 너무 오래걸리려나?
음.. 그냥 스마트폰 성능이 좋아지면 끝인가?
으음.. 당분간은 그냥 가방을 들고 다녀야겠군.
으으음.. 나 초딩같다 ㅋㅋㅋ
2 2
Square 2f561b02a49376e3679acd5975e3790abdff09ecbadfa1e1858c7ba26e3ffcef

넘나 성실한 스팸알바생

기본적으로 손님 글 등록은 구글 캡챠를 사용하기 때문에 수동작업이 필수인데 꾸준히 할당량(?)을 채우고 있고 오늘은 심지어 커버까지 등록하는 인간적인 모습을 보여주네.
참.. 열심히 사시는구나. 나도 본받아야지.
1 0

파비콘 만들기

파비콘 관련해서는 소프트웨어도 많고 웹서비스도 엄청 많아서 대충 골라도 무난하게 작업되긴하더라.
그래도 근래에 몇번 유용하게 사용한 파비콘(및 아이콘) 제작 웹서비스라 Donate 는 힘들더라도 링크를 거는것으로 마음의 짐을 덜어보자.
"파비코메틱" - http://www.favicomatic.com/
3 2

여친 쇼핑몰 한다는데 맥프레삼.

맥도 써본적 없음
사용용도 쇼핑몰 운영
근데 OS는 윈도우설치
아니 도대체 왜..
그렇게 얘기해줬것만..
조언을 여기저기 구하지만, 결국 지 하고싶은데로 함.
그 말인즉슨 조언을 구하는게 아니라, 자기 의견이랑 같은 사람을 찾아서 자위하는것일뿐.
0 2

스팸 및 댓글에 대한
의견을 구합니다.

안녕하세요.
광고글과 광고댓글로 몸살이었던적이 있었죠.
제 관리나 기능으로 해결하지 못하고 지저분함에 사용자들이 떨어져나가자 효과없음을 느낀 스패머가 더 이상 활동하지 않았던건죠.
다른 공격적인 사용자라면 음담패설이나 모욕적인 댓글을 남기는 사용자가 있었구요.
아무튼 해결해야 하는 문제임은 분명하죠.
아래의 옵션 중에 투표를 해주시거나 다른 방안을 댓글로 알로주시면 작업 기일을 공표하고 진행토록하겠습니다.
1) 신고 기능
댓글이나 글이 특정횟수 이상 신고 될 경우 블라인드처리되거나 삭제되도록
2) 자신이 작성한 글 (손님글은 제외) 에 달리는 댓글은 적성자가 블라인드(삭제아님) 처리할 수 있는 권한 부여
3) 관리자가 24/7, 365모니터링 ㅋㅋㅋ
기타 의견이나 아이디어 있으시면 댓글 남겨주세요!
1 1
Square 2f561b02a49376e3679acd5975e3790abdff09ecbadfa1e1858c7ba26e3ffcef

[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배로 올리겠습니다!" 라고 보고하고 보다 많은 사용자들의 빡을 돌려(?) 주삼. 
0 0

Ubuntu 14.04 - Apache Tika 설치

아파치 티카는 PPT, XLS, PDF 등 수천종의 파일에서 텍스트와 메타정보를 추출하는 툴킷이다.
아파치 소프트웨어 재단의 프로젝트이며 아파치 루씬의 서브프로젝트로 시작됐고 현재는 독립되었다.
티카는 Apache Maven2로 빌드가 가능하나 여기서는 바이너리를 사용한다.
소스나 바이너리 다운로드 URL은 다운로드 페이지에서 확인하자
tika-app
콘솔에서도 유틸리티처럼 사용이 가능하고 --server 옵션으로 서버모드로도 사용이 가능하다. NetCat 등의 커맨드를 사용해 처리결과를 받을 수 있다.
tika-server
보다 서버스러운(!) 서버모드로 RESTful API 를 제공한다.
구동
JRE 는 당연히 설치되어 있어야하고 -jar 옵션으로 간단하게 구동된다. 기본 포트는 9998
구동 확인
브라우저에서 9998 포트로 접속하면 URL 정보가 출력된다.

tika-server 는 PUT 메쏘드만 받으며 리퀘스트 body 로 파일만을 받는다.
Meta 
Text
HTML
추가로, 내가 쓰는 Typhoeus 에서는 아래와 같이 사용할 수 있다.
Apache Tika : http://tika.apache.org/
TiakJAXRS Wiki : http://wiki.apache.org/tika/TikaJAXRS
1 1

Trix Editor 변경 작업 중단

누가 궁금할까 싶지만 에디터 변경을 예고한 적이 있고 작업을 중단했기 때문에 글을 남겨놔야지.
Trix 로 에디터 변경을 원했던 이유는 당연히 안정적인 입력을 위해서였지만 약 3일에 걸친 작업 끝에 다음과 같은 이유로 작업을 중단했다.
1. 2bytes 입력에서 몇가지 문제가 확인됨. 
- Trix 는 라인브레이커로 br 을 사용하고 div나 pre, figure 등의 블럭 엘리먼트가 들어오면 새로운 "블럭"을 만드는데 새로운 블럭의 첫 단락에서 확정적으로 자모음이 깨진다.
- Trix 는 contentEditable 을 사용해 IME 의 입력내용을 캐치하고 Trix::Document 를 생성하는데 2bytes 의 경우 한 글자를 위해 여러번의 키스트로크가 발생할 수 있기 때문에 글자의 순서가 변경되는 문제가 간혹 발생한다.
- 같은 이유로 입력된 글자를 contentEditable에 재출력할 때  다른 블럭으로 캐럿이 점프되는 경우가 있다.
2. 기존 사용하던 에디터의 안정성이 확보됐다.
- 사용 중이던 에디터가 갑자기 엄청난 숫자의 버그들을 쏟아냈으나 약 2달에 걸쳐 대부분의 버그가 수정됐다.
- 입력된 콘텐츠가 날아가는 치명적인 문제가 남았지만 원인을 찾을 수 있었고 소스 핵을 통해 해당 부분 스킵. 발생되는 사이드 이펙트는 서버단에서 저장 시 처리하도록 코드 수정.
Trix 의 개발은 계속 팔로우 하겠고 의미있는 버전업이 생기면 다시 개발을 고민해봐야겠다.
1 0

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

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


Noto Sans KR 웹폰트 - 구글 폰트 얼리 억세스로 변경

구글 Noto 한국어 글꼴을 웹에서 마음껏!
구글 폰트 얼리 억세스에서 드디어 Noto Sans KR 웹폰트를 제공한다. 개인적으로 매우 기쁜일이 아닐 수 없다!!!
그간 Coderifleman 님께서 한땀한땀 작업해주신 서브셋을 서버에 올려놓고 웹폰트로 사용하고 있었다.
매우 적은 용량이지만 알 수 없는 압박감에 사용자가 없으니 트래픽도 없지 normal 과 bold weight 만 사용했었는데 이번 Early Access 에서 제공하는 Noto Sans KR 은 6가지 굵기를 지원한다니 기쁘지 아니한가!

유니코드 한글 11,172 자와 완성형 한글 코드(KS_X_1001), 옛한글이 포함되어 있으며 한자는 포함되어 있지 않다. 
원래 있었는지 이번에 같이 추가됐는지 모르겠는데 한글 뿐 아니라 Noto Sans JP 와 Noto Sans SC(간체, 번체는 언제...) 도 제공하고 있으니 글로벌 서비스에서 마구마구 써줘야겠다.
css 파일에 다음의 라인을 추가
4 2
Square 2f561b02a49376e3679acd5975e3790abdff09ecbadfa1e1858c7ba26e3ffcef

로그인 사용자 익명글 작성 기능 추가

로그인한 사용자가 글을 작성할 때 글 작성 폼 하단 좌측에 "익명으로 작성" 체크박스가 추가되었습니다.
해당 체크박스를 체크한 상태로 글을 등록하면 글 보기 화면에서 사용자 정보가 노출되지 않습니다.
노출되는 작성자의 정보만 숨겨지고 수정, 삭제, 알림 등의 기능은 로그인 사용자가 작성한 비익명 글과 동일하게 작동됩니다.
"익명으로 작성" 체크를 기본값으로 사용하고 싶다면 상단 "메뉴 > 내 정보 - 수정" 메뉴에서 "익명으로 글을 작성하려면 체크하세요" 항목을 체크한 후 "수정완료" 버튼을 눌러 개인정보를 변경하시면 됩니다.
특정 유저의 글을 모아보는 페이지에서도 "익명"이 체크된 글은 노출되지 않습니다.
(로그인이 되어 있는 상태라면 -자신의 글 목록을 보고 있다면- 익명글도 노출되며 확인을 위해선 로그아웃 후 해당 페이지에 접속하시면 됩니다)
저는 테스트를 위해 쓸데없이 익명으로 써보고 있습니닼ㅋ
1 0

레일즈, 엘라스틱서치 필드 값 유무 쿼리

특정 필드의 값이 있거나 없는 조건을 쿼리할 때 _missing_ 과 _exists_ 를 사용할 수 있다.
title 값이 있고 published_at 값이 없는 질의를 Query String 으로 짜면 아래와 같다.
2 5

SYND 바란다#2

1. 비공개 글의 경우 메타 로봇 설정으로 noindex 처리 필요
2. 해더스타일을 좀더 쉽게 사용 할수 있게 스타일속성에서 밖으로 나왔으면.
3. 해더 스타일에 따라 자동으로 H* Tag로 마크업 처리 필요
0 0

제목 폰트 Noto Sans CJK 웹 폰트로 변경

Noto Sans CJK 폰트는 구글과 어도비가 만든 폰트로 중국어 간체와 번체, 일본어와 한국어 폰트를 포함하고 있다. 예전에 비해 웹에서 사용할 수 있는 한국어 폰트가 꽤 많아졌지만 여전히 목마른 우리에겐 참 흐믓한 일이다. 라이센스는 Apache License, Version 2.0
하지만 다른 구글 폰트와 달리 엄청난 용량으로 google early access 에서 제공하지 않고 있는 관계로 (아니지, 왜 제공 안하는지는 나는 모르지) 웹에서는 여전히 사용하기 어려운 실정이다.
드디어 구글 폰트 얼리 억세스(Google Fonts Early Access)에서 Noto Sans KR 을 서빙하기 시작했습니다. 자세한 내용은 아래 링크를 참고하세요.
"훈민정음 반포 569돌을 맞이해서 자그마한 선물을 마련했습니다."
그! 런! 데! Coderifleman 님의 노력으로 (언급은 안하셨지만 이런 작업은 그냥 괴로운 노가다..) 매우 적당한 용량의 서브셋을 웹폰트로 사용할 수 있다.
관련된 내용이나 사용법 등이 매우 잘 정리되어 있고 Coderifleman 님의 노력에 감사하는 의미로 이 곳에서는 아무 설명없이 링크로 대체한다.
한글 웹 폰트 경량화해 사용하기
Noto Sans CJK KR 폰트 보기
Noto Sans CJK 다운로드 및 도움말 페이지
1 0

레일즈4 마이그레이션, Change, Up, Down 섞어쓰기

내용은 간단한데 제목과 태그가 너무 길엌ㅋ
Rails 4 Active Record Migrations 에서 reversible 이란 메쏘드를 사용해서 아래와 같이 up, down 컨디션에 따라 SQL 을 실행할 수 있네.
0 0

UFW 방화벽 사용하기 - 우분투 14.04

UFW 는 iptables 의 설정 도구로 Uncomplicated Firewall 이란 뜻이며 문자 그대로 복잡하지 않은 방화벽 설정을 위해 사용된다.
서버는 어떤 목적이든, 공인 IP가 있든 없든 외부에서 접근이 가능하다면 보안 위험에 노출될 수 밖에 없다. IDC 레벨이나 네트워크 구성에서 하드웨어/소프트웨어 방화벽이 이미 사용되고 있을 수 있지만 그런 경우에도 각 서버의 방화벽 설정은 매우 유용하다(고 생각한다)
이런 목적으로 사용하기에 iptables 가 매우 적합하나 설정과 관리가 꽤나 복잡하여 나 같은 사람은 필요할 때 검색으로 룰을 설정했다가 어느 순간 뭔가 동작이 이상하면 iptables 전체를 내려버리는 괴상한 방식으로 운영하게되니 계륵이 아닐수가...
그런 의미로 UFW는 신세계! 방화벽이 미적용된 서버가 있다면 당장 UFW를 올려보자!
설치
기본 정책 설정 (들어오는 패킷은 차단, 나가는 패킷은 허용)
ssh, http, https 허용 (ssh 포트를 변경해서 사용한다면 반드시 직접 포트를 입력하자)
포트를 변경해 사용하거나 특정 포트를 허용
방화벽 ON!
위의 명령을 실행하면 "현재 ssh 연결에 문제가 생길 수 있습니다. 적용하시겠습니까?" 뭐 이런 질문이 나온다. ssh 포트는 허용으로 변경했으니 "y" 를 입력해 진행할 수 있다.
확인
ufw 가 실행되고 있지 않다면 아래와 같은 결과가 리턴된다.
방화벽을 끌 때는 아래와 같은 명령어를 입력한다
등록된 규칙을 삭제할 때는 2가지 방법이 있다.
첫번째는 등록 시 사용한 규칙을 그대로 입력하는 방법
두번째는 각 규칙의 번호를 확인하고 번호로 지우는 방법
등록된 규칙의 번호는 줄 맨앞에 있는 [숫자]
2번 규칙 80/tcp 를 지우려면
새로운 규칙의 추가는 동일한 방식으로 가능하다
포트 뒤에 tcp 나 udp 를 지정할 수 있고 지정하지 않는다면 모두 적용된다
새로운 설정을 적용하려면 disable > enable 해도 좋고 아래와 같이 reload 가 가능하다
특정 IP만 허용할 경우 
특정 IP에게 특정 포트만 허용할 경우
포트의 범위를 규칙으로 사용할 경우
특정 아이피에만 일정 범위의 포트를 tcp 패킷만 허용할 경우
서브넷을 특정 포트에 허용할 경우
이 정도면 내가 써봤던 명령어는 다 정리한 것 같다.
0 0

MiniMagick jpg 저장 시 알파채널 검게 나오는 문제

MiniMagick 이나 ImageMagick 에서 jpg 포맷으로 알파채널이 있는 png 등의 이미지를 저장시킬 경우 투명부분이 검게 저장되지.
일부는 코맨드로 convert 를 사용할 경우 background 만 흰색으로 지정하면 문제가 없다고 하던대 MiniMagick 은 mogrify 를 사용해서 그런건지 BG 지정만으로는 안되고 아래처럼 background 를 지정하면서 알파 채널을 삭제하면 되더군.
그리고 중요한점! 반드시 format 을 변경하기 전에 해당 코맨드가 들어가야 정상적인 결과가 나오더군
1 3 4