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 を触ってみたいと思います。

2016/12/26

第0回 サーバレスアーキテクチャのお勉強 - システム概要

勉強会情報配信アプリの作成を通して、サーバーレス アーキテクチャ のお勉強をしていきます。

サーバーレス アーキテクチャとは?

物理サーバーや仮想サーバー(EC2など)、コンテナ(dockerなど) を使用しないシステム設計のこと …だと理解しています。

具体的には、以下の2パターンの構成が見られます。

  1. Google Firebase や Parse.com(もうすぐサービス終了) といった、BaaS (Backend as a Service) を組み込んだ構成
  2. AWS LambdaAzure Functions といった FaaS (Function as a Service) を組み込んだ構成

今回の一連の記事において サーバーレス アーキテクチャ といえば 2. の方を指すこととします。

アプリの概要

毎月、フリーランスの仲間内でIT勉強会を開催しています。
その開催案内や勉強会で使用する資料の置き場所などの情報共有を行うWebアプリケーションの開発を行います。

システム構成の検討

ざっくりですが、上記のようなシステム構成を考えました。
今回のアプリ開発はAWSの勉強も兼ねているので、ほとんどをAWSのマネージドサービスだけで構成します。

次回は DynamoDB のテーブル設計をしていきたいと思います!

2016/07/22

温泉宿で開発合宿してきました

フリーランスの仲間を誘って、7/1~3 に温泉宿で開発合宿をしてきました。

総勢14名、広間にPCを広げて作業です。

特に目標などは設けませんでしたし 参加者の属性もバラバラなので、他のソフトウェア企業がやっているような開発合宿とは、すこし趣が違うのかもしれません。

どちらかというと温泉宿に来て もくもく会を開催した、って感じでしょうか。


言い出しっぺだったので、宿の選定や会計、タイムスケジュールの作成などやらせてもらいました。

どれくらいの予算が良いのか いまいち掴めず、1日あたり1万円前後かなー、という感じで計画しましたが、ちょっとケチりすぎた感じがします。

費用面を重視したために田園風景広がる自然豊かな場所にポツンとある宿になってしまいました。

施設の清潔感がイマイチ (他の参加者からも言われた) でしたが、一泊二食付き 8,000円とかなので、こんなもんかなー、という感じです。次回は予算含めて見直したいですね。

東京方面だと「開発合宿プラン」がある温泉宿なんかもチラホラあるみたいですが、関西で探すとなかなか難しいです。

無線LAN完備で会議室と広いお風呂が 24時間利用可能、なんていう宿泊施設があると良いんですが。

2016/02/09

Slackとは?

Slack

  • SaaSのチャットアプリ


利点

  • マルチプラットフォーム
    • Webアプリなので Windows, Mac, Linux で使用可能
    • electronで作成されたデスクトップアプリもある
    • Android, iOSアプリも当然ある
    • 複数端末同時ログイン可能
  • 他のシステムとの連携機能が豊富
    • GithubやGoogle Driveなど、様々なサービスと容易に連携可能
    • 無料枠では10システムまで連携可能
    • WebhookやAPIを使用することで、デフォルトでは提供されていないシステム(社内システムなど)とも連携可能

markdown が投稿でき、ソースコードはシンタックスハイライトされる点が
プログラマ同士の会話に非常に適している事が
競合の他サービスと比較して、IT系企業で積極的に導入されている理由と考えられる。

インターフェースが英語のため、プログラマ以外の職種には
ChatWork や HipChat といったサービスの方が受け入れられやすい模様。


無料の範囲

https://get.slack.help/hc/en-us/articles/201723133-Billing-FAQ#can-i-use-slack-for-free
Can I use Slack for free?
Yes, you can use Slack for free. You’ll only be able to browse and search your team’s 10,000 most recent messages, and you’ll be limited to 5GB of file storage and 10 apps or custom integrations.

  • 直近 10,000件までの検索
  • 5GBのストレージ
  • 10個までのアプリ連携


価格

一人あたり一ヶ月 8ドル (アカウントがアクティブかどうかで日割り計算)


参考

Slackメモ





Slack が広がっている背景のひとつとして、ChatOps の流行の影響が考えられる。
ChatOps とは文字通り、コンソールの代わりにチャットにて運用オペレーションを行う事である。


ChatOps

チャットチャンネルに常駐するボットにコマンドを投げて、システム運用を行う。
Github が取り入れていることで有名。
PublicKey | GitHubが1月28日のサービス障害の詳細を公開。停電により内部のChatOpsシステムも落ちて初期対応が困難に。Redisクラスタの復旧に時間

ChatOps のメリットとして、以下の様な点が考えられる。

  • 多数の人間が見ているチャットにコマンドを投げることにより、間違い等に早期に気づきやすい
  • チャットのアーカイブ機能や検索機能によって、過去の操作履歴を追いかける事が可能
  • わざわざ各サーバーにログインする必要がなくなる
    • 昨今は仮想化・コンテナ化の結果、とんでもない台数のサーバーを管理する必要があるので、人間が「どのサーバーにログインする必要があるか」とか把握しきれない



2016/02/08

electron触ってみた

electron触ってみた

electron でローカルで動くGraphviz のビューア兼エディタを作った。

とりあえず動くけど、使い勝手とかが微妙なのでパッケージ化はしない。



作ってみて感じたこと

  • クライアントサイドとサーバーサイドのjsが混じってて面白い

ブラウザ側の処理か、Node.js側の処理か? みたいなことを考えなくても作れてしまう。

実際には remote オブジェクトっていう electron 特有のヤツがいて
ブラウザのプロセスで動くのか、Node.js側のプロセスで動くのかを管理している。

画面描画処理とそれ以外をきちんと区別することでアプリのパフォーマンスに影響するのかもしれないけど、あんまり意識しなくても動く。


パフォーマンスに悪影響かもだけど、knockout.js の処理の中で
Node.js のパッケージとか使えてしまう。

今回、node-glob の結果を observableArray に突っ込んでリストを表示する、とかやってるけど普通に動いてびっくりした。



  • バベらなくても es2015 で動いている

babel でわざわざ変換しなくても、結構 es2015 で動いている。
よく使う class とか Arrow function とかは問題なさげ。

画面描画部分は chrominium ベースなのかな? (調べてない)

CSS3の flexbox なんかも問題なさげなので、ストレス無くて良い。