레이블이 irc인 게시물을 표시합니다. 모든 게시물 표시
레이블이 irc인 게시물을 표시합니다. 모든 게시물 표시

2018-03-11

2018년 10번째 주

 이 포스팅은 그냥 지난 한 주간 읽었던 것들을 정리하는 포스트입니다. 그냥 예전에 봤던 글 중 나중에 필요한데 뭐였는지 기억 안 나는 글들이 있어서 쓰기 시작했습니다.
 보통 하는 일과 관련된 글들이 올라오겠지만 딱히 정해둔 주제는 없고, 그때그때 관심 있었던 것을 읽었기 때문에 지난주에 쓰인 글일 수도 있고 몇 년 전에 쓰인 글일 수도 있습니다.

Slack Is Shutting Down Its IRC Gateway

 채팅 프로그램들은 누구나 겪는 문제 중 하나가 일부 사용자가 IRC 클라이언트를 포기하지 않는다는 것이다. Slack도 마찬가지였고, 이에 대해서 Slack은 IRC Gateway를 지원하여 IRC 사용자들도 Slack에 포함시키려는 노력을 하였다.

https://xkcd.com/1782/

 하지만 이제는 Slack을 IRC 클라이언트에서 사용할 수 없다. Slack이 IRC 서포트를 중지한다고 발표했다.
 모든 플랫폼에서 같은 사용자 경험을 주고 싶은데 IRC에서 지원하지 않는 기능들이 방해되기 때문이라고 한다. 하지만 이미 Slack에서 IRC Gateway를 사용하는 사람들은 그 한정된 기능에 적응하고 사용하고 있는 사람들일 텐데, 이 사람들을 포기하면서 같은 사용자 경험을 주는 것이 그리 중요한 일일까 싶다. 그보다는 IRC Gateway를 이용하는 사람들을 Slack이 유료로 파는 기능들을 사용하지 않기 때문이 아닐까 싶다.

Why RSS Still Beats Facebook and Twitter for Tracking News

 Facebook이나 Twitter 같은 SNS가 생긴 뒤로 많은 사람이 자신의 포스팅을 SNS에 올리기 시작했고, RSS(Rich Site Summary)는 이제 사용되지 않을 것으로 생각했다. 대표적인 RSS 구독 서비스였던 Google Reader가 2013년 서비스를 종료했던 것이 RSS의 죽음을 나타내는 가장 상징적인 사건이었다.
 하지만 사람들은 여전히 RSS를 포기하지 않았다. 5년이 지난 지금까지 사람들은 여전히 RSS를 사용하고 있다. RSS는 SNS가 가지지 못 하는 장점이 여러 개 있다.
 일단 RSS를 사용하면 내가 구독하고 있는 것을 못 보고 넘어갈 일이 없다. SNS는 기본적으로 최근 포스트를 우선으로 보여준다. 내가 매일 접속하여 꾸준히 보지 않으면, 놓치는 정보가 있을 수 있다.
 게다가 SNS에서 보여주는 정보는 내가 원하는 정보라고 확신할 수 없다. RSS는 내가 RSS Reader에 구독을 원하는 주소를 등록하는 방식이지만, SNS는 자신들이 추천하는 포스트를 나에게 보여준다. 나름대로의 추천 알고리즘을 통해 정보를 뿌려주지만 내가 원하는 글이라고 확신할 수 없다.
 마지막으로 RSS는 하나의 서비스만 사용하면 되는데, SNS는 종류별로 가입해야 한다. 글을 올리는 사람이 모든 SNS에 다 올리면 좋겠지만, 현실은 그렇지 않다. 모든 글을 구독하기 위해서는 모든 SNS에 가입해야 하고, 내가 원하는 글만 보는 것이 아니라 각 SNS가 추천하는 글도 다 보게 된다.
 이런 문제들을 해결할 방법이 나오기 전에는 RSS가 죽을 일은 없을 것 같다.

static local variable


 일단 C++11 이후. 즉, 모던 C++에서는 맞는 말이다. 그 이전에서는 멀티 스레드 프로그램에서는 싱글턴을 사용해야 했는데, 그런 경우가 있으면 2018년에 모던 C++이 아닌 상황에서 이미 망한 프로젝트니까 빠르게 도망치자.
 과거에, 그러니까 C++의 abstract machine이 스레드에 대해 고려를 하지 않았던 시절에는 여러 스레드에서 동시에 static local variable을 사용하는 것이 문제가 될 수 있었다. 하지만 모던 C++에서는 abstract machine에 스레드 개념이 들어갔고, 여러 스레드가 동시에 접근하더라도 static local variable이 단 한 번만 초기화돼야 한다고 명시됐으니 그냥 컴파일러를 믿고 사용하면 된다.

2015-02-03

Glowing Bear - 터미널에서 하던 IRC 웹에서 그대로

 나는 freenode를 구경하거나 친구들과 놀기 위한 용도로 IRC를 사용한다. 데스크탑 어플리케이션도 많이 쓰이지만, IRC라는 프로토콜의 특성상 접속하여 있지 않으면 대화를 볼 수 없어서 freenode에 있는 사람들은 IRC를 계속 접속해놓을 방법을 찾는다. 가장 쉬운 방법은 컴퓨터를 끄지 않고 다니는 방식이지만, 보통 개발자 중에 이런 방식을 사용하는 사람은 없다. 보통은 서버에 터미널 기반의 IRC 클라이언인 WeeChat이나 Irssi 띄우거나, IRC Cloud라는 서비스를 사용한다.
 하지만 터미널 클라이언트를 사용하면 언제서나 접속할 수 있는 웹 클라이언트가 아쉬워지고, IRC Cloud를 사용하기에는 한 달에 5$ 하는 비용뿐 아니라 WeeChat의 plug-in기능이 아쉬워진다. 그래서 보통은 WeeChat과 IRC Cloud 양쪽을 사용하는 방식을 택하지만, 그렇게 되면 2개의 접속이 연동되지 않기 때문에 불편한 건 어쩔 수 없다.
 그래서 WeeChat plug-in을 이용해 위와 같은 웹 서비스를 만들어볼 계획이었다. 우선 채팅 로그를 DB에 저장하는 스크립트를 만들던 중 WeeChat에 완전히 같은 목적을 가진 relay protocol이 있다는 것을 알게 되었다. Relay protocol은 WeeChat client가 relay 서버가 되어, Relay 클라이언트와 TCP socket을 이용해 통신을 하게 된다. Relay protocol을 사용하면 WeeChat과 완전히 같은 화면을 볼 수 있는 데다가 WeeChat plug-in을 그대로 사용할 수 있다는 장점이 있다.
 Relay protocol을 사용하는 client는 여러 가지가 있다. Qt를 사용해서 데스크탑 애플리케이션을 만든 QWeeChat, node.js를 이용한 웹 서버 WeeCloud 등도 많이 사용된다. 하지만 내가 사용하는 클라이언트는 Glowing Bear다. Glowing Bear는 완전히 static 한 web page에서 WebSocket을 이용해 WeeChat relay server와 통신하기 때문에 WeeCloud와 달리 웹 서버와의 통신은 필요하지 않아서 순전히 WeeChat 서버하고만 통신한다는 장점과 웹 서버 이외에 별도의 서버가 필요하지 않다는 장점이 있다.
 일단 지금 3~4일째 사용하고 있는데 키보드로 채널을 이동할 수 없다는 것을 제외하고는 딱히 문제를 찾을 수 없어서 앞으로도 계속 사용할 것으로 보인다.

2014-07-03

WeeChat에서 SSL 사용하기

 지금까지 irc 클라이언트로 irssi를 쓰고 있었다.
 irssi의 기능이나 여기서 제공해주는 스크립트들에 불만이 있는 건 아니지만, perl 스크립트만 support 한다는 것이 결국 문제가 되어(원래 계획은 이 기회에 perl을 배운다는 것이었는데 굳이 irc하나 때문에 perl을 새로 배우는건 손해처럼 보였다.) WeeChat으로 갈아타기로 했다.

 WeeChat은 irssi와 매우 비슷한 look and feel의 UI를 가졌지만, extensible 하다는 것을 장점으로 내세우며 Perl은 물론이고 Lua, Ruby, Python같은 유명한 스크립트 언어들이나 TCL, scheme 같은 교육용으로 자주 쓰이는 언어까지 지원해준다.
 게다가 irssi에서 많이 쓰이는 스크립트(trackbar, nickcolor 등)은 builtin기능으로 제공해 주고, 선택할 수 있는 configuration들도 irssi보다 많다.

 다양한 스크립터언어의 지원이 마음에 들어서 WeeChat으로 옮기기로 했지만, 너무 많은 configuration이 있는 것 때문에 설정하는 게 irssi보다 복잡하다.

 이하 SSL을 사용하기 위해 삽질한 내용들이다.
 WeeChat의 기본 설정 값은 ssl을 사용하지 않아서 따로 사용하도록 설정해 줘야 한다.

 문제는
/set server.ssl = on
을 해줘도 ssl을 사용해서 freenode채널에 접속할 수 없다.
 이에 대해서는 WeeChat FAQ에 해결책이 나온다.
 WeeChat에서는 irssi와는 다르게 Diffie-Hellman key의 길이를 설정해 줄 수 있는데, WeeChat의 기본값은 2048이고 freenode에서 사용하는 key size는 1024다.
/set server.ssl_dhkey_size = 1024
 도 해줘야 한다.

 freenode는 워낙 유명한 채널이라서 FAQ에도 나와있고 금방 해결되었다.
 문제는 국내에서 많이 쓰이는 urric라는 서버에서도 SSL 인증서의 문제로 hand shake가 실패했다고 나오는데, uriirc사용자 중에서 weechat 사용자가 얼마 없는지 이에 대해 해결하는 방법은 나와있지 않았다.
 uriirc 서버의 SSL인증서가 가지는 문제는 크게 3가지이다.

  1. diffie-Hellman key size가 1024이다.
  2. 인증서가 기한 만료되었다.
  3. 인증서의 hostname이 irc.uriirc.org가 아니다.
 key size는 위와 같은 방법으로 해결하면 되는데, 공식적으로 관리되는 서버가 아니라서 그런지 인증서에 이래저래 문제가 많다.
 WeeChat 매뉴얼을 읽어보니 WeeChat은 기본적으로 SSL verify기능이 켜져있고, configuration을 통해서 꺼야한다.
 따라서
/set server.ssl_verify = off
를 해야 한다.

 irssi에서도 SSL verify 기능이 있지만, 이쪽은 default가 off라서 irssi로 접속할 때는 SSL 인증서에 문제가 있는지 모르고 써왔던 것이다.

 초기 세팅을 위해 검색하느라 시간을 조금 쓰기는 했지만, 이것저것 설정해줘야 해서 조금 더 안전하게 사용할 수 있는 것 같은 착각(?)이 든다.