2017/04/24

Mastodon (マストドン) とは何か

Mastodon (マストドン) とは?

mastodon

A GNU Social-compatible microblogging server

Mastodon とは GNU social と互換性のある 短文投稿型SNS。
ネットワークは複数の インスタンス から構成されており、インスタンス間は OStatus を用いて通信を行う。

  • 投稿は トゥート と呼ばれ、500文字の制限がある
  • ライセンス: AGPL-3.0

GNU social

GNU social - Wikipedia

PHPで書かれたミニブログサーバーのフリー・オープンソースソフトウェア

OStatus

OStatus - Wikipedia

OStatusは分散型ミニブログのためのオープン標準である。Atom、Activity Streams、PubSubHubbub、Salmon、Webfingerといったオープンプロトコルによって構成されており、異なるサイト間においてユーザー同士の投稿をほぼリアルタイムで届けることを可能にする。

システム構成

  • Webアプリ
    • サーバーサイド: Ruby on Rails
    • クライアントサイド: React & Redux
  • ストリーミングサーバー: express & WebSocket (Node.js)
  • Database
    • PostgreSQL
    • Redis

2017/02/08

Windows Update のダウンロードが 0% のまま進まない場合の対処方法

以下の操作によって不具合等が発生したとしても、一切の責任を負いかねます。ご了承ください。

現象

  • いつまでたってもWindows Updateのダウンロードが 0% のまま進まない (今回は KB2267602 で発生しましたが、どの更新かはあまり関係ないように思われます)
  • タスク マネージャー でディスクの使用率が 100% になっている

再起動等してもWindows Updateがキャンセルできず、サービスも停止できないという状況でした。

Windows Defender が悪さしてるのかも?と思ってWindows Updateと一緒にキャプチャしていますが、結果的に冤罪でした。

対処方法

今回紹介する手順を実施する前に、以下のページに記載されている対処方法を順に試した方が良いです。
Windows 10 - Windows Update に失敗する場合の対処法 - マイクロソフト コミュニティ

私が紹介する対処方法は最終手段だと思います。


Windows Updateでダウンロードするファイルは %SystemRoot%\SoftwareDistribution というフォルダに保存されているのですが、こいつが破損しているんじゃないかなー、と考えました。
それであれば、 SoftwareDistribution フォルダをサックリ削除してしまえば問題解決しそうです。

ただ、SoftwareDistribution フォルダは当然 Windows Update がアクセスしており、削除もリネームも出来ません。なので、Windows Updateが起動しないようにセーフモードで作業します。


1. セーフモードで起動する

Windows Update がキャンセルできず、サービス管理からも停止できない (停止処理中のままになる) という状況なので、まずは セーフモード で起動します。

Windows XP なんかだと起動時に F8 キーを連打することでセーフモードで起動するのですが、Windows 10 ではこの方法も変更されています。


こちらのサイトが詳しいですが、セーフモードで起動する方法はいくつかあります。
「Windows 10」をセーフモードで起動する方法について


私は Windowsの設定 から起動しました。

  1. スタートメニューの左アイコンの歯車をクリックすると、Windowsの設定 が起動します。
  2. 更新とセキュリティ をクリック
  3. 左メニューから 回復 を選択
  4. PCの起動をカスタマイズする今すぐ再起動する というボタンをクリック

PCが再起動します。
起動すると、真っ青な画面に幾つかのパネルが表示されます。

  1. トラブルシューティング をクリック
  2. 詳細オプション をクリック
  3. スタートアップ設定 をクリック
  4. 再起動 をクリック

再びPCが再起動します。
スタートアップ設定 という画面が表示されるので、F4 キーを押してセーフモードを有効にします。

ログイン画面が表示されるので、パスワードを入力してログインします。
やっとこさ、どこか懐かしい四隅に セーフモード と書かれたデスクトップが表示されます。

Microsoftはセーフモードでログインさせたくないんだろうなー、というほど面倒くさい手順です。


2. SoftwareDistributionフォルダをリネームする

さて、苦労してセーフモードで起動することができましたので、諸悪の根源であろう SoftwareDistribution フォルダを表示します。

  1. エクスプローラから C:¥Windows にアクセスします。
  2. SoftwareDistribution というフォルダを探します。無ければ Windows Update 云々以前の問題なので、おとなしくWindowsを再インストールしてください。
  3. サックリ削除しても良い気がしますが、何か問題があっても怖いので、フォルダをリネームしておきます。私は SoftwareDistribution.bak としました。
  4. もうセーフモードに用はないので、普通に再起動します。



3. 再び Windows Update を行う

再起動して普通にログインし直したら、タスクマネージャーを立ち上げてしばらく様子を見ましょう。
起動直後の数分はディスク使用率 100% になるのは当たり前です。30分くらい放置して、ディスク使用率が落ち着くのを確認しましょう。

SoftwareDistribution フォルダは Windows Update を実施すると自動的に作成されるみたいです。
私の場合、先月のWindows Update もまともに動いていなかったようなので、改めて Windows Update を実施することにしました。


さて、現象は解決しているのでしょうか?
この数時間の作業が灰燼に帰すのかどうか…


ででーん!
無事、Windows Updateが完了しました!

いやー、原因の調査などなどで丸一日かかってしまいました…
この記事が誰かのお役に立てれば幸いです。


参考

2017/01/11

第1回 サーバレスアーキテクチャのお勉強 - DynamoDB

サガ スカーレット グレイス に手を出してしまいました…
序盤は大剣&斧のゴリ押し戦法で全滅しまくりでしたが、最近は小剣技の便利さに気付き、それなりに安定してきました。
そろそろ1周目が終わるかな?

それはさておき、昨年から引き続き サーバレスアーキテクチャ なWebアプリケーションの作成手法について勉強していきたいと思います。


DynamoDBについて

勉強会の開催情報は Amazon DynamoDB に格納していきます。

DynamoDBはNoSQLデータベースなので、Oracleなどのリレーショナルデータベースとはテーブル設計の考え方が異なります。

公式の開発者ガイド (http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Introduction.html) に目を通しましたが、とても一度で理解できる内容ではないので、詳細はおいおい把握していこうと思います。

ちなみに、以降にスクリーンショットを掲載していますが、2017年1月時点のものであり、将来的に変更になる可能性大です。

テーブルの作成とデータの登録

(1) AWSのコンソールにサインインし、DynamoDB のリンクをクリックします。
テーブルの作成 というボタンがあるので、クリックします。

(2) 以下のような画面が表示されます。

今回、勉強会のイベント情報を管理したいので、 Events というテーブル名とします。
キーは EventId で良いでしょう。
で、実際の画面には開催日順にイベントが並んでいるのが普通だと思いますので、 ソートキーに Date を指定しておきます。

型は 文字列, バイナリ, 数値 の3種類しかないようなので、どちらも文字列にしておきます。

(3) テーブルを作成すると一覧画面が表示されます。

最初のうちは 状態 が作成中のままですが、そのうち 有効 となります。
リストから作成したテーブルを選択すると、右側に詳細情報が表示されます。

(4) 詳細情報の 項目 タブでデータの登録ができます。

DynamoDB では、テーブル作成時に指定した パーティションキーソートキー 以外の項目は任意に追加できます。

とりあえず、テストデータとして「ほげほげ」というデータを登録してみました。


DynamoDB のパフォーマンスを活かすためには パーティションキーやソートキーを工夫したり、RDBとはちょっと異なるテーブル設計にする必要があるみたいです。

今回のWebアプリではタグを付けてイベントを分類するくらいは実装したいと思っていますが、タグ情報を格納するテーブルなどは後に作成しようと思います。
全文検索は Elasticsearch Service を使うのかな?

ここまで書いといてアレですが、今回のような要件であれば Amazon RDS を使用すべきだった気もしますが…まぁ、勉強なのでいいか。

と、いうことで、次回はいよいよ Lambda を触ってみたいと思います。