魔封波がえし別館

プログラム関連で忘れてはいけないことを綴るブログ

あいうえおモデリング「い」と「う」

あいうえおモデリング「い」
「銀杏 (手抜き)」
ityou
 
あいうえおモデリング「う」
リクエストのあった「うちの○マ 知りませんか?ハードボイルドバージョン」
hbtama
ハードボイルドにする前
 tama01
なんかキングボンビーに変わるときのCGっぽい

Blederであいうえおモデリング「あ」

久しぶりにBlenderでモデリング。
練習のために、今日から「あいうえおモデリング」 をやってみる。
今日は「あ」。簡単なのということで、雨傘にした。

完成したもの
amagasa
 
なんか、もう少しパーツを増やしたいのと、取っ手がそっけないのには目をつぶる。

以下手順のメモ

[1] 骨を作るために、とりあえず円を縦長に伸ばしていって針金っぽくしたものを作る
WS000000
※あとで曲げるので、伸ばす操作を何度も繰り返して、頂点を増やしておく

[2]骨を曲げる準備
骨を曲げる準備として、ベジェ曲線を配置して曲げたい形に変形する。
WS000002

 [3] 骨にmodifierのcurveを適用して、曲げたい形のベジェ曲線に沿って骨を曲げる。骨の位置とかサイズとかを変更して、いい感じになるようにする
WS000007

[4] 骨を増やす
骨を増やす方法として、今回はエディットモードでのSpinを使用する。カーソルをあらかじめ回転の中心に持ってきておいて、Spinを実行。左下のパラメータを、Steps:12, Dupliをチェック, Degreesを360に変更すると以下のようになる。WS000010
WS000011

[5] 真ん中の軸と、てっぺんのパーツを追加
WS000014
 
[6] 持ち手を追加
持ち手も骨と同じように、円柱を作って、カーブで「J」の形に曲げる。
WS000028

[7] 持ち手を今まで作ったパーツに合体
WS000021

[8] シートを張る
手抜きのために、シートは、clothを使って勝手に変形してもらう。まず骨を選択して、modifier typeとしてcollisionを設定する。次に、シートの元になるメッシュを作成する。
WS000035
こんな感じ。
次に、これにcloth modifierを追加する。今回は、プリセットのcottonを使用。
WS000040
 設定が終わったらbakeを実行。
WS000042
終わったらこんな感じになる。

[9] 仕上げ
ライトを調整したり、各部品のマテリアルを設定したりして、こんな感じにして完成。
WS000049

今日のお絵かき

Blenderでお絵かき

今日はなんか朝から無限ループの気分だったので帰ってきてからまず

ewl001

を書いて、ちょっとさびしいので

ewl002
こんな感じでちょっとテクスチャ張ってみたりして

ちょっと調子に乗って

ewl003

ドロイド君を増殖させてみたり
ewl004

そんなこんなしている間に、さらに調子に乗って、

気になったので、一応確認

初歩的なことかもしれないんだけれど

livedoorブログでは、ページにscriptタグが書けるみたいなので、
気づかないうちにリクエストが送信される可能性もあるのかなと思ってテスト。
この下のテキストボックスには、「あなたのブラウザは勝手にクリップボードの中身を貼り付けません」と表示されているはずですが、
変なブラウザを使っていると、システムのクリップボードの中身がこのテキストボックスにコピーされるかもしれません

chromeでは、何も起きません。
IEの9では、「クリップボードにアクセスしようとしてるよ~」というメッセージが出ます。
その他のブラウザではどうなんでしょうか。

もし勝手にクリップボードにコピーされるブラウザがあるとしたら、タイマーかなんかで、数秒後に勝手にajaxリクエストするようにしておけば、クリップボードをだまって抜くことも可能ってことか。怖い。

というか、古いブラウザしか知らない人間にとっては、サーバへのリクエストはsubmitしたタイミングっていう先入観があったりで、テキストボックス編集途中のデータはいつでも抜かれる可能性があることに気づかなかったり…

----------------------

このボックスにクリップボードの中身がコピーされるかもしれない。

イヤフォンケーブル

イヤフォンケーブルの長さがしっくりこないので、ちょうどいい長さになるまで束ねるのにビニタイでくくったり、厚紙で巻きつける奴を作ったりしてみたけど、最終的にオーディオテクニカの「コード巻取りホルダを」買って今日届いた

DSC_0061

 こんな鬱陶しかったのが

 DSC_0062
こんなにスッキリに!

いまいち伝わらない気がする… 

ちなみに
http://www.audio-technica.co.jp/products/hp/at-cw3.html
これです。クリップもついていい感じ。
ちょうどイヤフォンもオーディオテクニカだし

違った
http://www.audio-technica.co.jp/products/hp/at-cw4.html
こっちだった。クリップの色やらが違う

ドロイド君

なんか気晴らしにドロイド君(日本での通称)を作りたくなったので作った
droid


 
久しぶりにBlender使ったら、ショートカットをほぼすべて忘れてて大変。
で、悪乗りして
droid3

スマホ用の壁紙が欲しかったので(ry 反省はしていない

なんとなくスマホ用の壁紙が欲しくなったので適当に探したんだけれど、ちょっと思ってたのと違ったのでgimpで作ってみた。

最終イメージは
kabegami9
こんな感じで、gimpを使ってあまり手間をかけずに作る。

1)元画像を準備
kabegami1

2)切り抜き
何とかして、人だけくりぬく。ここではクイックマスクを使用する。クイックマスクを使うには画面左下の点線で囲まれた四角のボタンを押す。
すると画像全体の色が変わる。
kabegami2

ブラシツールなどで、「白く」塗ると、下の図のようにマスクがはがれる。

kabegami3

なので、人物がきれいに現れるように塗る。塗りすぎたら、「黒く」塗るともう一度マスクがかかる。

kabegami5

きれいにできたら、もう一度クイックマスクボタンを押す。すると、マスクがはがれた部分が選択された状態になる。この状態でCtrl-Iを押すと選択範囲が反転するので、反転させて「delete」キーを押す。
すると、人物周辺が白くなる。
もう一度Ctrl-Iを押して、人物が選択されるようにする。
人物が選択されたら「delete」キーを押す。すると選択範囲の中も白くなる。
この状態で選択範囲をバケツツールを使用して「黒く」塗る。
以上の操作で以下の画像が得られる。

kabegami6

3)背景を適当に準備する
背景を塗りつぶして、それらしい感じにする。
kabegami7

4)イヤフォンを追加する。
なんとなくさびしいのでイヤフォンを追加したい。そのためにまずパスツールを使用して、それらしい曲線を描く
kabegami8

それらしくできたら、[編集]メニューから「パスの境界線を描画」を選択する。するとダイアログが開き、どのようにストロークを描画するか聞かれるので、いい感じにして「ストローク」を押す。

5)仕上げ
仕上げに小物やそれらしい文字列を配置して完成!
kabegami9

てな感じで、作りたかった下の壁紙ができたので満足

android_wallpaper

もう一丁

jigen_kabegami

ソーシャレット

facebookのソーシャレットを使ってみようと思って
http://d.hatena.ne.jp/sakaki0214/20110329/1301371488
とかを参考にやってみたけど、一向に反映されなくて心が折れそうになったけど、
根本的に勘違いしてた。

・ブログをfacebookのウォールに表示させたりするアプリ
と思ってたのが根本的な間違いで、
・facebookページを作って、そこに外部ブログの情報とかを表示させるアプリ
なんですね。

普通運転免許の学科試験で0点を取る方法

遥か昔に学科試験を受けたときに、なんか納得いかない問題があったのをふと思い出したので、10問の問題で0点を取ってみる
※答えはすべてここに書かれている逆が正解なので注意。解説も信用しない事

問題1:交差点の中を走行中に信号が青から黄色に変わった場合、そのまま通行することができる。
答え:×
解説:交差点の信号が青から黄色に変わったタイミングで、歩行者が急に飛び出してきた場合には止まらなければならないので、そのまま通行できるとは限らない。

問題2:ワイパーが故障していても雨が降っていなければ走行してもよい。
答え:○
解説:雨が降っていない場合にはワイパーを使用しないため、雨が降ってただちに運転を停止できるのであれば走行してもよい。

問題3:追い越しは素早く行わなければ危険なので、一時的に制限速度を超えて走行することが許可されている。
答え:○
解説:追い越しを素早く行わなかったことで、危険が発生して、その危険回避のためやむを得ず一時的に制限速度を超えて走行することは許可されていないともいけないので○
答え:×
解説:一時的に制限速度を超えて走行することは許可されていないが、”追い越しは素早く行わなければ危険”が誤りなので、×

問題4:上り坂の頂上付近やこう配の急な下り坂では徐行しなければならない。
答え:×
解説:上記以外にも、見通しの悪い交差点等でも徐行しなければならない場面がある。

問題5:安全地帯のそばを通るときに歩行者がいないことが明確であれば徐行しなくてもよい。
答え:×
解説:歩行者がいないことが明確という思い込みが間違い。常に歩行者がいるかもしれないと予測しなければならない。

問題6:路面が滑りやすい状態のときは、ブレーキを数回に分けて踏むよりも一気に踏み込んだほうがよい。
答え:○
解説:最近の自動車にはABSが装備されているが、これを正しく作動させるためには一気に踏み込み続ける必要がある。

問題7:停留所の止まっている路線バスが発進の合図をしたときには、急ブレーキ、急ハンドルで避けなければならない状況を除いて路線バスの進路を妨げてはならない。
答え:×
解説:「停留所の止まっている路線バス」という日本語に誤りがある

問題8:踏切の手前で警報機が鳴り出した際は急いで踏切を通過する。
答え:○
解説:手前ということは、目の前ということなので、急停止するよりは速やかに踏切を通過しなければならない

問題9:幼児を乗用車に乗せるときは、前部の座席よりも後部の座席にチャイルドシートを装着させ乗車したほうが安全である。
答え:×
解説:後ろから追突された時を考えると、後部の方が安全であるとは限らない

問題10:幅の広い歩道であれば、歩道の中に駐車することが可能だが、車の左側には0.75m以上の余地をあけなければならない
答え:×
解説:歩道の中ではなく、歩道の上に駐車することができる

さて、全問の解説が間違っていると思えた人は正解です。

Vim(6) csvの特定のカラムだけ取り出す

どちらかというと、vimの検索で見られる方が多いようなので、どうせならちょっとでもお役に立てたらと思い、vimの話題が続きます。

仕事で、csvファイルの特定のカラムだけを取り出したいことが多いので、これをvimで実現する方法です。
今日は、キーマクロで実現する方法と、スクリプトでやる方法を紹介します。

対象となるcsvファイルは以下のようなものにします

日付,項目,個数,価格,備考
8/20,豚肉切り落とし,1,500,オーストラリア産
8/20,人参,1,120,熊本産
8/20,玉ねぎ,1,98,北海道
8/20,かぼちゃ,1,198,北海道
8/20,鶏もも,1,298,鹿児島
8/20,ビール,1,1160,
8/21,鮭,1,128,ロシア産
8/21,松茸,1,1200,中国
8/22,コアップガラナ,1,110,苫小牧産
8/22,赤福,1,600,甘いもの対決用
上記をまず、vimを開いて貼り付けてください。
何度も復習しますが、上記のcsvをマウスで選択して、Ctrl+Insertを押して、
vimを起動して、コマンド"*pを入力してください。

今回の目的は、上記のcsvから、価格の情報だけを取り出した
価格
500
120
98
198
298
1160
128
1200
110
600
にすることとします。

まずは、キーマクロを使用して実現します。
流れとしては
  1. 1行目の編集作業をキーマクロに記録する
  2. マクロを複数回実行して、すべての行に適用する
となります。
 
それではさっそく、1行目の編集に入ります。
キーマクロのコツですが、気を付ける点は、"カーソル移動にhjklをなるべく使用しない"ということです。
というのも、他の行でマクロを実施する場合に、hjklを使用してしまうと文字数が決め打ちになってしまうためうまくいきません。今回は、価格を取り出したいのですが、価格の先頭に移動するまでlでカーソル移動をすると、1行目では9回lを押すことになりますが、2行目では15回lを押すことになります。これではすべての行に適用することはできません。
従って、すべての行で同じ操作になるように記録するマクロを考える必要があります。
今回は、fコマンドを使用して、次の,まで移動することによって実現することにします。
コマンドとしては、
ggqqvf,f,f,df,Dj0q
となります。
ざっと説明すると、ggでファイルの先頭に移動、qqでマクロ記録開始、vでビジュアルモード(範囲選択モード)に移行、f,でカーソル位置から最初に見つかる","まで移動、これを3回繰り返し、カーソルを"価格"の前まで持ってくる。dで選択範囲を削除、f,で次の","まで移動、Dでカーソル位置から行末までを削除、jで一行下に移動、0で行頭に移動、qでマクロ記録終了。となります。

もちろん、f,と3回押すのは無駄なので、3f,で置き換えても構いません。
ggqqv3f,df,Dj0q
このマクロ記録が終了した後は、2行目の先頭にカーソルが移動しているはずなので、これを十分な数だけ繰り返します。
適当に大きな数値を入力してから@qを入力することで、記録したマクロを、最終行まで繰り返すことができます。
1000@q
とでもしておきましょうか。すると、欲しかった価格の項目だけになると思います。
以上キーマクロを使用した方法の説明です。

次に、スクリプトを使用する方法ですが、いったん答えを提示します
function! GetCsvCol(n)
let linenum = 1
for aline in getbufline(".",1,"$")
call setline(linenum,split(aline,",")[a:n])
let linenum=linenum+1
endfor
endfunction
これで、:call GetCsvCol(0)とすれば1番目のカラムのデータだけが抽出されます。
今回は価格を取り出したいので、:call GetCsvCol(3)とすればOKです。

スクリプトの簡単な説明ですが、現在のバッファの内容を取り出して、各行をカンマ区切りのリストに変換して、指定されたカラムの値を、現在行にセットします。

以下詳細説明です。

function! GetCsvCol(n)
⇒引数nをとるGetCsvCol関数を定義。再定義可能なように!を付ける
let linenum = 1
⇒書き換える行を1行目にセット
for aline in getbufline(".",1,"$")
⇒getbuflineで取得したリストが空になるまで、alineに代入してループ
split(aline,",")
⇒alineをカンマで分割してリストに格納
split(aline,",")[a:n]
⇒分割したリストの[n]番目の項目を取り出す。(引数はa:(引数)で指定)
setline(linenum,split(aline,",")[a:n])
⇒linenum行目を分割したリストの[n]番目と置き換え
let linenum = linenum+1
⇒書き換える行を一つ下に移動

[応用問題]
GetCsvCols([1,2,5])
とかやったら、1,2,5カラム目だけ抽出できるように関数を作ってみてください



Vim(5) 日記

今回は、Vimで簡単に日記(日報)を書く方法を、スクリプトを使って実現する方法をまとめてみます。

やりたいことは、
・vimを起動している状態で、なんらかのショートカットキーを押すことで、簡単に日報を記載できる仕組みを作りたい

具体的には、
Ctrl+Jで、ジャーナルファイルを開き、そのファイルの頭に現在の日付・時刻を挿入して、
1行改行を挟んで入力状態にする。
さらに、このジャーナルファイルはオートセーブする。

具体的には、Ctrl-jを押すと、
~/jounal.txtというファイルの中に自動的に今日の日付と時刻を挿入して、[編集位置]から編集開始できる状態にしてくれるのを目的とします。(下のような感じ)
--------------------------
***2011/08/21 21:00***

[編集位置]

***2011/08/20 20:47***

今日は何もしなかった

--------------------------

それでは、これを実現するにはどうすれば良いかを整理します。

1) ジャーナルをオープンする
2) ファイルの先頭に移動して、改行を2つほど挿入する
3) 現在の日付を挿入する
4) 現在の時刻を挿入する
5) 適当にフォーマットを揃える
6) 入力開始位置までカーソルを移動させて挿入モードにする

まずは、どのようなコマンドを入力していけばこれを実現できるのか考えていきます。
1) ジャーナルをオープンする
 :vs ~/journal.txt<CR>
2) ファイルの先頭に移動して、改行を2つ挿入する
  ggi<CR><CR><ESC>gg
3) 現在の日付を挿入する
 <Windows限定>
  :r! date /T
 ⇒:r!コマンドで、続くプログラムの出力結果を現在のカーソル位置に挿入します
     windowsでdateコマンドを/Tオプション付きで実行すると、日付を取得できます
4) 現在の時刻を挿入する
 <Windows限定>
 :r! time /T
 ⇒dateと同様

5) 適当にフォーマットする。
  kJ
  ⇒日付の行に移動して、次の行と連結する。
 2011/08/20
   20:56
  と表示されているものが
 2011/08/20 20:56
  になる。
  
  03i*<ESC>
 ⇒行頭にアスタリスクを3つ挿入する

 $3a*<ESC>
 ⇒行末にアスタリスクを3つ挿入する

6)入力開始位置までカーソルを移動させて挿入モードにする
 o<CR>
⇒1行改行してその次の行から編集可能にする

ということで、以上の1) ~6)をスクリプトにすると、目的の物が得られるようになります。

それでは実際にスクリプトを書いてみましょう。
まず、これは_vimrcに書くことにしましょう。
:e $MYVIMRC<CR>
と打って、_vimrcを開きます。

最後の行に移動して次の1行を追加します
function! OpenMyJournal()
これは、関数OpenMyJournal()の宣言になります。!を付けると、再定義したときに上書きする事ができます。
もういきなり関数の中身も書いてしまいます。完成したものが以下のようになります

function! OpenMyJournal()
vs ~/journal.txt
execute "normal ggi\n\n\<ESC>kk"
r! date /T
r! time /T
execute "kJ03i*\<ESC>$3a*\<ESC>o\<CR>"
endfunction

注意点としては
・関数名の先頭は大文字
・:で始まるコマンドは、そのまま記述する。
例):vs hogeはvs hogeと記述する。
・ノーマルモードで入力するコマンドはexecuteを使用して"normal [コマンド]"のように使用する
・executeの引数の中では、<ESC>はそのまま使えないので、\<ESC>としてエスケープする
くらいでしょうか。

次はこの関数をCtrl-Jで実行できるようにします。
これは簡単で、
_vimrcに
nnoremap <C-j> call OpenMyJournal()
と書けばOKです。
これをセーブして、vimを開きなおして、C-jを押してみてください。
iを押して、"vimで日記を書けるスクリプトを書いた"と入力して、:wqを押してください。
そのあとC-jを押してみてください。
先ほど書いたコメントの上に再度日付・時刻が挿入されたはずです。

次に、このファイルが自動保存されるようにしておきます
同じく、_vimrcに以下を追加してください

"journal.txtは自動保存したい
autocmd BufRead journal.txt let b:start_time=localtime()
autocmd CursorHold journal.txt call UpdateFile()
autocmd CursorHoldI journal.txt call UpdateFile()
function! UpdateFile()
if((localtime()-b:start_time)>=60)
update
let b:start_time=localtime()
echo "auto saved."
else
echo "保存してから" . (localtime() - b:start_time) . "秒経過した"
endif
endfunction

[解説]
autocmdは、指定したファイルで、特定のイベントが発生したときに、一定の処理を実行する機能があります。

autocmd BufRead journal.txt let b:start_time=localtime()
は、"journal.txtが読み込まれた時(BufRead)、start_time変数にlocaltime()を格納する"ようにします。

autocmd CursorHold journal.txt call UpdateFile()
は、"journal.txtを編集中に、キー入力が一定時間(デフォルト4000ms)無い場合に、UpdateFile()関数をコールする"ようにします。
CursorHoldについて知りたければ、:help CursorHold<CR>とすることで、説明が見られます。

次に、UpdateFile()の説明
別に、4秒おきに保存でも良い場合には、UpdateFile()を作る必要はなくて
autocmd CursorHold journal.txt update
autocmd CursorHoldI journal.txt update
としてください。
これを1分おきにしたい場合にはUpdateFIle()関数を作って対応します
この関数は、呼び出されるたびに、現在時刻を取得し、最終保存(もしくはファイルオープン)から60秒経っていないか確認して、60秒経っていたら、updateコマンドにてファイルを保存して保存時刻を更新します。

一応これで目的は達成できたのですが、なんとなくr! date /Tが気にいらないので、スクリプトの組み込み関数を使って時刻を取得するように改変します
:echo stftime("***%Y/%m/%d %H:%M***",localtime())<CR>
と打ってみてください。
すると***2011/08/20 21:00***みたいな表示がされるはずです。
ということは、この関数を使えば、r! date /Tを使う必要が無くなります。

ということで、やってみてください。  

コクーンの外のパルスのクリスタルを内包する神の機械であるファルシにビジョンで選ばれたルシ

酔っぱらいの戯言だけど
FF13のあらすじみたいだけど、
論理パズルみたいなので解いてみる。ストーリーは全くしらない。
「主人公のライトニングはパルスのファルシに選ばれたルシ。
ファルシの中心、力の源にはクリスタルがあり、機能に合わせて周囲を形作る物体がファルシにあたる。
ファルシはクリスタルを内包した神の機械と呼べる存在。
ファルシを作ったさらに大きな神がファブラの神話におり、
その神が残した機械がファルシであり、人間からすればファルシは神に等しい存在。
神の機械であるファルシがいろいろなものを生み出し、人間の生活を豊かにしている」
「ファルシがルシになる者へ使命を伝える方法がビジョン。
ファルシに選ばれたルシはビジョンを見て烙印を押されルシとなる。
ビジョンは映像のようなものだが具体的に使命がわかるものではなく
ルシによる解釈によってビジョンから得るものが変わる。
ファルシはパルスにもコクーンにもあり複数存在する。
しかし、コクーンでパルスのファルシが発見されることは異常事態であり珍しいこと。
普通ならばコクーンのファルシはコクーンだけ、パルスのファルシはパルスだけに存在するからだ」
「パルスのルシはコクーンに出現することがなかったため、
人々はパージの発生まで現実に存在するとは思っていなかった。
コクーンは閉鎖空間だが完結しておらず、コクーンの外側にパルスの世界が存在する」
結論が見当たらないので、ムリゲーだけど、
まずは、解くべきキーワード
・ライトニング
・パルス
・ファルシ
・ルシ
・クリスタル
・ファブラ
・ビジョン
・コクーン
・パージ

次に、文脈から、それぞれのキーワードに説明を付けていく 
・ライトニング:パルスのファルシに選ばれたルシ
 ⇒とどのつまりルシ
・パルス:コクーンの外の世界
 ⇒つまり場所のこと。コクーンが東京23区だとしたら、23区外の首都圏みたいな感じ
・ファルシ:機能に合わせて周囲を形作る物体。神の機械。色々なものを生み出し人間の生活を豊かにしている
 ⇒いろんな形を作って、人間の生活を豊かにするための装置。
 ⇒旋盤みたいなもの
・ルシ:ファルシに烙印を押されてなるもの。
 ⇒???
・クリスタル:ファルシの真ん中にあるもの
 ⇒動力⇒ゾハル(ってやると収拾付かなくなるのでやらない)
・ファブラの神話:よくわからんが神話には違いない
・ビジョン:ファルシがルシに情報を伝える手段
 ⇒旋盤みたいなものが、ルシに情報を伝える手段。ビジョンがそのままの意味だとしたら、ハーミットパープルみたいなもの?
・コクーン
 ⇒東京23区
・パージ
 ⇒まったく説明がない。 けど、行間を読むと、パルスのルシがコクーンに現れる事だと思う

ルシがよくわからんので、いったん
・ルシ⇒旋盤のオペレーターとする。

以上の理解で、引用文を翻訳する。
「主人公は首都圏の旋盤に選ばれたオペレーター。
旋盤の中には動力があり、旋盤は色々な形の物を作り出すことができる。
旋盤を作ったさらに大きな神が神話に書かれている
その神が残した機械が旋盤であり、人間からすれば旋盤は神に等しい存在。
神の機械である旋盤がいろいろなものを生み出し、人間の生活を豊かにしている」
「旋盤がオペレーターになる者へ使命を伝える方法がハーミットパープル。
旋盤に選ばれたオペレーターはハーミットパープルを見て烙印を押されオペレーターとなる。
ハーミットパープルは、スタンドで、その能力は念写のようなものだが具体的に使命がわかるものではなくオペレーターによる解釈によってハーミットパープルから得るものが変わる。
オペレーターは首都圏にも23区にもあり複数存在する。
しかし、23区で首都圏のオペレーターが発見されることは異常事態であり珍しいこと。
普通ならば23区のオペレーターは23区にだけ、首都圏のオペレーターは首都圏だけに存在するからだ」
「首都圏のオペレーターが23区に現れるまで、23区の人々は首都圏にオペレータが存在すると思っていなかった。23区は閉鎖空間だが完結しておらず、23区の外に首都圏が存在する
直訳だが、なんとなく意味が通じるようになってきた。
わかりにくいのが、やっぱり「旋盤」「ハーミットパープル」と、「神」「使命」「烙印」「オペレーター」なのでそれぞれ以下のように読み替える。
・旋盤⇒NC旋盤
・ハーミットパープル⇒ログ
・神⇒技術者
・使命⇒操作
・烙印⇒免許
・オペレーター⇒職人

以上から元の文章を意訳した結果
ライトニングは首都圏で一番高性能なNC旋盤の操作免許を持った職人です。
このNC旋盤は様々なものを作り出すことができます。これにより、首都圏の人は便利な生活を送ることができています。
NC旋盤にはログ出力機能があり、このログにより職人は次にどのような操作をすれば良いかを知ることができます。
そうそう、この高性能NC旋盤は、伝記にも載っている偉大な技術者によって作られました。この高性能NC旋盤はいわば技術者の技術と同じ性能を持っています。
NC旋盤のログは、読む人によって様々な解釈をすることができるので、使用する職人によってログから読み取れるものは違います。
ところで、23区は現在封鎖されており、23区への出入りは禁止されています。23区にも首都圏と同様に高性能NC旋盤があり、職人もいます。しかし、23区と首都圏のNC旋盤技術者免許は異なるため、23区内の職人が首都圏のNC旋盤の免許をとっても意味がないため普通は取りません。
ところが、ライトニングは23区の住人であるにも関わらず、首都圏のNC旋盤の免許を取ってしまいました。
さて、ライトニングは首都圏のNC旋盤の知識を以て、23区のNC旋盤を操り、様々な道具を作り出していきます。これが23区にどのような影響を与えていくのでしょうか。
はい、NC旋盤にしたのがどう考えても間違いとしか思えないので、ちょっとだけアレンジしてみます。
彼女はライトニング。下町のそば職人。このそばは非常に美味しいと評判で、至高のそばと呼ばれていました。町人たちはこのそばが食べられるだけで幸せな毎日を送ることができていました。ライトニングが愛用しているそば打ち機は、伝説のそば打ち機製作職人が作ったもので、腕のある職人が扱えば、その職人の技によって色々な味を再現することができます。
ある時、ライトニングは色々あって、とあるうどん王国に飛ばされてしまいます。このうどん王国の王宮には伝説のうどん打ち機があり、なんやかんやでライトニングはこのうどん打ち機を使って究極のうどんを打つことになりました。ライトニングの持つそば打ちの技と、伝説のうどん打ち機が融合することで、どのようなうどんが打てるのかは誰にも予想できない。はたしてライトニングは究極のうどんを完成させて元の世界に戻ることができるのか。
そして、伝説のそば打ち機製作職人と伝説のうどん打ち機製作職人との関係は明らかになるのか。 
まあ、色々違うと思うけどたぶん大筋はこんな感じなんでしょ。

 

Vim(4)

次はキーマクロの予定ということで、Vimでのキーマクロの便利さと簡単な説明をします。

データの羅列を渡されて、これを配列やら構造体配列にしなければならないことがたまにあります。
これを自動的にしようとするのに、スクリプトを組んでやるのも良いですが、使い捨てスクリプトを大量生産するのも微妙だなと思う人は、Vimのキーマクロが便利です。

例えば、
1,3,10
2,5,20
3,2,30
4,5,20
5,7,39
6,10,29
7,9,12
8,1,5
9,12,17
10,13,0
とかいうデータがあった時に、3番目と1番目のデータを組みにした2次元配列を定義したいとき、
{10,1},
{20,2},
...,
{0,10}
という データを作りたい場合を考えます。
スクリプトを組めば簡単にできるのはわかります。別にどんなスクリプトでも良いんですが、たとえばpythonだと
1行読み込んで、strに格納したとして、
print "{%s,%s},"%(str.split(",")[2],str.split(",")[0])
とかやって、繰り返せば簡単にできます。

だけど、このためにわざわざスクリプトを組むのもなっていう気持ちもあります。
これをVimのキーマクロでやってみます。

まず、Vimのキーマクロの簡単な説明をします。
キーマクロの開始 q[a-z]
キーマクロの終了 q
ということで、ノーマルモードでqaと打つと、次にノーマルモードでqと打つまでのキーを記憶してくれます。
例えば、qajkqと打つと、jkがマクロとして記憶されます。(右にカーソルを移動して、下にカーソルを移動する)
このマクロを実行するには、ノーマルモードで@[a-z]と打ちます。qaで記憶したなら、@aで再生できます。
また、便利なのが、100@aと入力すると、マクロを百回実行してくれます。

先の例をキーマクロで実現してみます。
まず、上のデータ
1,3,10
2,5,20
3,2,30
4,5,20
5,7,39
6,10,29
7,9,12
8,1,5
9,12,17
10,13,0
まずgvimを開いて上のデータをコピペしてください。
gvimへのコピペの仕方を一応おさらいしておくと、上のデータをマウスで選択して、Ctrl+Insertキー(もしくはCtrl-c)vimを開いて、ノーマルモードであることを確認してから"*pと打ちます。「"*」はWindowsのクリップボードを表し、pコマンドは直前に指定されたもの(レジスタ)をペーストするので、クリップボードの中身をペーストします。
もしくは、iで挿入モードに入ってから、Shift+Insertでもペーストできます。

次に、マクロを開始します。
前準備として、ggコマンドを打って、先頭行に移動しておきます。
<ESC>qq
と打ってマクロを開始します。
作業の流れとしては、
(1)2番目の項目を削除
(2)3番目の項目をカット
(3)1番目の項目の前に","を挿入
(4)3番目の項目を1番目の前に挿入
(5)行全体を{}でくくって行末に","を挿入
(6)次の行に移動して行頭にカーソルを合わせる
とします。
※ここは何通りもあると思うので自分がやりやすい方法でよいと思います
これを実際にVimでやると
(1)f,vf,d
・f,でカーソルを「,」に移動する。
・vでビジュアルモードに移行する
・f,でカーソルを次の「,」に移動する
・選択範囲を削除する
ここまでで
[1,3,10]が[110]になります。
カーソル位置は、1と10の間になります。

(2)D
・Dで、カーソル位置から行頭までを削除します。(ヤンクバッファに入れられる)
ここまでで
[110]が[1]になります。

(3)0i,<ESC>
カーソルを行頭に移動させて、挿入モードに入って、「,」を入力して、ノーマルモードに戻ります。
※「:s/^/,/」でも良いです
ここまでで
[,1]となります

(4)0P
0で行頭に移動して、Pでカーソル位置の直前にヤンクバッファの内容をペーストします。
※pだとカーソル位置の直後になるので注意
ここまでで
[10,1]となります

(5)0i{<ESC>$a},<ESC>
0で行頭に移動、iで挿入モード、「{」を挿入して、ノーマルモードに戻る
$で行末に移動して、aで追加モード「},」を挿入して、ノーマルモードに戻る

(6)j
一行下に下がる

次に、qと打ちます。
これで、キーマクロが保存されました。
続いて、これをすべての行に適用したいので、適当に大きな数値を打った後に@qと打ってください。
例) 1000@q
すると、残りの行に対しても同じ操作が実行されて、最終的に
{10,1},
{20,2},
{30,3},
{20,4},
{39,5},
{29,6},
{12,7},
{5,8},
{17,9},
{0,10},
となります 

一応、もっと賢そうな方法も紹介しておきます。
※キーマクロの説明回なのに、キーマクロ不要でちょっとさびしい
:%s/\(\d*\),\(\d*\),\(\d*\)/{\3,\1},/
これは普通の正規表現による置換ですが、一応説明

:%
すべての行を置換範囲として指定

\(\d.*\),
で、カンマの前にある数字の列をグループ化

\3,\1
で、グループの3番目と1番目をカンマ区切りに置き換え

つまり、{11,22,33}は、\1 -> 11 , \2 ->22, \3 ->33 とグループ化されます。
 
\( \)
くくられた部分がグループ化

\d*
0文字以上の数値列
※あえて1文字以上の数値列とマッチさせたいのであれば
\d+
ではなく
\d\+
で指定可能。(デフォルトでは、+じゃなくて\+として指定する必要がある)

 

気になるもの

ペーパーなしドリッパー
http://www.hario.co.jp/coffee/hario_coffee/cfod_02.html
どんな感じなんだろう

ペーパーだと、コーヒーの臭い成分が濾しとられるんだってさ

テクノのジャンル

テクノはジャンル分けしても意味ないのはわかってるけど、
あの曲と似た曲探したいなと思った場合に、ジャンルが解らないと探せないわけで
http://techno.org/electronic-music-guide/
ここのサイトとか見ると、 ジャンル別に視聴できて、
ああこれなら探しているジャンルが見つかりそう と思って1時間。
迷宮にはまり込んでしまいました。

4つの要素で音楽探してくれるサービスが有ればいいのに。
テクノ:8
ポップ:6
ソウル:2
ジャズ:8
とか。

基本エレクトロで、ポップでややソウルな曲ってありますか?

ガガさん+テクノ = ???
5geaをフォローしましょう
アクセスカウンター

    • ライブドアブログ