ぜんぶなんとかなる

ふしみの雑文

localhost で virtualDocumentRoot

いちいちサブドメイン切るのがだるいので、このサーバでは httpd.conf にこんな感じで書いてる

ServerName sidestepism.com
ServerAlias *.sidestepism.com

RewriteEngine on
RewriteCond /var/www/html/sidestepism.com/%{HTTP_HOST}/web !-d
RewriteRule ^ http://sidestepism.com/ [R=permanent,L]

UseCanonicalName Off
VirtualDocumentRoot /var/www/html/sidestepism.com/%0/web

これで、/var/www/html/sidestepism.com/***.sidestepism.com/web というディレクトリを作るだけでそこをDocumentRootとするサブドメインを作れる。

localhostでも、hoge.localhost みたいに気軽にサブドメインを作れたら便利だ。/etc/hosts ファイルに

127.0.0.1   hoge.localhost

と書けばいいような気がするが、ワイルドカードには対応していないのでいちいち sudo vi /etc/hosts とかやらなきゃいけなくてめんどくさい。ディレクトリ切るだけがいい。

こういう pac ファイルを作って、動的プロキシ指定に使うことにした。

function FindProxyForURL(url, host) {
if (shExpMatch(host, “*.loc”)) {
return “PROXY localhost”;
}
if (shExpMatch(host, “localhost”)) {
return “PROXY localhost”;
}
return “DIRECT”;
}

.localhost だと長くて打つのが疲れるので .loc にした。これで、hoge.loc で localhost にアクセスできる。

あとは apache の設定。

<virtualhost *:80>
ServerName server.loc
ServerAlias *.loc

UseCanonicalName Off
VirtualDocumentRoot /Users/ryohei/Sites/%1/web
</virtualhost>

これで、 /Users/ryohei/Sites/hoge/web にディレクトリを作るだけで hoge.loc というドメインからアクセスできるようになった。

(追記)

この方法では、apacheをプロクシサーバとして認識させているので、REQUEST_URI に “http://… ” の文字列がわたってしまう。普通は REQUEST_URIスキーマやホストは含まれないので、誤動作するスクリプトがある。

apache から送られてきた REQUEST_URI を使うようなコードを使う場合は、以下のように書き換える必要がある(phpの例)。

if(mb_ereg_match(‘https?://’, $_SERVER['REQUEST_URI'])){
$_SERVER['REQUEST_URI'] = mb_ereg_replace(‘https?://’.$_SERVER['HTTP_HOST'], ”, $_SERVER['REQUEST_URI']);
};

ここはハマると見つけづらいので注意。

HDMI/RCAのカメラ映像とキャプチャ画像でMacで配信するメモ

結論: HDMI, RCA, VGA からのソースを切り替えながら配信する場合、すべてRCAにダウンキャストして切り替えるのが良い

  • HDMIしか出力できないカメラA
  • RCA/S端子しか出力できないカメラB
  • VGAしか出力できないPC

これらの映像源からの映像を切り替えながらPinPMacBookでニコ生配信する環境を構築したメモ。音声は別系統から取ってくるので今回は扱わない。また今回は、以下のような条件もある。

  • PC・カメラAから配信マシンまでの距離が20m
  • カメラBから配信マシンまでの距離が3m

アナログ信号(コンポジット・VGA)がブースターなしで伝送できる距離はだいたい20~30mといわれている。かなりギリギリだ。

まず、それぞれの映像源からMacまでの伝送路、それから最終的にMacに取り込むキャプチャ機器に分けて考える。

MacBook Air にはもちろんキャプチャボードは刺せないので、キャプチャ機器を買う必要がある。現状で出ているのはVGA, コンポジットRCA/S端子のもの。HDMIはまだない。

ということで、最終的にはVGA, コンポジットS端子のどちらかにまとめる必要がある。VGAはVGA2USBという機器もあり、高いがわりと実績があるらしいのだが、そもそもコンポジットS端子VGAへの変換がかなり難しい(というかニッチ)なのもあり、コンポジットS端子に統一する。

ちなみにVGA2USBはは実用に使えるLRというモデルが 100,000 からスタートするのに対し、S端子に対応したUSBキャプチャは需要が多いだけにかなり出回っている (\3000くらいから) 。テレビ向けへの出力をPCに取り込むために使えるからだ。いまどきコンポジット? という疑問もあるが、ニコ生で配信する時点で512×384まで落ちるし、bpsを落とすとノイズも交じる。なにより他の選択肢がないんだから仕方ない。

取り込み口がS端子と決まったので、あとはHDMI, VGAの画像をS端子に変換するダウンキャストコンバータを買う。これも、PC向けの出力をS端子しかない古いテレビで再生するためのものが市場にたくさん出ている。だいたい5,000円くらい。

もちろん長距離の伝送に強い順に HDMI(デジタル) > VGA(アナログ) > コンポジット(アナログ) なので、ダウンキャストするのはなるべく配信PCに近いほうがいい。S端子に変換するのはなるべく手前にする。このくらいの構成ならこれだけ複雑でも個人で出せるくらいの金額に落ち着く。ちなみに、「Macであること」の制限があるのはキャプチャ部分だけで、S端子を選んだ場合はMac/Win間でそこまで大きな環境の差はない。

HDMIの場合も、HDMIをキャプチャするビットレート>USB2.0の最大伝送速度なので、HDMIではUSB2.0接続のビデオキャプチャが作れないという規格的な問題がある。ただしWinの場合、Express Card や PCIカードで HDMI をキャプチャする機器があるので、対応するマシンを使っていればそれらを使うことができる。またVGA2USBはMac/Win両対応をうたっている。

ただしニコ生の場合、便利なニコ生専用配信ソフトが Windowsのみ対応なので、Macでは Adobe Flash Media Live Encoder で頑張らなければならない。意外と操作がややこしくて難しい。やはりノウハウの溜まり方や、こういったソフト面のサポートはWindowsのほうがラクだろう。

部屋探しの方法

部屋探しの方法。 text.stepism.com からの転載記事です。

  • 準備

    • どうしてもハイシーズン (1月〜3月) に引っ越さなければならない人も多いはず
    • 時間をかけて部屋探しすると、すぐに奪い取られる可能性があるので、まずは相場感を付けて、良い物件を見たら1日以内に申し込みまで済ませられるように準備。
    • 2日以上連続した、ほぼ自由に使える日を確保しておいて、そこで勝負をかける。
  • ネットで調べる

    • 検索条件は広めに入力してとにかくたくさんの間取り図を見る。
    • 気になった物件は、特徴のキーワードといっしょにメモ。同じ物件を複数の不動産会社から掲載している場合は、それも全てメモする。
    • 掲載期限は短いので、URLだけではだめ。最低限、住所と駅徒歩と家賃はメモ。
    • 個人的なおすすめ物件サイト
      • CHINTAI, 楽天不動産, いい部屋ネット
      • suumo はだめ (掲載料も高い)
      • HOME's もあんまり良いのない
  • 不動産会社を回る

    • ぼくは過去2回の引っ越しで、5〜10軒程度回りました。
    • できれば予約していく。最初に「n時に次の予定がある」と宣言する。あまりにも待たされるなら途中で帰る。
    • 学生であることは伏せたほうが良い場合も。暇そうにしてるとひたすら待たされる。
    • 序盤は、主に候補に残った物件を内見させてもらうため + そこにあるよりよい物件を紹介してもらうため。
    • 中盤以降は、第1〜第3候補くらいの物件を見せて「これより条件が良い物件ではないと検討しない」と言う。何か出てくればラッキー。
    • いくつか回ってみて、候補よりよい物件が出なくなってきた段階で、その時点の候補から検討する。
  • 内見について

    • ハイシーズンの内見は、クルマや鍵の手配などとにかく時間がかかるので、朝イチから動く。
    • 物件や相場勘についての意見は、クルマ係の人にも聞いてみる (デスクで出てきた人より下っ端)
    • 回る順番を工夫して、次の不動産屋さんの近くで降ろしてもらえるようにお願いする
    • 一度事務所に行った不動産会社なら、相談して現地集合でもOK
    • 内見の時のチェックポイント
      • 一般的なポイント以外だと、排水、雨や雪の日の屋根、引っ越しのクルマの通路、LANポート/電話回線とコンセント配置、携帯やモバイルルータの電波など
  • 不動産屋のマナー

    • 不動産屋をハシゴして、他の不動産屋でもらった間取り図を見せると、勝手に自分で空室確認して「うちで契約しませんか」と持ちかけられる
    • ある意味「横取り」行為だが、仲介手数料半額などメリットがある交渉ならばそちらで契約しても良いのかも?
  • 格安物件はなぜ生まれるのか

    • もちろん何かの不安条件とのトレードオフ
      • 「外観がボロい」
      • 「日当たりが悪い」
      • 「騒音がすごい」
      • 「周りの居住者が怪しい」
    • まずは直接不動産屋に聞いてみる・内見で直接確認する。
    • 他の人は昼間に内見するだけなので、騒音や周りの居住者は、夜に行くと自分で検証できる。自分の足でカバーできる不安要素をクリア出来れば、「単に安いだけのお得物件」になる。周辺環境間取り図の下に載っている管理会社に直接電話してみてもOK
    • ネットで見つかれば「物件掲載日」が分かるので、何週間残っている物件なのかチェックする。もし長く残っている物件なら家賃交渉の余地があるかも (シーズン後半ほど交渉しやすい)。
    • 売れ残っているのに、内見して欠点が見つからない物件はもっとヤバイ可能性がある (ex. 大家さんの人柄, 暴力団関係者など)。
  • 住所の話

    • 教育サービスやステイタスなどの理由で、住所に拘る人は意外と多い
    • 2K以上のファミリー層と競合する物件を探すときには重要。
    • 区の切れ目に住むとゴミ出しする曜日が増えて楽 (ほんとはだめです)。
  • 分譲賃貸

    • 詳しくは ggr
    • ポイントは「狭くても設備がしっかりしてる」「たまにオーナーの事情で掘り出し物がある」「居住審査がゆるめ→ヤバイ場合も」
    • 東大周辺で言えば湯島駅至近などは怪しい。。(お察しください)
    • 住宅街なら大丈夫な可能性もある。自身で要チェック。

がんばってくださいね+

うまいキーマカレーを作る

目標設定

自炊たるもの持続可能でなければ意味がない。以下のポイントを守る。

  • うまい (重要)
  • 野菜が摂取できる
  • 原価が安い
  • 材料がどこでも調達できる
  • 材料の保存が効く

必要なもの

  • セロリ
  • 玉ねぎ
  • 人参
  • 生姜
  • にんにく
  • 三種冷凍ピーマン
  • ひき肉
  • トマト缶

この中でいちばん日持ちの悪いものはセロリだが、葉物の中では比較的日持ちがする。玉ねぎ、人参は適切に保存すれば2週間くらいは保つ。生姜、にんにくは2ヶ月くらいは保つのではないだろうか。ピーマン、ひき肉は肉のハナマサなど、業務用スーパーで大量に買って冷凍しておく。

カレースパイス

市販のカレールウでも、カレースパイスでも良い。自分はスパイスだけでは味にばらつきが出来るので、ルウも少量入れる。

だいたい以下の5種あればよい。エスビーフーズの通販か、上野アメ横の大津屋で買える。

おおざっぱに、すべてティースプーン山盛り入れればわりとカレーっぽい味になる。この中では、ガラムマサラのみ、入れすぎると辛くなりすぎるので調整しながら入れる必要がある。不安ならカレールウを1欠け入れると無難な味になる。

レシピ

  1. まず挽肉を解凍しておく。
  2. 生姜・にんにくをブレンダーで細かくする。
  3. 人参・玉ねぎ・セロリをチョッパーでみじん切りにする
  4. 挽肉が解凍できたら、ピーマンを解凍しておく
  5. 油を引き、生姜、にんにくを軽く炒め、挽肉を入れる。ここで塩コショウをする。
  6. 全体に火が通ったら、肉汁が飛んでしまわないうちに玉ねぎ・人参を入れる。
  7. セロリ、解凍したピーマンを入れる。
  8. しばらく水気を飛ばしてトマト缶を入れる。
  9. カレールウを入れる。スパイスで作りたければ、スパイスを入れる。
  10. 煮込む。好みで、中華スープの元を入れる。

ポイントは、生姜を多めに入れること(生スパイスの一種)。好みのクセの強さにあわせて、ルウや中華スープの素などの増減で調整する。

アレンジ

やったことあるものだけ。

  • ターメリックライスにする。バターがあれば、炊く前にひとかけ乗せておくとおいしい。チューブのものでもよい。
  • グリーンピースなど、入手しやすい豆類を添える。
  • 豚肉や羊肉にしたり、ナスやキノコ類を入れたりする。
  • セロリの葉に近い部分を残しておいて、最後にのせる。
  • 目玉焼きをのせる。

保存の効く材料はすべて安いものを買い貯めしておけば、1食150円くらいで生活できる。

NuGet で package を公開する

NuGet という、Microsoft 謹製のパッケージマネージャが存在する。Visual Studio に付属しており、NuGet から様々なモジュールをインストールできる。依存関係もうまく解決してくれる。

NuGet の package は、NuGet.exe というバイナリを使って作成・公開できる。msdn のサイトで詳しい解説がある。

http://msdn.microsoft.com/ja-jp/magazine/hh547106.aspx http://msdn.microsoft.com/ja-jp/magazine/hh708753.aspx

実際には、JavaScript のライブラリなど、上記の資料が役に立たない場合も多い。「NuGet Package Explorer」という便利なツールが CodePlex 上で公開されているのでこれを使う。

NuGet Package Explorer

このページ を参考にしながら、適宜スクショをパクりつつ、NPE を使って NuGet のパッケージを Publish するところまでやってみる。

Nuget Package Explorer

Create New Package を選ぶ。

Edit から Edit Package Metadata

上記のページを参考にいろいろ入れる

Id (Mandatory)– This is the name by which devs will be installing it. So to install the above package you have to say Install-package Google.DiffMatchPatch.Js No spaces and special characters allowed in this field.

Version (Mandatory) – If this is your library, following the naming conventions you usually do and map this value to the version of code you are going to package.

Title – A descriptive name of the package

Authors (Mandatory) – This is the package Author usually. Since I am packaging on Neil’s behalf I have made it clear.

Owner – Owner of the code

Icon – If you have a nice icon available for your package the url that goes here

Project Url – URL where the project is hosted or where more information can be obtained about the project.

Requires License Agreement – If you wish explicit license agreement check this. This will publish a license warning when the package is deployed from the console.

Summary – A summary of what the package is about.

Description (Mandatory) – Detailed description of what the package is about. Release Notes – If any.

Version が同じパッケージは再度アップロードできない。最初の数回の publish は、ディレクトリ構成などを変更しながら様子を見ようと思うなら、ここを 1.0.0 などにすべきではない。最終的に公開したいバージョン番号より小さな数字で試す。

他のパッケージへの依存関係があれば、ここで登録しておく。

パッケージの中に contents フォルダを追加する。contents フォルダの中に、実際のソースコードなどを詰めることになる。

フォルダの中には、エクスプローラから D&D で自由にファイルを入れられる。ちゃんと入ったら、「Save」で「~/nuget」など適当なフォルダの中に入れる。

ちゃんとパッケージとして機能するかどうか、ローカルで試してみる。Visual Studio Express 2012 なら、「ツール」→「ライブラリ パッケージ マネージャ」→「ソリューションの NuGet パッケージの管理」を選んで、NuGet パッケージマネージャを起動する。

右下の「設定(S)」をクリックし、リポジトリ (利用可能なパッケージソース) に C:\Users\Ryohei\nuget など、さっき保存したフォルダへのパスを入力する。適当に名前をつける。

パッケージマネージャに戻って、「オンライン」から登録したローカルのパッケージソースを選択すると、さっき作ったパッケージがアップロードされていることが確認できる。インストールしてみて、フォルダ構成などを確認する。

あとは、再度NPEに戻り、「FILE」から「Publish」。 nuget.org で取得できる Deploy Key を入力すると、Publish できる。

参考: http://www.dotnetcurry.com/ShowArticle.aspx?ID=781

Windows 8 で開発環境構築 その1

経緯

Windows 8 で開発環境を構築する必要があった。お察しください。

とりあえず

Chrome インストール。Google 日本語入力インストール。といっても MS-IME は最近は賢いんだっけ。

Synergy

手元の MacBook Air で Windows を制御したい。Synergy を入れる。Windows 側の Client を立ち上げるときに、Elevate にチェックを入れていないと、UAC (管理者として実行ボタン) 上やログインスクリーンで Synergy が働かない。

Cygwin

Cygwin を入れる。 cygwin.com

途中のインストールするパッケージを選ぶ画面で、curlwget のパッケージだけは最低限インストールしておく必要が有る。

apt-cyg

Cygwin では、たとえば ruby とか新しいパッケージを入れるのに、setup.exe というインストールに使ったバイナリを使用する必要がありとても面倒なので、パッケージ管理システムにあたる apt-cyg を入れる。

.bashrc に、近いミラーを指定しておく (iij.ad.jp)。

alias apt-cyg='apt-cyg -m ftp://ftp.iij.ad.jp/pub/cygwin/ -c /package'

(.cygrc みたいなのがあるのかも)

その他

あとは apt-cyg で、必要な物はおおかた揃う。

apt-cyg git

http-equiv とはなにか

http-equiv = "HTTP (Header) Equivalent"

<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">

これは HTTP ヘッダで以下のように指定したのと同じ意味。

Content-Type: text/html; charset=Shift_JIS

IE 系の互換モード指定も

<meta http-equiv="x-ua-compatible" content="IE=Edge">

これと同じ意味。同じ名前のヘッダは上書きされます。

X-UA-Compatible: IE=Edge

「おまじない」として紹介されがちなこいつも同じです。

<meta http-equiv="refresh" content="1;URL=http://google.com">

ただし

すこし考えればあたりまえだけど

<meta http-equiv="Access-Control-Allow-Origin" content="*">
<!-- don't work -->