2015年 買ってよかった本10選 +1

2015年も残すところあとわずかです。

そんな今年1年のおさらいに、僕が実際に買って読んだ中でも特に琴線に触れた本を、独断と偏見で10冊ほどピックアップしました。

※ 2015/12/29追記: 『SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus)』を仲間に入れました。

居酒屋ハムスターの銀次

居酒屋ハムスターの銀次 世界一有名なハムスター・銀次の写真集。素の愛くるしさは言うに及ばず、精巧な居酒屋のミニチュアセットも相まって味わい深い独特の世界観が漂っている。

各写真には、場末の居酒屋店主がいかにも思いつきで言いそうな名言・迷言が添えられており(「人生はなるようにしかならへん」「世界中がアンタを否定したら 俺は世界中を否定したる」など)、疲れたときに開くとほのぼの癒される。

続きを読む

SQLインジェクションのお話

注意: 本日のお話はフィクションです。

うっかりしていると陥りがちなミスなので、野暮を承知で注意喚起。

前置き

株式会社コラショは、青森県八戸市に本社を構える菓子メーカーである。国内7拠点に工場を持ち、独自の生産管理システム「BNS」を運用している。

このシステムは、もともと5年前に準大手ITベンダのトリッピーソリューションズ(株)がスクラッチ開発したものである。しかし、運用中に品質的課題が多発したことから、このたびベンダを弊社うちに切り替えて品質向上と機能強化を図ることとなった。

僕は、その案件にプログラマとして参戦している。

ある夜。

しんと静まったオフィスの中で、僕は顧客から受領した現行ソースを解読していた。が、さっそく怪しげな実装を目の当たりにすることとなる。

続きを読む

Processing.js(3Dモード)ではぅ君をふわふわさせる、の巻(メイキング篇)#p5advent

この記事は 本篇 のつづきです(ページが重くなりすぎたので分割しました)。

【もくじ】

  • はじめに
  • でこぼこ感のつくり方
    • 概要と実装手順
    • 高さマップを作る
    • 高さマップを法線マップに変換する
    • 法線マップからピクセルごとの陰影情報を計算する
    • ピクセルごとの陰影情報を、面のテクスチャと合成する
  • Processing.jsのバグと回避策
    • ライティング(シェーディング)がレンダリングに反映されないバグ
    • テクスチャを書き換えてもレンダリング結果に反映されないバグ
  • その他がんばったこと
    • ゆるふわ感アップ大作戦
    • 描画の高速化(焼け石に水)
  • あとがき
  • 謝辞
  • 参考文献
続きを読む

Processing.js(3Dモード)ではぅ君をふわふわさせる、の巻 #p5advent

みなさんこんにちは。

Processing Advent Calendar 2015 5日目担当の たーせる と申します。

今回は、小さなスケッチをひとつだけ投稿します。
(スマフォやタブレットでご覧の皆様は甚だしく処理落ちするかもしれません

続きを読む

DiffアルゴリズムをC#でてきとうに実装した

本日のあらすじ

Diff アルゴリズムC# でてきとうに実装しました(タイトルそのままです)。

ちなみに 2 年半ほど前にも Java で似たようなことをしていましたが、当時はスクリーンショットだけ載せてはいおしまいでした。今回はせっかくなので超カオスC#のソースも載せておこうと思います。tercel-tech.hatenablog.com

Diffって?

Diffディフとは異なるデータの差分を検出する処理のことで、業界の符丁では「Diffを取る」などと言ったりします。例として、2つのテキストのDiffを取ってみましょう。ちなみに例文はアンサイクロペディアからパクりました

テキスト1:

個のよ鵜な返還ミスノお御杉る分掌はな2がなん打か輪からないの出、中石て乳緑し魔性。

テキスト2:

このような変換ミスの多すぎる文章はなにがなんだか分からないので、注意して入力しましょう。

テキスト1とテキスト2のDiffを取った結果:

本日の成果物

リハビリも兼ねてDiff情報を求めるための拡張メソッドを作りました。

以下の使用例のように、stringオブジェクトに対して直接Diffメソッドを呼べるようになります。

使用例:

// 「おっぱい」と「いっぱい」のDiffを取る
var result = "おっぱい".Diff("いっぱい");

// 結果を出力する
foreach (var item in result)
{
    Console.WriteLine("{0} {1}", item.Key, item.Value);
}

実行結果:

い +
お -
っ =
ぱ =
い =

これを見た人は、「あぁ、『おっぱい』を『いっぱい』に書き換えるためには、1文字目に『い』を追加して、代わりに『お』を削除すればいいんだね。『っぱい』は共通要素だからそのままでいいんだね」とたちどころに理解できます。よかった。めでたい。

なお、出力の見た目をもう少しマシにする方法をこの記事の最後に載せておきました。

続きを読む

外観をカスタマイズしたチェックボックスをASP.NET MVCで利用する

やりたいこと

問題の背景

デフォルトのチェックボックスはイケてない上に変更が面倒

HTMLフォームの中でも、チェックボックスは外観のカスタマイズに技巧的な手法を要します。

とはいえ適当にぐぐるだけでも 「CSSだけでチェックボックスをカスタマイズする方法」 の解説ページがいくつか見つかるので、外観を変えるだけならば特に問題なくできます。

ちなみに今回はこちらの記事を参考にしました。感謝!plustrick.com

外観を弄ったチェックボックスASP.NET MVC 5 とうまく連携できない

そこまではよかったのですが、 外観をカスタマイズしたチェックボックスASP.NET MVC 5 でそのまま使おうとすると、入力値がモデルにうまくバインドされず、丸一日ドはまりしました(具体的には、チェックボックスにチェックを入れても、Post 先のアクションメソッドでは入力値が常に false と見なされてしまう現象です)。

加えて、カスタマイズ版チェックボックスはデフォルトのビューヘルパーで生成できないため、一筋縄ではいきません。


まるでサウザー戦で北斗神拳が通用しないことに落胆するケンシロウのようなみじめな気持ちになりましたが、とりあえずなんとかなったのでここに書き留めておくことにします。

続きを読む

90mmマクロレンズを街に連れ出してみた

前回までのあらすじ

中望遠マクロレンズ・SEL90M28Gを買いました。

せっかくなので、シルバーウィーク中にいろいろ撮りましたよんよん。

続きを読む

Copyright (c) 2012 @tercel_s, @iTercel, @pi_cro_s.