![]() |
|
![]() |
|
![]() |
|
ここのところ、金銭感覚というか、お金に関する基準があやふやで、自分自身の買い物に対する評価が出来ません。
商品にかけられた手間、商品からうける影響、自分の満足度、消費される時間、など色々な要素があると思うんですが、それらに関するモデルが自分の中に無い感じです。
みなさんは上記の買い物に関して「良い」「悪い」で言ったらそれぞれどう思われるでしょうか。
判断基準なども教えていただけると参考になります・・・。
![]() |
|
![]() |
|
![]() |
|
ここのところ、金銭感覚というか、お金に関する基準があやふやで、自分自身の買い物に対する評価が出来ません。
商品にかけられた手間、商品からうける影響、自分の満足度、消費される時間、など色々な要素があると思うんですが、それらに関するモデルが自分の中に無い感じです。
みなさんは上記の買い物に関して「良い」「悪い」で言ったらそれぞれどう思われるでしょうか。
判断基準なども教えていただけると参考になります・・・。
この前書いたこの問題。
長いので以下ステージング環境認証問題と言うことにします。
(ステージング環境についてはこちら)
元エントリーにもコメントをいただき、大変参考になりました。僕の場合、3日考えて良い解決法が見つからない時は大抵1ヶ月かかっても見つからないのでブログに書いたり人に助けを求めたりします。(サーセン・・・)
今回もそれを実行したところid:dandasoにナイスアイデアを頂きました。(Thanks!)
皆様方におかれましては、
「そんなに悩むところか?」
感が否めないかもしれませんが、僕と同じく悩んだ方がいて、参考になったりすれば幸いです。
ステージング環境認証問題対応方法
一言で言うと、「クッキーの値で認証する」ということです。
fooというアプリがあるとして、まず、下記のようなBASIC認証をがかかった認証用クッキーを設定するプログラムを見えないとこに置きます。(PHPが便利でした)
<?php
$user = 'foo';
$pass = 'bar';
$realm = 'foo';
if ($_SERVER['PHP_AUTH_USER'] === $user and $_SERVER['PHP_AUTH_PW'] === $pass):
setcookie($realm, sha1($pass));
header('Location: /');
else:
header("WWW-Authenticate: Basic realm=\"{$realm}\"");
header("HTTP/1.0 401 Unauthorized");
?>
<html>
<head>
<title>Authentication</title>
</head>
<body>
<h1>Authentication</h1>
<p>正しいユーザー名とパスワードを入力してください。</p>
</body>
</html>
<?php endif ?>
本来、問題になっているアプリ「foo」に上記のアプリのAliasを張ります。(上記をfooのリポジトリに入れたくないので)
<VirtualHost *:80>
ServerName foo
Alias /auth /path_to/auth.php
...(snip)...
</VirtualHost>
fooのアプリのApplicationControllerでlogin_required(本来のBASIC認証)より先にcookieを見て認証します。(認証失敗したらさっきのPHPにリダイレクトする)
require 'digest/sha1'
class ApplicationController < ActionController::Base
...(snip)...
before_filter :cookie_auth_required if $STAGING
def cookie_auth_required
redirect_to "/auth" unless cookies["foo"] == Digest::SHA1.hexdigest("bar")
end
end
ステージング環境でのみこの認証を追加したいので、capの設定ファイルにステージング環境用フラグを追加するタスクを書きます。(フラグの書き方、もっとキモくない方法しりたいです・・・)
config/deploy/staging.rb:
namespace :deploy do
desc 'Added staging flag in production.rb'
task :before_restart do
run "echo '$STAGING = true' >> #{current_path}/config/environments/production.rb"
end
end
これで http://foo/auth というURLと foo / bar というID/PASSをお客さんに教えることでステージング環境を認証有りで確認してもらうことができました。
お客さんの手間と本来のアプリのリポジトリの影響を最小限にしたいがためにこんな形になりました。
ブラウザを閉じるまでの間、cookie内にパスワード(のハッシュ)があるので大事な認証に使うのは辞めた方がいいと思います。利便性とのトレードオフで今回の自分ような、見られても致命的な影響が無いものならいいかなと思いました。
Apacheの設定とかでcookieの値を見てはじければ、fooから認証コードが取れてもっとよさげです。そういうモジュールとか無いのかな?引き続き模索してみます。
参照お客さんにWebサイト作成の進行状況を確認してもらうための環境をBASIC認証をかけて公開することがよくあります。(本番とは別)
しかし、Railsのrestful_authenticationプラグインだとユーザー認証にBASIC認証を使うために、apache側でかけたBASIC認証と二重になってしまってうまくありません。(ユーザー認証がBASIC認証だというのは理に適っていて辞めたくない感じです)
IP制限を使ってましたが、確認してもらうお客さんが複数いたり、IPが一定しないと使い勝手がよくありません。
プロクシなどは一般のお客さんに使ってくれと言うのは厳しいです。
こういうとき皆さんどうしてますか?
追記:
こういう対応になりました・・・。
ベトナムに戻ります – Rails で行こう!しかしなあ・・・。くだらない話、もし私が最上流工程を担当するとなったら、スーツを着て、東京で堅苦しい生活を送らなければならないだろう・・・とほほ(苦笑)。それが私のボヘミアン(放浪者)な部分とうまく整合しないのである。このジレンマにはこの10年間悩まされてきた。そろそろケリをつけるべきときだろうが、どうしたらものやら。
海外のベンチャーだとチラホラ聞くけど、日本でもまったく会わないでSCMとBTSとSkypeだけで開発することできないのかな。
rono23はボリビア(南米)好きだというので、
「南米からコミットして円稼いだら?」
などという話をするんだけど、自宅警備員とかもこうやって働けないかな。
具体的にはRedmineのチケットの「予定工数×時給」を受け取るという・・・。
自社サービスの場合はちゃんと個人情報を隔離すれば無理では無さそうな気がする。自分で金払えるようになったら試してみたい。
6000円ストア作りました。
参考になるCakePHPのアプリのソースを探してCakeforgeのCheesecake Photoblogというのをインストールしてみました。
CakeForge: Cheesecake Photoblog: Project InfoA simple to setup and use Photoblog using cake which has theming, tags, comments and archive browsing using several options. more information on http://cheesecake-photoblog.org
CakeforgeでCakePHP自身の次にダウンロードされてるそうです。最新安定板である1.5.1 Stableを使ってみました。
Quick Start1. Untar and upload the entire contents of the tarball in a folder of your liking on your website 2. Go to http://yourdomain.com/path_to_your_cheesecake_install/install/ and follow the instructions on screen
インストール方法はREADMEの通り簡単ですが、下記を直さないと画面真っ白です。
diff app/views/layouts/default.thtml{,.org}
15c15
< <script type='text/javascript'></script>
---
> <script type='text/javascript'>
普通のフォトブログですが、テーマをサポートしてたり、CakePHPをベースにオープンソースソフトを作る参考になりそうです。
朝から
「remedieというものがあるらしいけど、ニコ厨ってだけで致命的なのに、あんな便利そうなものを使い出したらおれは仕事をせずに餓死するから使いません。」
という話をしたら、rono23が熱心に仕事してる振りしてMacにremedie入れて俺に自慢してきた。
そんなもん見せられて入れないでいることができるわけがない。もし俺が餓死したらあんた殺人者だぞ。
ということでremedie入れてみた。
Debian etchにremedie
gitは入ってるのでclone(etchで新しいgitを使う場合はこちら)
git clone git://github.com/miyagawa/remedie.git
LibXML2関係に必要なのでlibxml2-devを入れる。
sudo apt-get install libxml2-dev
CPAN祭り(HTTP::Engineだけテスト通らなかったのでforce)
sudo perl -MCPAN -e shell
install Bundle::CPAN
install Module::Install
install Feed::Find
install FindBin::libs
force install HTTP::Engine
install Image::Info
install JSON::XS
install Log::Log4perl
install MIME::Types
install MooseX::ConfigFromFile
install MooseX::Getopt
install Path::Class
install Rose::DB
install Rose::DB::Object
install String::CamelCase
install XML::RSS::LibXML
install DBD::SQLite
install Log::Dispatch
install File::Find::Rule
install XML::Atom
install XML::Feed
install Template
install DateTime::Format::ISO8601
install MooseX::ClassAttribute
install File::Find::Rule::Filesys::Virtual
install HTML::ResolveLink
install HTML::Selector::XPath
install YAML::Syck
install Cache::FileCache
install Web::Scraper
install HTML::Scrubber
install Path::Class::Unicode
install Text::Tags::Parser
install String::ShellQuote
install XML::OPML::LibXML
install Module::Install::AuthorTests
install Date::Parse
install XML::LibXML::Simple
install DBI
DBD::SQLiteがおかしいのでDBD::SQLite::Amalgamationを使う。
svn co http://svn.coderepos.org/share/lang/perl/DBD-YASQLite/trunk/ ./DBD-YASQLite
cd DBD-YASQLite
cat PLEAAAAAAAAAAASEEEEEE_READDDDDDDDDDDDDDD_MEEEEE
THIS IS FORK VERSION OF DBD::SQLite, DBD::SQLite::Amalgamination.
I want to use it, but DBD::SQLite doesn't maintained by maintener.
DBD::SQLite has a lot of known bugs.
perl Makefile.PL
make
make test
sudo make install
心の叫びを無視して続けます。
cd ../remedia
perl Makefile.PL
make
make test
perl -Ilib ./bin/remedie-server.pl
http://localhost:10010 で起動した。 ワーオ。
Apacheからremedieに転送
ローカルではApache使ってるのでremedieからlocalhost:10010にmod_proxyで飛ばす設定をしました。
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo vi /etc/apache2/sites-avalable/remedie
<VirtualHost *:80>
ServerName remedie
DocumentRoot /var/www/
CustomLog /var/log/apache2/remedie-access.log combined
ErrorLog /var/log/apache2/remedie-error.log
ProxyPass / http://localhost:10010/
ProxyPassReverse / http://localhost:10010/
</VirtualHost>
sudo a2ensite remedie
sudo /etc/init.d/apache2 reload
mod_proxy_httpをロードしなければいけないというところでハマりました。
あとproxy.confでAllow from allしておく。 (coLinuxの中なのでWindowsからしかアクセスできないので適当)
いぃぃやっほう! アクセスし易くなった。
自動起動
ローカルなので自動起動して欲しい。 本来デーモン化して/etc/init.d/skel を元に起動スクリプトちゃんと書くところだけど面倒だし終了時は毎回シャットダウンなので適当なスクリプトを置きました。
(多分daemonizeみたいなのがあって簡単にdaemon化できるんだとおもうんだけどperlスキルが大昔で止まっているのでいじれない・・・)
sudo vi /etc/init.d/remedie
#!/bin/sh
cd /home/komagata/works/remedie/
nohup perl -I/home/komagata/works/remedie/lib /home/komagata/works/remedie/bin/remedie-server.pl &
sudo update-rc.d remedie defaults 99 1
これでcoLinux野郎も安心。 全体を通してremedie を remedia だと思ってたところが一番ハマりました。(何て発音すんの?)
このページをブラウザのトップに設定するのは仕事に深刻な影響が出そうです。
とはいってもあまりにも便利過ぎる。俺は餓死するだろう。
参考今日は朝から溜まった年金を払いに郵便局に行った。
瀕死の重傷を負った。おれは餓死する。
郵便局のサービスは良かった。銀行より気持ち荒々しく素早く客をさばいてくれた気がする。好感持ちました。
最近発見した買い物に便利なヒューリスティクスを紹介します。
「嗜好品の満足度は6000円に近づくほど上がる」
これを6000円の法則といいます。
もっと安い価格帯が普通のものでも、高いモノでも、満足度の高い商品は6000円に収束します。
最近の観測
電子レンジ:6,836円![]() |
|
![]() |
|
![]() |
|
ライフチェンジングな商品はいつも6000円なんですよ! 理由はさっぱりですが。
最近、新しいパソコンとか素敵な靴とか欲しいんですけど、
果たして自分にとって、
ホカホカご飯を提供してくれるあのデバイスや、冬場の安眠を大いにサポートしてくれた驚異の寝具や、コンピューターに対する考え方を一変させたバイブル*ほどの価値があるのか?と考えてしまってなかなか買えません。
6000円なら買うんだけど・・・。