3.25.2014

EARTH_HOUR_2014


2014年のEarth Hourは3月29日。
キャンドル買って参加しよ、と思ったがこの時間外出してるから無理かw

詳細はWWF公式へ

この活動でCO2排出量がどのくらい減るとか実は全然効果無い、とかあるだろうけど、そんなのより新宿とか渋谷とか無駄に明る過ぎだって絶対。
夜に外歩いてて明るくて安心っていう灯りなら有難いけど、うわ眩しいって思うのはおかしいってw

電気とかお金を豪快に無駄遣いするのって「すげぇなぁ」って思わせることは出来るけど、「すげぇなぁ」って思ったのと同じくらい嫌味に感じるよ。
品川のデジタルサイネージ見たとき正直「すごい、けど馬鹿じゃないのw」って思ったし、そんな無駄遣い出来るならもっとなんか世の中良くする用途無かったの?って思ったなー。あとその無駄に並んでるディスプレイ一枚くれよと。

そういうのは夢の国とかでやれば良いんであって都市でやっちゃダメだよ。
電気を大事にっていうか電気を作れる資源を大事にしなよ。

3.24.2014

Foods -食べもの色々

 東京でも有名なチャーハンを提供する店「龍朋」のチャーハンを食べてみたが普通だった。あれだけ高評価なのは恐らく叉焼がどっさり入っているからだろう。しかし食べる人によっては、バランスを欠くほど叉焼多過ぎ、そしてしょっぱすぎ、という評価になるだろう(最後の方は叉焼とご飯を分けて食べてたし・・)。

 焼肉屋って何故か韓国料理屋みたいになってるけど、ビビンバとか冷麺とか頼まないし、牛肉と野菜を七輪の炭火で焼いて甘辛いたれに付けて白いご飯で食べるってこれつまり屋内バーベキューだよね、美味しいから良いけど。

 大量の油で炒めた中華料理が食べたいよぅ。それはそれとして中華鍋とIHコンロは相反するものと思ってたけど、中華鍋に沿うように丸く湾曲してるIHコンロを見た。でも本当は鍋を煽った時に油が炎に当たってバッと燃える感じが良いんだよね。

 フランス料理屋でサーモントラウトのマリネを食べた。一瞬は美味しいと思ったのに後味生臭い…。やはり鮭は塩味で焼いて欲しいなぁ。

 そこそこ良い和食居酒屋でも味噌汁とおにぎりが無くて「蕎麦」とか「稲庭うどん」だけなのは本当にもったいない。おにぎりの方が絶対需要あるのに。そもそも焼き魚があるのに白いご飯が無い店ってのは料理屋としてどうなの?

 藁が燃える炎で表面を豪快に炙る「鰹のたたきを作る動画」が面白い。でも表面だけ炙っても中は生なので食べられない。そのまま中まで火を通しちゃえばまだ食べられるのに。

3.18.2014

VC++でxmlを扱おう - libxml2の紹介

C++でXmlを使う必要がある場合、VC++を使うWindows系の開発なら普通はmsxmlでやるだろう。そのためにはComとかBSTRとかちょっと変わった知識が要ると思う。
しかしなにもmsxml一択という訳ではない。そこでC++で使えるmsxml以外のxmlを扱うライブラリの説明をする。

その名は「libxml2」。これはGnomeのXMLライブラリだ。
あまり難しいことは無いがlibxml2のビルド方法、利用方法を纏めておく。 

ライセンスについて

MITライセンスなのでどこかにライセンステキストを載せておけば組み込んで使っても良いらしい。しかしUTF-8以外のエンコードのxml解析のためにiconvを使うのだが、iconvはLGPLということで商用には向かない。もっと緩いライセンスのICUライブラリを使うことも出来るらしい。つまりlibxml2とicuの組み合わせなら商用に使っても多分大丈夫、ということでlibxml2とICUの組み合わせで使う方法を説明する。
(ICUライセンス、というのがちょっと分からないが緩いライセンスというのは確か)(この辺専門家ではないので責任取りません)(ライセンスに堅苦しい文章で「これを使ったことで生じた損害は補償しない」と書くのは必須なんだろうか。GitHubにそんなこと書いてないただのサンプルコードを載せてるけどどこかで損害が出た場合訴えられたりするんだろうか。まさかね・・)。

まずlibxml2

http://xmlsoft.org/downloads.html
とそのダウンロードサイト
ftp://xmlsoft.org/libxml2/
(ちになみにhttps://git.gnome.org/browse/libxml2/ からもダウンロードでき、こちらはZipファイルもある。しかしxmlversion.hがmakeされて無かったので使えなかった。)
イメージはtar.gzなので解凍できるソフトが必要だ。

ダウンロードし、解凍したフォルダ「libxml2-2.9.1\win32\VC10」内にある「libxml2.sln」を開く。VC10、つまりVC2010で作られているようだが2013Expressでも大丈夫なはずだ。
プロジェクトを開くと「libxml2」「runsuite」「iconv(使用不可)」となっている。iconvは空になっている。ICUを使うつもりなので削除しよう。(共通プロパティの参照プロジェクトにiconvがあれば削除しよう)
(また、出力フォルダの設定が独自な感じなのでいつも通りの既定のものに変えてしまってもいい。)この時点ではビルドは出来ない。

とりあえずそのままにしておいて次はICU Libraryを入手しよう。

ICU

http://site.icu-project.org/
ダウンロードサイト(これは現時点の最新だが、もっと新しいのが無いかチェックしよう)
http://site.icu-project.org/download/52
ICUはWindows用にビルド済みのバイナリで配布されている。x86用とx64用があって必要な方だけで良いが、個人的に両方欲しいので両方ダウンロードする。
そして解凍すると両方とも「icu」というフォルダになる。しかしx86の中は「lib」と「bin」、x64の中は「libx64」と「binx64」というようにちゃんとモジュールのフォルダ名が分かれているので、x86とx64を同じ「icu」フォルダにマージしても問題が無い。

今回はこの「icu」と「libxml2」の2つのフォルダを並べて配置
 ├ icu
 └ libxml2-2.9.1
という感じにした。

ビルドのための設定

libxml2プロジェクトのインクルードディレクトリの「libiconv-**(iconvを参照しているパス)」を削除し、代わりに「icu\include」を追加する。上記の配置だと「$(ProjectDir)..\..\..\icu\include」となる。

xmlversion.hがiconvを使う設定になっているので、ICUを使う設定に変更する。
「libxml.h」を開き、「#include <libxml/xmlversion.h>」を右クリックし、xmlversion.hを開く。「iconv」で検索し、
#define LIBXML_ICONV_ENABLED
の上の「#IF 1」を「#IF 0」へ変更、
#define LIBXML_ICU_ENABLED
の上の「#IF 0」を「#IF 1」に変更する。
これで「libxml2」がビルドできるようになるはずだ。


ビルドできるはずなのだが、nanoftp.cでエラーになった。 nanoftp.c と nanohttp.c に以下のディファインを書くとエラーは無くなるのだが・・なんか環境の問題かも
#define SEND_ARG2_CAST
#define GETHOSTBYNAME_ARG_CAST

libxml2.libを使う「runsuite」プロジェクトのビルドにはICUのヘッダファイルとlibファイル、と当然libxml2.lib、あとlibxml2のヘッダファイルが必要。
インクルードディレクトリはlibxml2と同様に「libiconv」のパスを削除し、代わりに「$(ProjectDir)..\..\..\icu\include」を設定する。
そして「リンカー ・ 入力 ・ 追加の依存ファイル」に「$(ProjectDir)..\..\..\icu\lib\icuuc.lib」を追加する(x86の場合)。ICUのlibファイルは色々あるがビルドするにはこれひとつで出来た。これでrunsuiteもビルド出来るはず(libxml2が参照プロジェクトになっているのでlibxml2.libの入力は書かなくても良い)。

さて実行時はビルドして出来たEXEの他にICUのDLLが必要になる。
ICUのbinフォルダにDLLもいろいろあるが、「icudt52.dll」「icuuc52.dll」の2つをexeと同じフォルダに置くと良いだろう。
libxml2を使うサンプルコードはrunsuiteのコードにあるはず(テスト用のコードになっててなんかすごい分かりずらいけど)。

これが出来れば自分のプロジェクトにlibxml2.libとicuのlibファイルを組み込んで作るのも同じだ。

万葉の湯に行きました

会社のイベントで横浜の温泉施設、万葉の湯へ行った。
 横浜は本当に久しぶりだ。みなとみらい駅で降りたが、渋谷から1時間かからないとはなんか不思議な感じ、もっと遠くだと思っていた。北海道に生まれ育った人は皆そうだと思うが、都道府県の境界とは海を渡らねば越えられない、心理的にも大きな境目と思っていた。それが東京ではちょっと電車に乗ると隣町のような感じで埼玉やら千葉やら横浜に着いてしまう(いや横浜は県じゃない)。これはおそらく海に囲まれた日本では国境が実際に大きな境目であることと、ユーロ圏の国で国境に近い町では毎日の買い物のために国境を超えるもんだ、くらいの感覚の違いだと思う。それは大袈裟と思うかも知れないが車や電車で半日くらい移動しても北海道からは出られないこと、飛行機に乗って北海道外へ旅行に行くのは一大イベントだったことを子供の頃から感じていてそういう感覚になってしまった。日本から国境を越えるには出国手続きとか面倒なのがあるが、子供にとって国内線でも飛行機に乗るための手続き(チェックイン、ゲート通過時の手荷物検査に金属探知機検査、さらに飛行機に乗り込む時の搭乗券入れるやつ)は出国手続きと変わらないくらいすごい手続きに感じるもんね。(青函トンネルってのもあるけどあれは余り使わない)。
 ちなみに北海道民の場合、大きな旅行の計画を立てると「まず北海道を出て」となるので、飛行機に乗ったことが無い、という人は少ないと思う。そして車、電車、新幹線等で多くの観光地に行けてしまう本州の人の方が、実は飛行機は乗ったことが無い、という人が多いんじゃないかと思う。まぁどうでもいいけど。
 さて万葉の湯では、肩に不思議な模様のある兄ちゃんが脱衣所に居て、アレ良いのかな?と思って見てると友人らしき人が来て、「やっぱりもう追い出されたのw?」「やっぱ見つかったw」みたいな話をしているようだった。そらそうだwとは思うが、数少ない外国人の友人の中にもTatoo入れてる人が2人ほど居るので微妙な感じ。極道の刺青とワンポイントのファッションタトゥーは違うからねぇ。
 刺青入れてる客の中でも本当に迷惑な客って少ないと思うし、入れてなくても迷惑な客は居ると思うのでどんな種類でも刺青があれば即OUTっていう判断基準はそろそろ見直されてもいいと思う。
 かと言って着衣かと見紛うような刺青、金髪なのにパンチパーマ、サングラスという人が入ってきたら絶対に近づかない。絶対に。

あまり詳しくなかったのだが、TV等で「タトゥ入れてこんな後悔しました」「子供と一緒にプールにも行けませんっTT」みたいなのを見たので全面禁止の施設が多いのかと思ってた。
しかしWebサイト、T@TTOOZ Tattoo入れても大丈夫な場所、を見る限り意外と大丈夫な場所が多い。特に民間の経営でない公営プールなどの施設はタトゥを理由に断るのは難しい、ということのようだ。
そのサイトの情報によると「万葉の湯」は昔は人を見て判断していたようだ(酷いw)。それだとモロに差別なのでタトゥの大きさや人種問わず即退場に方針変更したのだろう。
厳しいとこもあれば緩いとこもあるなという感じ。
風呂プールはタトゥ全面禁止と思い込んでたのはテレビの影響か。

3.13.2014

みんなでVimを使ってみよう!ヴィーム!!

プログラミングもVimでやるとカッコいいらしい。

 ほんとかなぁ、使いにくいなぁというのが今のところの感想。一応C/C++、Javaが開発作業の中心なのでVisualStudio、Eclipse、NetBeansは手放せない。それ以外の進捗メモや動作確認用ダミーデータの編集、HTML、JavaScriptの作成、Batファイル、Rubyなど、つまり今までテキストエディタでやってたことをVimでやってみることにした。

というわけでWindows用のgvimを入れて使うためのメモ。Vimの体系的な知識はもっと良く纏まったサイトがいくらでもあるはずなのでここでは重要度が高く、自分が覚えたコマンドだけをメモっておきます。
普段使うテキストエディタにはしないまでも、これらを知識として知っておくとLinuxで遊ぶときにすっごい便利。今までは半分くらいしか知らなかったがこの知識はマストでしょう(船の帆を張る支柱?)。

カーソルは普通にカーソルキーでも良い

アルファベットのキーにもカーソル移動にマップされてるキーがあるのは知ってるが特に気にしない。ページダウン、ページアップも使える。

Escでコマンドモード

基本。編集モードかコマンドモードか分からなくなったらEscをタタンと2連打(なんで2連打なんだっけ?何か理由があったはずだが…)

aで編集開始

iでも編集開始になる。aは次の文字から、iは前の文字から編集になる。

:wで保存

Ctrl+Sとかは効かない。

:qで終了

変更されていた場合は保存してないのに終了していいのか聞かれる。

:wqで上書き保存して終了

最低限この辺まで知っていればLinuxをリモートログインして設定ファイルを弄ることが出来る。ちなみにLinuxでは編集を全て終えて:wqとしたこのタイミングで「パーミッションデナイドw」と言われるのだ…
さてメインのテキストエディタとして使うにはこれだけでは全然足りない。

uで元に戻す

Ctrl+Rでやり直す

yで選択範囲をコピー(ヤンク、というらしい)


cで選択範囲を切り取り

pでペースト

ちょっと覚えにくい気がするがこの辺は慣れだろう。Ctrl+Z、Ctrl+Y、Ctrl+C、Ctrl+Vに慣れているからちょっと慣れないだけ。このコピーペーストはクリップボードを使わないらしい。他のエディタとのデータのやりとりが若干不便。

vで範囲選択開始

vを一度押すとシフトキーをロック、みたいなイメージ。一応マウスでも範囲選択は出来る。

:Eでファイルエクスプローラ(:Exとあるが:Eで起動する)

初めて知ったがファイルエクスプローラが使えるのは結構大きい。Linuxの設定をするにもこれを知ってれば効率が全然違っただろう。ファイルエクスプローラが起動してる時はコマンドも独自のものに変わる。iを何度か押してツリー表示に変える。-キーで親ディレクトリに移動が便利、あとはカーソルキーとエンターキー。cでディレクトリをカレントディレクトリにする。これをしないと:wで別名保存するときに意図しないディレクトリに保存されてしまうので。
 :Exの使い方は他にもあるがとりあえずこんな感じ。今までは「vim <ファイル名>」としてたがvimを起動して:Exでファイル選択、編集と出来る。

/<文字>でファイル内の<文字>を検索

一度検索するとハイライトが消えないなどちょっと癖がある

: ↑キーでコマンド履歴から再実行出来る(/ ↑キーで検索履歴も出る)

コマンドのタイプミスの時とかに便利。コマンドを途中まで書いて↑キーを押すとそれを補完するコマンドの履歴になるようだ。例えば:eで↑キーだと:eで始まるコマンドの履歴になる。これはかなり便利だ。

Vimに慣れてくると中間保存しようとしてオモムロにEscキー押してちょっと焦る(保存はEsc+:wだから)。Vimに慣れておくと良いことはTeraTermでLinuxログインしてのファイル編集がやり易くなることか。

3.04.2014

Exclude search terms

一昔前に比べて検索サイトが使いづらくなった、とまでは言いませんが、何を検索しても出てくるページは大体同じ、という気がしないでしょうか。
スーパーサイズミーという映画の中で誰かが、アメリカではどの町に行っても既視感があると言ってました。「Kマート、ウォルマート、ウェンディーズ」「 Kマート、ウォルマート、マクドーナルド」「Kマート、ウォルマート、ウェンディーズ」…と一握りの大企業がグルグル回ってると。

こんなことを思ったのは今ちょっと大きなレストランとかを店名で検索すると「ぐるナビ」か「食べログ」、ちょっと下に「ホットペッパー」が必ず出て、それだけで検索結果2,3ページ埋まってしまいます。勿論それらの口コミはチェックするんですが、大きなサイトに投稿される口コミ以外に、個人的に開設されたブログの方がより自由な意見が載せられるんじゃないかなと思います。(食べログへの投稿は多数に閲覧されるでしょうが、残念ながら個人ブログの投稿記事はほとんど見られないという現実を知っていますw)

そこで飲食店名での検索時は「-gnavi -tabelog -hotpepper」を追記すると小さなサイトも上位に出てきます。ついでに「ブログ」というキーワードも加えると個人のブログがかなり上位に来るんではないでしょうか。
例:トライベックスを検索

同様に商品名で口コミを探すときは「-rakuten -amazon」とかでしょうか。

改めて「~を含めない」という検索機能を使ってみました。
ちなにみに日本では「イオン、ジャスコ、西友」「イオン、ジャスコ、トイザらス」「イオン、ジャスコ、TSUTAYA」とか?ちょっと違うかな…

 せめて企業のニュースサイトを除外するとか、SNSサイトを除外するとかあればいいんだけど。
個人サイト(?)の中でもニュースの2chの反応を紹介しているだけのサイトとか過度に煽るような変なサイトは出来れば除外できる機能が欲しいなぁ。
一昔前は全自動ロボット検索の方が絶対優れていると思っていたが今こそ手動登録型検索サイトが見直されるべきか?