#84 gdb & Mastodon

どうも、esuiです。

何だかすっかり間が空いてしまったような気がしますが、
気のせいということで4/21分のレポートをさせていただきます。。




gdbに触れてみた


ということで、第一部はデバッガのgdbについて触ってみました、という発表でした。

gdbとは


とりあえずWikipediaからそのまま引用させていただきます。
GNUデバッガ(単にGDBとも)は、GNUソフトウェア・システムで動く標準のデバッガである。 これは、多くのUnix系システムで動作可能な移植性の高いデバッガであり、Ada、C言語、C++、FORTRAN、FreeBASICといったプログラミング言語に対応している。


昔からあるデバッガで、IDEのデバッガが無いような環境で、コマンドラインでのデバッグが行えます。
実行中のプログラムにアタッチする事が可能です。

使い方


- run(r) 実行
- backtrace(bt) バックトレースを表示
- list(l) ソースコードを表示
- print(p) 変数名表示
- break(b) 関数にブレークポイント
- next(n) 次の行に進む(関数に入らない)
- step(s) 次の行に進む(関数に入る)

perlで試してみる


「 -g 」オプションをつけてbuildする必要あり
$ plenv install 5.16.0 -DDEBUGGING=-g -Doptimize=-O0

さて、perlで実際にgdbデバッグするデモだったのですが、
ここでレポートするのは若干厳しいところがありますので、
このあたりの記事を参考にして頂いたほうがよいかなぁ、と・・・。
LL脳な人でもこれぐらいは覚えておくとうれしいgdbのつかいかた。または猫でもわかるgdb講座
Perlプログラマのためのgdb入門(at Shibuya.pm #9 LT)

dockerの場合


今回、某案件で、docker内でmodperlを動作させる際にSegmentation faultが出てしまったため、
以下の記事を参考にコンテナをgdbでデバッグしてみたそうです。

DockerをGDBでデバッグする
Docker privileged オプションについて

まとめとして、最初は使いこなすには難しいですが、
理解できるようになると原因不明なエラーもある程度追えるようになりそうなので、慣れるようになりたい、
とのことでした。




Mastodon



第二部は、自分の発表です。
先週から急激に流行っているマストドン(Mastodon)についてのネタでした。

Mastodonとは


スクリーンショット 2017-06-04 23.25.36.png
https://github.com/tootsuite/mastodon

Mastodonとは、TwitterライクなSNSで、UIはTweet Deckにそっくりになっています。

- TweetはToot
- RTはboost
- 1トゥートあたり500文字まで投稿することができたり、
- 記事毎に公開範囲を指定可能
- 閲覧注意のツイートにはCW(Contents Warning)タグ、閲覧注意の画像にはNSFW(Not Safe For Work)タグを付けることが可能
- ローカルタイムラインと連合タイムライン
- 運営方針もインスタンス独自で決める
- 広告一切無し

のような特徴があります。

中でも最も大きな違いが、
分散型になっているということです。
このあたりは以下を読んだほうが早いかなと・・。
いまさら聞けない分散SNS Mastodon(マストドン)。誤解の多い連合タイムラインを解説

オープンソースなので誰でもインスタンスを立てることができ、
それぞれのインスタンスをまたがってリモートフォローをすることも可能となっています。

日本での直近の流れは以下を見るとよくまとまっています。
http://www.itmedia.co.jp/news/series/5983/

主な国内インスタンス


https://mstdn.jp/
https://pawoo.net/
https://friends.nico/

その他
http://qiita.com/noraworld/items/ea853c6897326feda51f

Mastodonの問題点


- 個人情報の扱いがインスタンスに依存
- 突然のサービス終了
- アカウント削除の仕組みが現状無し?

Mastodonの主な構成


- Ruby on Rails
- PostgreSQL
- Redis
- Nginx
- Node.js
- OStatus
https://ja.wikipedia.org/wiki/OStatus

とりあえず試してみる


ということで、実際にインスタンスを立てて試してみました。

## 環境
さくらのVPS
2core 1G Mem 100GB HDDプラン

## 構築手順
https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Production-guide.md

インスタンス構築手順はqiitaなどに腐るほど転がっていますが、
CentOS7でmastodonを建てる
http://qiita.com/motiakoron/items/1e5b0679f7283bfee70b
ここなどを参考にしました。

いろんな構築方法がありますが、とりあえずお手軽なdocker手順で試してみました。
https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Docker-Guide.md

1GBプランでも結構重いです…

スキーマ


とりあえずスキーマは以下のようにpostgresで見ることが出来ます。
docker exec -it mastodon_db_1 /bin/sh
/ # psql -U postgres
psql (9.6.2)
Type "help" for help.
postgres=# \d
postgres=# \d statuses


API


既にAPIも一通り揃っていました。
https://github.com/tootsuite/documentation/tree/master/Using-the-API

とりあえずの自分インスタンスの使い道


## Twitterとクロスポストするようにする
アクセストークンを取得し、IFTTTを使わせてもらい、webhookでお手軽にクロスポストするようにしてみました。

## 簡易RSSリーダーbot
自分のインスタンスなので、BANなどを気にせずに好きなbot、タイムラインを作ることが可能です。

こちらもサクッとIFTTTで、、と思ったら、既に出来合いのものがありました。
マストドンへRSSを自動トゥート!する「Feed2toot bot」

http://feed2toot.readthedocs.io/en/latest/index.html
こうすると、好きなFeedだけを流すbotなども作り放題です。
スクリーンショット 2017-06-04 23.50.54.png

まとめ


まとめとして、
- とりあえず個人でインスタンスを立てるのだけは簡単ではあるが、
現実としてメンテ(維持)していくのが結構大変になってしまいそうなので、あくまでも個人用としてまったり楽しむのが良さそう。
- 継続してやるにはとりあえず大手のインスタンスを使ってやるのがやっぱりお手軽
- 数ヶ月後はYo.の時のようにブームが去ってtwitterに戻っているかも??
- まだまだ問題点なども多いが、この流行っている感じはとても楽しいのでしばらく使って様子をみたい

という感じで、今は素直に楽しんで少しいじってみようと思いますw

この記事へのコメント