nDiki : エラー

エラー - error

fault と error と failure

fault

原因。

error を引き起こすもの。

  • design faults (バグ)
  • hardware faults
  • lower level service faults
  • specification faults

error

システムの状態の一つ。

failure を引き起こすもの。

fault のインスタンス。 (user error は含まない)

failure

不具合現象。

システムの外。

スポンサード リンク

2014年9月16日 (火)

社内でも動かしている PSGI アプリケーションに OpenID 認証をつけた

Plack::App::Directory::Markdown をベースにちょっと手を入れた Markdown ビューアを使っている(記事)んだけれど、閲覧要認証なシチュエーションが出てきた。

自分のみ閲覧のものは builder で Plack::Middleware::Auth::Digest を enable にして Digest 認証をかけ、htdigest コマンドでパスワード管理とかで済ませているのだけれど、複数人に閲覧してもらうのにこれは嫌だ。人のパスワード管理はしたくない。

OAuthGoogle アカウントとかの認証を使うというのもあるけれどキーとか面倒くさいので、せっかくだし mixi OpenID を使うことにした。Perl モジュールは Net::OpenID::Consumer::Lite を使用。

とりあえずやっつけで以下のような感じ。いきなり mixi OpenID 認証させるしエラー・キャンセル処理もほとんどないし、call の中にネジこんだりしてあるので、まだまだダメダメだけれどとりあえず認証はできた。後で整理する。

セッションを使うようにしておく

 $app = builder {
   enable 'Session', store => 'File';
   $app;
 };

call の先頭に以下を追加。

 my $session = $env->{'psgix.session'};
 my $request = Plack::Request->new($env);

 unless ($session->{openid}) {
   unless ($request->parameters->{'openid.mode'}) {
     my $check_url
       = Net::OpenID::Consumer::Lite->check_url(
       'https://mixi.jp/openid_server.pl',
       $request->uri);
     return [302, ['Location' => $check_url], []];
   }

   return Net::OpenID::Consumer::Lite->handle_server_response(
     $request->parameters => (
       not_openid => sub {
         return [503, [], []];
       },
       setup_required => sub {
         my $setup_url = shift;
         return [302, ['Location' => $setup_url], []];
       },
       cancelled => sub {
         return [403, [], []];
       },
       verified => sub {
         my $vident   = shift;
         my $identity = $vident->{identity};

         # %member に閲覧 OK の OpenID を入れてある。
         if (exists $member{$identity}) {
           $session->{openid} = $identity;
           return [302, ['Location' => $vident->{return_to}], []];
         }
         else {
           return [403, [], []];
         }
       },
       error => sub {
         my $err = shift;
         return [503, [], []];
       },
     )
   );
 }

 # 以下は認証済みの場合の処理を書く。
スポンサード リンク

[ 9月16日全て ]

2015年2月16日 (月)

LINE@Web 日記書きとしてプレミアムID @naney を取ってみた

image:http://www.naney.org/nDiki/2015/02/16/LINEat_logotype_Green.png

やっぱり触っておかないとと思ってLINE@アカウント作ってみた。今までスルーしていた年齢確認も年貢の納め時で済ませた。だけど、できたアカウントの ID がランダム文字列だと切ないのねー、これ。ホントに使う気になれない。「ちょっとアカウント作ってみたから友だち追加してみてよ」と言うのが恥ずかしい。

そしてこれぐらいなら出してもいいかなと思わせる値段で好きな ID を指定できるプレミアムIDにせざるを得ないわけで。うまくできてるわけだ。ということでプレミアムIDを取得してみた。手続き的には3度失敗して4度目にようやく成功。

  1. PC からやったら LINE Pay 決済ができなくて失敗。
  2. Android デバイスに LINE Pay を入れて、LINE@アプリからやるも「ご利用のバージョンでは対応していないか不正なURLです。」というエラーが出て失敗。なお LINE アプリも最新版が入ってる。
  3. もう1度やるも失敗。
  4. Android 上の Google Chrome から下記 URL からやったらようやくきちんと LINE Pay に切り替わって決済かできて成功。

失敗するたびに取ろうとしている ID に1時間程度ロックがかかってしまい手続きをトライできなくなるので、夜中にやるのは厳しいということがわかった。このあたりまだこなれてない印象。

とちょっとつまずきつつも @naney を無事取得。どんな感じか気になる方、コメント送ってみたいという方は LINE アプリをインストールしているスマートフォンのブラウザから以下のボタンでどうぞ。あるいは LINE アプリ上の [友だち追加]-[ID検索]で「@naney」を検索しても友だち追加できます(誰が友だち追加したかは LINE@アカウント側からはわからないようになっています)。

'stats.label.addfriend' (MISSING TRANSLATION)

LINE@ の機能

LINE@ は、友だち追加してくれた人(誰かはわからない)に一斉にメッセージ配信ができる一方、相手からトークしてもらわないとこちらからはトークをスタートできないとかグループトークはできないとか、迷惑行為しにくいように制限がかかっている LINE という感じ。

無料だとメッセージは月1000通となっているのだけれど「メッセージ数 x 配信時の有効友だち数」とう積算なので200人友だちがいると月5回しか送れないことになる(1:1 トークは含まれない)。先のプレミアムIDの件やこのあたりもふくめ、フリーは本当に機能をちょっとお試ししてみるという位置付けで、実質有料サービスと心得た方が良いようだ。

ただ、友だち追加してもらえれば高い確率でメッセージを届けることができるのでマーケティングには確かに魅力的なサービスであることには間違いない。美容師とか個人で顧客を抱えている人などの営業ツールとして強力そう。1:n でのメッセージ配信からシームレスに 1:1 トークにつながるというのがいい。一斉に送るのなにがいいかなと考えるとちょっとわくわくしてくる。

ちなみに LINE 同様タイムライン投稿もあってこちらは費用無しで使える。再編集や削除もできるので、こちらの方が気軽にお知らせやつぶやきに使えそう。ただ、どれぐらいの人が見るのかわからないけど。あとはアカウントページというのも一応ある。

あと Web 版の管理ページがあってそこから投稿やコンテンツ編集できるのは良いかな。

ひとまずそんな感じ。

LINE プラットフォームは確かにファンやお得意様とのコミュニケーションツールとして、相性良さそうだな。

(ロゴ画像http://line.me/logo/ja より。)

2017年1月9日追記

プレミアムID @naney を停止しました。


[ 2月16日全て ]

2015年4月11日 (土)

AirMac Time Capsule 買ったけれど既存のネットワークに追加できず

naney:17078658896

ME177J/A A1470 AirMac Time Capsule 802.11ac 2TB を買ったんだけれど Wi-Fi で「既存のネットワークに追加」できず、有線接続せざるをえなかった。ME177J/A はクライアントモードをサポートしていないっぽい。

きっかけ: ストレージ環境の見直し

メイン PC を Debian GNU/LinuxThinkPad X200 から OS XMacBook Pro に変えるにあたりストレージまわりも見直すことにした。

家族共有のために Dropbox Pro にしようと結構考えたんだけれど、そうすると自分との両方で Dropbox Pro にしておく必要があってコスト的に厳しかった。

だとすると自宅に NAS か。評判が良い QNAP かなと思ったけれど自分がいなくなった時にこれもちょっと保守に困りそう。かといってバッファローあたりのもなぁということで結局 AirMac Time Capsule にしてみることにした。 QNAP よりは一般向けだし、自分が普段 Time Machine するのにも問題ないし、ちょっとしたファイル共有にも使えるっぽいし。それと Wi-Fi 接続なので煩かったら別の部屋に置いておけるというのもいいかなと(これはかなわなかったんだけれど)。

AirMac Time Capsule を設定

開梱して電源ケーブルを接続。電源スイッチが無いのね。使わない時は切っておいてもいいかなと思ったんだけれど、常時起動前提の製品か。

OS X の AirMacユーティリティから設定開始。

  1. 「オプション」
  2. 「既存のネットワークに追加」
  3. 「次へ」

とするも「この AirMac Time Capsule でネットワークを作成します。」画面になってしまう。あれっと思いつつ進めてみるもやっぱり自身がアクセスポイントになってしまう。そうじゃなくて既にある Wi-Fi ネットワークにつながって欲しいんだけれどなぁ。

リセットしたりしながらいろいろ試してみたんだけれど結局駄目。そのうちAirMacユーティリティで設定しようにも「予期しないエラーが置きました。やり直してください。」で先に進まなくなってしまって青ざめたんだけれど、こちらは電源ケーブルを抜いてしばらくしてからリセットボタン押しながらの電源ケーブル挿しで戻った。怖い怖い。

iPod touch (iOS)の設定からや AirMac ユーティリティ 5.6.1 (Windows) からも試したけれどやっぱり「既存のネットワークに追加」できず。ああ、このモデルはクライアントモードをサポートしていないのかぁ。無念。

Wi-Fi ネットワーク自体は AtermWR9500N x 2 で組んであって今すぐに変えるのも手間だし、HDD 内蔵しているデバイスをルータにするのも故障した時にちょっとなというのがあって、いったん泣く泣く有線接続した。幸い使ってみたところ動作音はほとんど気にならないので、リビングに置いておいても問題ないのは良かった。

IEEE 802.11ac という点では良いので、気がむいたらその時は AirMac Time Capsuleルータにしてみようかなぁ。AirMac Time CapsuleMacBook Pro 間が速くなるし。


[ 4月11日全て ]

2015年4月19日 (日)

AirMac Time Capsule共有フォルダとローカルディレクトリとを Unison で双方向同期させる

昨日 Linux から AirMac Time Capsule をマウントできるようになったので次はファイルの双方向同期の設定。AirMac Time Capsule の共有ディスク上に写真を置いて家族共有するのだけれど、AirMac Time Capsule にしかファイルが無い状態は当然避けたいので、ローカルディレクトリとファイル同期しておく。

Unison File Synchronizer

OS X 用の良さそげな双方向ファイル同期アプリが無いかなと探していたんだけれど、これっというのが無いので結局 LinuxFreeBSD 上で長年使っている Unison File Synchronizer を使うことにした。 OS X だといちおう GUI 版もある。Unison はメンテが止まるかなーと思いつつもたまにアップデートされているので今のところまだしばらく使えそう。

OS X と同期

Unison の設定は下記の通り。違う共有ディスクがマウントされている時に間違えて実行しないように mountpoint を指定。パーミッションの変更ができなくて Unisonエラーになるので perms = 0 にしておいた。

 times = true

 root = /Users/naney/archive/family
 root = /Volumes/Data/archive/family
 mountpoint = family-photo

 perms = 0

Linux と同期

Unison の設定は下記の通り。/mnt にマウントした状態で実行する。マウント間違い対策として mountpoint を指定。

 times = true

 root = /home/naney/archive/family
 root = /mnt/archive/family
 mountpoint = family-photo

[ 4月19日全て ]

2015年5月26日 (火)

今日のさえずり: 「Naney さんの好きそうな言葉選びました。『秘密結社』」

2015年05月26日

  • 10:03 ヒヤロンて保冷時間約40分か。想像していたより短め。
  • 12:48 Mac でレインボーカーソルがくるくる回っているのをみて「風車の弥七思い出しますねー、あ 1942 の。」って言ったんだけれど当然通じなかった。
  • 14:14 “WebAPIでエラーをどう表現すべき?15のサービスを調査してみた - Qiita” http://bit.ly/1JSvC1X
  • 20:20 嵐のコンサートと被るから学会大会の日をずらすって。
  • 20:32Naney さんの好きそうな言葉選びました。『秘密結社』」って。いやいやいや、おいおいおい(嫌いじゃない)。

[ 5月26日全て ]

2015年10月23日 (金)

Xperia GX に挿していた microSDHCカードが壊れたとか【日記】

AppMonster Pro でとっているアプリのバックアップが随分増えたのでバックアップフォルダを本体から microSDHCカードに移そうとしたのですがエラーで失敗。あれっと思ったら microSDHCカード自体がエラーでマウントできなくなってしまいました。

幸いmicroSDHCカードには重要なデータは置いていなかった(と思う)ので被害はそれほど無しでしたが、やはりスマートフォン(だけ)にデータを置かないようにしようと改めて思った次第です。この間 Google フォトの設定もしましたし、スマートフォンにしかないデータはこれで無いはず。


[ 10月23日全て ]

2015年12月31日 (木)

今日のさえずり: 大晦日なので人生をゲームしました

naney:23709227439

2015年12月31日


[ 12月31日全て ]

2016年1月3日 (日)

今日のさえずり: 今年最初のアイカツ! 活動

2016年01月03日


[ 1月3日全て ]

2016年1月26日 (火)

とうとう Instagram アカウントを作成

とうとう Instagram アカウントを作成しました。

iOS 版から遅れて Android (2.2 以降) 用の Instagram アプリがリリースされたのが2012年4月3日。しかしながら当時使っていた Xperia SO-01B は Android 2.1 だったので使えず出遅れたこともあって使わずじまい。

撮った写真の共有先も Flickr + TwittermixiFacebook がありましたし、フィルタ加工してエセオシャレ写真にする欲求も無かったので、あえて Instagram を使う理由もあまりありませんでした。

まあそうはいっても使った経験が無いというのもいかがなものかということでようやく使ってみることに。

当然ユーザーネーム naney (Naney) はもう取れないのでテンションはちょっと低めです。

アカウント作成はちょっとはまる

Android アプリからメールアドレスを入力してアカウント作成を始めたのですが、名前・ユーザーネーム・パスワードを入力して「次へ」をタップしても画面が切り替わらず先へ進めません。エラー表示も無し。何回もチャレンジしたあと、もしかしてと思って Wi-Fi を切って LTE 回線にしたら先に進めました。なんでしょう。たまたまこちらの回線の問題だったのでしょうか、それともアカウント大量作成対策にはまってしまったのでしょうか。私も仕事で不正利用対策に取り組んでいるので、そういう可能性もあるのかなと考えてしまいました。

とりあえず誰もフォローしていないので全く面白くありません。ぼちぼち使っていくことにします。


[ 1月26日全て ]

2016年5月7日 (土)

Android デバイスの連絡先同期が止まっているのに気がついた

Xperia Z5 の連絡先の同期が4月29日から「現在同期で問題が発生しています。しばらくお待ちください。」で止まっているのに気がつきました。面倒な事態の予感です。

Android デバイス側でキャッシュやデータを削除したり Google アカウント削除して追加しなおしたり、あるいは PC (Web) 側で同期エラー以前まで復元してみたりいったんエクスポートして全削除しインポートし直したりなどをいろいろな順番でやってみましたが、やはりうまく同期できません(Web から端末側に1回同期が成功したことがあったのですが、やはりその後の変更は双方向どちらとも反映されず)。なお、この状況でも Xperia GX の方では同期できているといった状況。

ゴールデウィーク残り2日となる今日1日中トライしましたけれども駄目でした。長期戦になりそうです。


[ 5月7日全て ]

Related term

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS の企画開発を行うグループのマネージャーをしています。CS 向上・コミュニティマネジメント・ユーザーサポート・健全化などにも取り組んでいます。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス

Process Time: 0.077526s / load averages: 0.76, 0.70, 0.60
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker