以前の飲食(イタリアン)時代に、お店がオイスターバーを併設したため毎日毎日、北は北海道から南は熊本、果てはアメリカ・オーストラリアのいろいろな種類の牡蠣を食いまくっていた時期があります。(ほら、お客さんに説明しないといけないでしょ?)
そんな関係もあって牡蠣大好きなんです。
夏は岩牡蠣を求めて京都の久美浜へ車を走らせたり、冬は真牡蠣を求めて日生の牡蠣祭りへ行ったり。
そんな中、Web仲間の関係の方が牡蠣を出荷されてる、ということで、いてもたっても居られずお願いしてしまいました!6kg(笑)

たくさん入ってますね~坂越の牡蠣はすでに牡蠣のブランドとしての認知も高い!
試しに剥いてみました。

身がプリップリです!
味は、というと、程よい塩気にあふれ出てくる旨味。後味にありがちな生臭さやエグ味は全くなし。バランスも良くて、超美味いです!
いや~大満足!
しかし牡蠣で怖いのは食中りですよね。
犯人は「ノロウィルス」というやつで、冬になると度々ニュースを賑わせてますね。数十個程度でも体内で増殖してくれる憎い奴です。しかもその症状が半端無いという…
生牡蠣も、食べて5~8個くらいにしておきましょう、と提言しているところもありました(オイスターバー時代には30個以上食ってるおっちゃんも居ましたが…)
大体、1~2日ほど潜伏期間があって、後は地獄の苦しみ、ということなのですが、運良く当たったことが無いので…気をつけましょうね。
ちなみにこのウィルス、85℃1分で感染力がほぼ無くなるので、牡蠣もちゃんと加熱して食べれば問題ナッシングですよ~
公開自体はちょっと前に行ってて、実績ページにも掲載したんですが改めてご紹介。
武庫之荘で開院された、ちょっと変わった整体を施される「いむら整体院」さまのホームページを公開しました。
シンプルで簡単な作りにしてます。
施術を見せるための写真撮影も担当しました。みんな身内ばっかりなんですけどねw
モデルになってくれた、立ち仕事・酒飲みすぎの人の体が案外状態が良かったのには少し負けた気がしましたが、そんな人でも施術後には「体軽くなったわー」と。実際、公開はしてないけど施術前後の写真を見比べてみると、猫背気味だったのがシャキっとしていい感じの姿勢に。
文章については原稿を頂き、こちらで加筆・修正して…という流れです。
SEOなんかを意識した文章作りはまだまだスキル不足で。。。頑張っていかねば、と思う今日この頃。
ブログはライブドアの無料ブログを使用してます。妙に引き込まれるおもしろい文章ですよw
ブログへのリンクとなってる「relax」の画、ジャケットだかポスターだかのパクりなのですが、「分かる人が見たら、クスっと笑ってくれる」趣味がバレるものだそうです。
(この画へのコダワリがなかなかw)
保険の効く一般的な整体屋さんとは違って、行けば一発バッチリ回復・首ゴキゴキで気分爽快、というのではなく体を本来あるべき姿へ戻してくれる施術なので、初めて行くと変な感じかもしれませんが実際に効果は抜群!
是非一度行ってみては?
jQueryも1.4にバージョンアップして、高速化しただけじゃなくていろいろ機能追加されてるそうで。
偶然KAYACさんのところで紹介されてて、感動してしまった機能をここでもご紹介。
それは…
$.proxy()
Takes a function and returns a new one that will always have a particular scope.
ということなので、関数を与えると特定のスコープを常に持った新しい関数を返しますよ、という訳であってるんだと思うんですが…
本家のサイトにあるサンプルでは
JAVASCRIPT:
-
var obj = {
-
name: "John",
-
test: function() {
-
alert( this.name );
-
$("#test").unbind("click", obj.test);
-
}
-
};
-
-
$("#test").click( jQuery.proxy( obj, "test" ) );
はい、便利ですね~
と、ちょうど作ってたのがJSでの動的な画像の読み込み。
FirefoxやChromeだと、普通に要素のsrc属性に画像のURLを指定してあげれば読み込み完了と同時に画像を差し替えてくれるのですが、そこはホラ、IEですよ、奥さん。
Imageオブジェクトのcompleteプロパティを監視してtrueになったときにsrcに突っ込んであげないと画像を切り替えてくれない、というオマケ付きな訳なんですよ…orz
そこで、setIntervalで定期的にループさせてプロパティを監視することに。
ということは読み込みが完了したときにはclearIntervalでループを止めないといけないですよね~
そんな時に、この$.proxy()が役に立つ!
JAVASCRIPT:
-
function ImageLoad() {
-
this.img=new Image();
-
};
-
-
ImageLoad.prototype = {
-
changeImage:function(e, s) {
-
this.elm = e;
-
-
this.img.src = s;
-
-
this.timer = setInterval($.proxy(function() {
-
if (this.img.complete) {
-
$(this.elm).attr('src', this.img.src);
-
clearInterval(this.timer);
-
-
}
-
}, this), 200);
-
}
-
};
-
-
var img = new ImageLoad();
-
-
$('hoge').click(function() {
-
img.changeImage('#image', 'path/to/image.jpg');
-
});
こんな感じで使えます。
$.proxy()が無いと、thisのスコープが変わっちゃうので、なんか適当な変数を用意して、とかちょっと力業で実装したりかと思うのですが、綺麗にコーディングできますね!
いや~いいですね!jQuery1.4!
他にも素敵な機能追加があったりするので、また紹介できれば。
本日、はるばるアメリカからこんな物が届きました。

ちょっと背景に生活感が出まくってるので、無理矢理ボカシ入れましたがw
箱の中身は~

こんなんです。
で、装着すると、

こうなります。
もう街中で扱ってたら職質頂くこと請け合いw
ナニする物ぞ?と言った感じですが、これを使うと横360°、縦100°の範囲のパノラマを1ショットで撮影出来るようになってしまうのです。
1発で撮れてしまうので、その後の編集作業がかなり軽減されるため、単価の安いパノラマの提案が可能に。
画質が少し落ちて天地もないけど、安価にパノラマを導入されたいお客様へお勧めするサービスです。例えば賃貸とかの不動産など。
興味のある方がいらっしゃいましたら、お問い合わせのほど。。。
実際のサンプルは、明日の昼にでも三ノ宮で撮ってこようかと思ったり。
そして実は一番の目的は、こいつを使ってパノラマの動画など撮ってみようではないか、という点なのです。最近はお手軽にパノラマ動画を撮影出来るガジェットをSonyさんが発表しちゃいましたけどね…
やはりセンサーサイズを考えても解像度的に画質はサンプルを見るまでも無く、と思っていたりで棲み分けは出来るんじゃないかと。
動画については、Canon iVIS HF S11と、Canon EOS 5D Mark-II(借り物)の2機種でサンプルを撮っていこうと画策中。タブン次のEOS 60Dで動画機能も載るだろうし、頑張って稼いで新しいカメラの導入を…
神戸で毎月開催されているウェブの勉強会にてピーチクパーチクります。
今回はテーマが”HTML5&CSS3”ということで、「なんかそこら辺に絡む事を話せや」とお誘い頂いたので、Client-side Database strageについてお話することにしました。
HTML5から、Webのシステムで今や必須とも言えるデータベース(DB)を、サーバー上でなくローカルPC上で使えるようにしましょう、といった技術なんです。
めちゃくちゃ乱暴な言い方をすればCookieの高機能版(どちらかというと同じくHTML5で追加されたキーバリューストアという機能の方がCookieには近いのだが…)。
よく似た技術で、Google Gearにもこの機能がありましたね。結局HTML5で標準化されるのに伴ってGearの方は終了してしまいましたが。。。
「ローカルでもWebシステムが使用できる」という触れ込みだったかと思うのですが、これだけデバイスやインフラが整ってくると、あまりローカルに環境を持ってこなくても…と思ったりもしてしまう訳なんですが…
よく考えてみたら、iPhoneにもSafariが搭載されてるので(しかもClient-side DBは現在Safariにしか実装されてない)、簡単なiPhoneアプリくらいだと作れてしまうではないか、と。
ということで、今回の内容は簡単にClient-side DBの説明と、DBを操作するためのSQLのこれまた簡単な解説、クエリを投げるjsのコード紹介、んでこのDBを使って書籍を管理する超簡単なアプリの実演という流れで行こうと思ってます。
本当はアプリの実際のコードを追って行こうかとも思ったんですが、案外ボチボチな行数になってしまったので、実際のソースコードは配布してもらって、各自で見て頂くことになるかと思われ。
jQueryもちょこっと使ったりjsの説明は一切無しなので、そこらへんの知識が無いとツラいと思われますが、時間のこともあるので割愛御免。
興味のある方は是非ご参加ください。
日時:1/23(土) 13:30~17:30
場所:神戸元町 インキュベーションオフィスエリンサーブ KCCビル3F会議室
参加費:500円(運営費)
http://webteko.jp/
懇親会もありますので、そちらも是非w
全方位パノラマは特殊な雲台を使用してズレの無い写真を撮影した後、それぞれの写真を結合する必要があり、いろいろなソフトウェアがリリースされています。
20~30%ほど重なり合った隣り合う写真同士の、同じ箇所を特定することで2枚の写真を繋ぎ合わせて行きます。この「同じ箇所」を特定していくアルゴリズムなどがそれぞれのソフトウェアの特徴ともなっている訳なんです(他にもいろいろな画像処理その他で特徴はありますが)。
そんな中、オープンソースで開発が進められているパノラマ作成ソフトがHugin。正確には、上記の「同じ箇所」を特定するプログラムやレンズの収差を補正するソフトやら画像同士を結合させるソフトやらを統合して使いやすくしてくれるソフトな訳ですが。
で、今回のお話は「同じ箇所」を特定する部分で。
学術的には「Feature Point Detection」という分野で、ニホンゴで言えば「特徴点抽出」ですな。
以下、長文かつ文字ばっかりで一つも面白くないことを予めお断りしておきますw(リンク先もwikipediaばっかりだし)
続きを読む »
はい、エロい内容を想像した人は反省してくださいw
娘のために絵本を借りに市立図書館に行ったんですが(年末の話です…)、そこで見つけてしまいました、菊田まりこさんの絵本。

初めて菊田さんの絵本に出会ったのは、当時話題になってた「いつでも会える」だったんですが、その内容に感動してさらに買ったのが「君のためにできるコト」。結婚して娘ができた今、読み返してみると当時とは違った気持ちを覚えました。
今回、借りたのは上の写真の通り、「君はわらうかな」と「あの空を」の2冊。
「いつでも会える」…大切な人との別れを迎えてしまった方に。
「君のためにできるコト」…結婚しようかと考えてる人に。
「君はわらうかな」…大切な人を思うときに。
「あの空を」…夢に挫けてしまいそうなとき。
心に染み入ってくる大人向けの絵本です。
ぜひ。
あ、結婚する予定の人、絶対読んでね「君のためにできるコト」

「お伊勢まいらば お多賀へまいれ お伊勢お多賀の 子でござる」と謳われる多賀大社に初詣に行って参りました。
ここ数年、毎年お参りに行ってます。
去年ここで引いたおみくじの内容がバッチリ当たってまして、さて今年の内容はと引いてみたところ「今一度気持ちを引き締めるように」とのことだったので、改めて初心に返ってお仕事に望みたいと思います。
ところで新しいレンズ「SIGMA MACRO 50mm F2.8 EX DG」を購入しました(価格.comの最安値より安く、プロテクターも付属)。
コントラストも高くシャープでボケ味も綺麗なのに安い、といいとこずくめのコストパフォーマンス抜群のレンズです。

(↑F3.5なのでジャスピンが浅いですが。。。)
とはいえ20,000円するので、もうここら辺の価値観は総崩れしてますねw
このレンズ、スチール撮影だけでなく別の用途でも使っていく予定です。お楽しみに!
あけましておめでとうございます。
本年もよろしくお願いいたします。
新年一発目のエントリは技術ネタ、というかTipsというか、あんまり使いどころがよく分からんというか。。。
javascriptは関数の引数に変数を与えなくても
JAVASCRIPT:
-
function hoge() {
-
var arg1 = arguments[0];
-
var arg2 = arguments[1];
-
-
return arg1+arg2;
-
}
-
-
var sum = hoge(1, 2);
なんて感じで引数を取ることが出来ちゃうんですけれども、これだと引数の順番が固定になっちゃったりで、いまいちフレキシブルではないので、もうちょっと柔軟に出来んもんか、と考えたのがオブジェクトを渡す方法。
JAVASCRIPT:
-
function hoge(args) {
-
var arg1 = args["arg1"];
-
var arg2 = args["arg2"];
-
-
return arg1 + arg2;
-
}
-
-
var sum = hoge({"arg1":1, "arg2":2});
キーと変数渡してやればどうでしょ?ということで。
で、何の役に立つねん?というとこなんですが、実行したい関数を変数で与えて、その引数が関数毎に微妙に違うけど、処理は共通、みたいな。ややこしや。
JAVASCRIPT:
-
var funcs = {
-
//var getMemberPhoto = function(args) { <- 文法ミス
-
getMemberPhoto : function(args) {
-
var params = {
-
member_id:args["member_id"]
-
};
-
...
-
},
-
//var getCategoryPhoto = function(args) { <- 文法ミス
-
getCategoryPhoto : function(args) {
-
var params = {
-
category_id:args["category_id"]
-
};
-
...
-
},
-
//var getPhotoByPeriod = function(args) { <- 文法ミス
-
getPhotoByPeriod : function(args) {
-
var params = {
-
start_date:args["start_date"],
-
end_date:args["end_date"]
-
};
-
....
-
}
-
};
-
-
function getPhotos() {
-
var func = $("input[name=select_func]:checked").val();
-
var params = {};
-
$("#" + func + " .params").each(function() {
-
params[$(this).attr("name")] = $(this).val();
-
});
-
-
if (typeof funcs[func] == "function") {
-
funcs[func](params);
-
}
-
}
(追記)JSの文法ミスってました(汗)
HTML:
-
<label><input type="radio" name="select_func" value="getMemberPhoto" />指定メンバーの画像取得
-
<label><input type="radio" name="select_func" value="getCategoryPhoto" />指定カテゴリの画像取得
</label>
-
<label><input type="radio" name="select_func" value="getPhotoByPeriod" />期間を指定して画像を取得
</label>
-
-
<div id="getMemberPhoto">
-
<select class="params" name="member_id">
-
-
...
-
</select>
-
</div>
-
-
<div id="getCategoryPhoto">
-
...
-
</div>
-
-
<div id="getPhotoByPeriod">
-
...
-
</div>
-
-
<input type="button" value="画像取得" onclick="getPhotos" />
と、こんな感じで使えるよね?ということで(引数、微妙にも違ってないし)。
要jQueryなコードで、且つ実際に組んだコードではないので(爆)←古い、動かない可能性大ですが何かの参考にでもなれば。
ってならんな、こんなん。どこで使うねん。