SyntasticにMoonScriptを追加
こんにちは、びしょ〜じょです。 さて本題
VimのプラグインにSyntasticというものがあります。簡単に説明すると、ググってください。
で、今回は新たにMoonScriptのシンタックスチェッカを導入しようという感じになって書いた。
どちらかというとMoonScriptのインタプリタがしょぼくてエラーメッセージが貧弱すぎるので、Luaに変換してからそれをluacheckでチェックし、メッセージを整形してSyntasticに投げるという形になりました。シェルスクリプトがあまりにも雑なのはご愛嬌。
ハマったところ
結局はluacheckのエラーメッセージを拝借しているので、Syntasticのluacheck.vimを参考にした。「まるっとコピペして:%s/lua/moon/g
とかすればええやろw」みたいな気持ちでいたら、Syntax errorもWarning扱いになって困りまくった。さてこちらを参考にすると、Vimのerrorformatには%tというものがあって、略。ともなればもはや話は簡単で、適当に書いたシェルスクリプトに数文字加えて終わった。
他
💀
Gtkアプリケーションのキーバインド
こんにちは、びしょ〜じょです。さて、あなたはVimのキーマップをガンガン追加するタイプですか。~/.xmodmapをガンガン書くタイプですか。
(中略)
GTKアプリケーションのキーバインドを適当に変える方法をかく。Googleで調べてもEmacs風のキーバインドにするみたいなことしか出てこず、若干情報が古かったりディストロの差異で無効だったりしたので困った。対象の環境は最新のArchLinuxです。
とりあえず$HOME
に.theme/THEME_NAME/
みたいなディレクトリを作る。もちろんTHEME_NAME
はお好きに。
2.0系
mkdir -p ~/.theme/THEME_NAME/gtk-2.0-key
でディレクトリを作り、そこにgtkrc
を書く。
binding "gtk-THEME_NAME-text-entry" { bind "<alt>w" {"move-cursor" (words, -1, 0)} bind "<alt>e" {"move-cursor" (words, 1, 0)} bind "<shift><alt>w" {"move-cursor" (words, -1, 1)} bind "<shift><alt>e" {"move-cursor" (words, 1, 1)} bind "<alt>d" {"delete-from-cursor" (word-ends, 1)} bind "<alt>c" {"copy-clipboard" ()} bind "<alt>v" {"paste-clipboard" ()} } binding "gtk-THEME_NAME-text-view" { bind "<alt>c" {"copy-clipboard" ()} bind "<alt>v" {"paste-clipboard" ()} } binding "gtk-THEME_NAME-tree-view" { bind "<alt>c" {"copy-clipboard" ()} bind "<alt>v" {"paste-clipboard" ()} } binding "gtk-THEME_NAME-menu" { bind "<alt>e" {} bind "<alt>w" {} bind "<alt>c" {"copy-clipboard" ()} bind "<alt>v" {"paste-clipboard" ()} } class "GtkEntry" binding "gtk-THEME_NAME-text-entry" class "GtkTextView" binding "gtk-THEME_NAME-text-entry" class "GtkTextView" binding "gtk-THEME_NAME-text-view" class "GtkTreeView" binding "gtk-THEME_NAME-tree-view" class "GtkMenuShell" binding "gtk-THEME_NAME-menu"
みたいな感じになる。他にもinsert-at-cursor
などのコマンドがあるので調べてみてください。undo
/redo
が欲しかったけど見つからなかった。
追記 2015 02/10 12:05
ここを参照するといいかもしれん。
gyk-mytheme-text-entry
はテキストボックス内の挙動で、text-view
は他(?)か。よくわかっていない。
そして$HOME/.gtkrc-2.0
の適当な場所にinclude "/PATH/TO/.theme/THEME_NAME/gtk-2.0-key/gtkrc"
を追加する。$HOME
などの変数は展開してくれないので絶対パスを書く。
これで、上記の例でいけばAlt+e/wで単語単位でカーソル移動ができる。ターミナルからアプリケーションを開くと無効な記述があれば教えてくれるのでデバッグ用につかおう。
3.0系
mkdir -p ~/.theme/THEME_NAME/gtk-3.0
でディレクトリを作り、gtk-keys.css
を編集する。
@binding-set gtk-THEME_NAME-text-entry { bind "<alt>w" {"move-cursor" (words, -1, 0)}; bind "<alt>e" {"move-cursor" (words, 1, 0)}; bind "<shift><alt>w" {"move-cursor" (words, -1, 1)}; bind "<shift><alt>e" {"move-cursor" (words, 1, 1)}; bind "<alt>c" {"copy-clipboard" ()}; bind "<alt>v" {"paste-clipboard" ()}; } @binding-set gtk-THEME_NAME-text-view { bind "<alt>c" {"copy-clipboard" ()}; bind "<alt>v" {"paste-clipboard" ()}; } @binding-set gtk-THEME_NAME-tree-view { bind "<alt>c" {"copy-clipboard" ()}; bind "<alt>v" {"paste-clipboard" ()}; } @binding-set gtk-THEME_NAME-menu { } GtkEntry { gtk-key-bindings: gtk-THEME_NAME-text-entry; } GtkTextView { gtk-key-bindings: gtk-THEME_NAME-text-entry, gtk-THEME_NAME-text-view; } GtkTreeView { gtk-key-bindings: gtk-THEME_NAME-tree-view; } GtkMenuShell { gtk-key-bindings: gtk-THEME_NAME-menu; }
~/.config/gtk-3.0/settings.ini
にgtk-key-theme-name = THEME_NAME
を追加する。これは2.0系とは違いパスは要らずTHEME_NAME
だけで良い。
ついでに
OpenboxとawesomeのデフォルトではGTK+3.0系のアプリケーションを開くとウィンドウの縁が透明になっていてなんか鬱陶しかったと思うんですがボクだけですか。以下を~/.config/gtk-3.0/gtk.css
に書く。
.window-frame, .window-frame:backdrop { box-shadow: 0 0 0 black; border-style: none; margin: 0; border-radius: 0; } .titlebar { border-radius: 0; }
がんがん魔改造しよう。
LuaRocksとの戦い
こんにちは、びしょ〜じょです。 今日はLuaRocksと戦ったことについてちょっと書きます。
LuaRocksとは
Luaのパッケージマネージャっぽいものです。詳しくはググってください。
さて、こんなものを作りました。今回はこれ自体に用はなく(他でもっとじっくり書きたいが今はとにかく疲れている)、これをLuaRocksで引っ張ってくるまでの奮闘記を書く。
これが参考になったりした。
先に結論
# at MODULE's root dir luarocks write_rockspec MOD VER . sed -ie "s/https/git" MOD-VER.rockspec luarocks-admin make_manifest .
LuaRocksを使う(GitHubのリポジトリ)
例として上のluakatsu
を使う。バージョンを1.0-0(メジャーバージョン1.0、サブバージョン0という感じ)としよう。
rockspec
雛形
まずluakatsu
モジュールのルートディレクトリに行き、以下のコマンドでrockspecの雛形を作る。gemspecみたいなものですかね。gemspecほとんど知らないけど。
luarocks write_rockspec luakatsu .
するとluakatsu-.-1.rockspec
というファイルができる。なんだこれは。命名規則は<MODULENAME>-<VERSION>.-<SUBVERSION>.rockspec
かな。どこかに書いてあった。
とりあえずこの名前はまずい感じなのでluakatsu-1.0-0.rockspec
とでもしておく。
luarocks write_rockspec MOD VER .
としておくと良い。
整形
さて中を見ての通り実態はluaファイル。if文とかも使えたりするっぽい。しかしところどころ欠落している。
package = "luakatsu" version = ".-1" source = { url = "*** please add URL for source tarball, zip or repository here ***" } description = { summary = "*** please specify description summary ***", detailed = "*** please enter a detailed description ***", homepage = "*** please enter a project homepage ***", license = "*** please specify a license ***" } dependencies = {} build = { type = "builtin", modules = { luakatsu = "luakatsu.lua", uakatsu = "uakatsu.lua", ['luakatsu.bin.char_setmeta'] = "luakatsu/bin/char_setmeta.lua", ['luakatsu.bin.which_school'] = "luakatsu/bin/which_school.lua", ['luakatsu.character.idols'] = "luakatsu/character/idols.lua", ['luakatsu.character.others'] = "luakatsu/character/others.lua", trash = "trash.sh", } }
luarocks help write_rockspec
を見てもらえばわかる通りオプションで雛形にもう少し肉付けができるが、自分で書いたほうが早い(気がする)。
package、version
package
はモジュール名のlowercaseが良いらしい。version
is まずい。1.0-0
にする。
source
source
はtableになっており、url
とtag
が入る。今回はGit(Hub)のリポジトリでモジュール管理ということなので、url = git://github.com/Nymphium/luakatsu
としておく。httpsではなくgitとしておくことがミソ。
luarocks install MOD --verbose
とするとLuaRocks君の働き振りがうかがえ、url
をos.execute()
で実行されるコマンドの引数に渡しており、httpsとするとcurl
、gitとするとgit clone
とかで引っ張ったりしている。これが分からなくて7時間溶けた。どこにもそんなこと書いてねぇぞ…💢💢
description、dependencies
大体見たとおりな感じで、homepage
にはhttp://aikatsu.netとか書いておけば問題ない(本当か?)。maintainer
には自分の名前を書いたりね。
dependencies
は文字列のtableで、{"lua >=5.2", "luasocket >= 2.0.1"}
とかそんな感じで必要なものを書いていく。
build
build
について、LuaRocks君が雛形を作るときにだいたいは察してくれるが、よく見るとモジュール自体とは関係ないものも(dot files(.git, .gitignore, etc.)とREADME、あとLuaRocksで必要なものは無視されるのかも)突っ込んじゃったりしているので消す。上記の`trash = "trash.sh,"とか邪魔ですね。
type
で種類を指定できる。この種類というのはpure Luaとかmake
が必要とかそんなアレや。詳しくは公式ドキュメントのBuild rulesを見てくれ。
今回はpure Luaでmake
とかいらないので"builtin"ですね。
さて、source.url
をhttpsから始めるとcurl
でHTTPサーバからディレクトリを頂いていくみたいな動きをして、build.modules
にtest = "--version"
とし、luarocks --local MOD install --verbose
でLuaRocks君の動きを見てみると何故かGCCのバージョンが見えたりする。
build.modules
にあるvalueはそれぞれファイル名であり、build.type
が"builtin"の時おそらくLuaRocks君は拡張子を見てos.execute()
で何を実行するか考えるんだろう。だいぶ危ない気がする。
manifest
manifest
というリポジトリのインデックスファイルを作る。rockspecを作ったディレクトリと同じ場所で以下のコマンドを実行する。
luarocks-admin make_manifest .
Luaのバージョンごとにmanifest
とindex.html
ができる。index.html
にはrockspecのdescription
の息吹がうかがえる。
git push、そして伝説へ…
だいぶ雑だがこれでとりあえずはOK。では使おう。
luarocks --local --from=https://github.com/Nymphium/luakatsu/raw/master install luakatsu lua -luakatsu -e Aikatsu\(\) # 私のアツいアイドル活動、アイカツ! 始まります! フフッヒ
source.url
の仕様についてまったくわからない時だいぶ苦しんだ。途中まで何度もgit push
してはluarocks --local install MOD
するというだいぶ無駄なことをしていた。途中からはRubyでHTTPサーバをワンライナーで作っているモジュールのルートディレクトリに建てることでだいぶ楽になった。そこはluasocket使えよみたいな話はあると思いますが、それはGoogle先生がサジェストしてくれなかったのでダメです。
追記(20015 2/4 08:52)
HTTPサーバワンライナーとかしなくても、
luarocks --from=/PATH/TO/MOD search MOD
でもできたんですね。お母さん知りませんでした。
終わり。
ArchLinuxでもBlu-rayをリッピング
こんにちは、びしょ〜じょです。今更ながら『アイカツ!』と『青い花』のBDを買った。さてArchでBDを観る方法は…うっ、ArchWikiでもあまり参考にならない…。
さて本題。
ArchLinuxでBlu-rayをリッピングする
最新のArchは光学ディスクが/dev/srX
(X = 0,1,…)となる(雑)。で、これを適当な場所にマウントして、HandBrakeとかを使う
mount -o loop,ro /dev/srX /mnt/tmp # example ghb /mnt/tmp
リッピングとかせず観るだけでも、/mnt/tmp
をmplayerやVLCで開くことで観ることができる。VLCはopen-disc → BD → /mnt/tmp
という感じで開く。
MakeMKVとかもあるが、評価期間を過ぎると厳しくなる。ちなみにMakeMKVで作ったmkvファイルをmp4にするには
ffmpeg -i INPUT.mkv -vcodec libx264 -acodec aac -strict experimental -ab 128k -aprofile aac_low -ac 2 -ar 44100 OUTPUT.mp4
以上です。『アイカツ!』BDBOX第1弾には鋭かった頃の美しき刃さんや、あのクリスマス回やデブ回などが入っていてお得。
アイカツの感想、12/26は藤堂ユリカ様の誕生日、Windowsで日報を書く
こんにちは、びしょ〜じょです。
これはcoins Advent Calender 2014の21日目の記事とも言えます。
さて、本当に書きたいのはアイカツの感想なので一番初めに言及したいところですが、coins Advent Calenderということなのでそれっぽいことを先に書きます。
Windowsで日報を書く
ボクのバイト先ではWindows上で様々な開発が進んでいる。この時点でかなり個人的に厳しさを感じるので、バイトが始まってから3ヶ月ほどだが縁の切れ目を探している。
それはさておき、バイト先では行くたびに日報を書いている。テンプレートがMarkdownだったのでそれに従ってMarkdownで書いているが、それをHTMLにするとかそういうことはしておらず、Markdownのまま印刷してノートに貼って提出という感じ。
(中略)
Vim on WindowsでMarkdownを書いて、Previmでプレビューしましょう。
まずVimを入れます。KaoriYaあたりから適当にバイナリを引っ張ればいいんじゃないですかね。
適当にパスを通して、さてPrevimを入れよう。neobundleなどで管理するといいかもしれん。
さて、:PrevimOpen
でプレビューしてくれるコマンドを選択したいところですが、Windowsはぶっちゃけカスでlet g:previm_open_cmd='firefox'
とかやってもダメで、let g:previm_open_cmd='C:\Program Files\mozilla\firefox.exe'
とかでもダメで、あぁWindows死ねやみたいな気持ちになってきて付き合いきれないのでopen-browserを入れます。
これでPrevimでのプレビューをよしなにしてくれます。おそらく開かれるのはデフォルトのWebブラウザでしょう。
結論: Windows(上での作業)はクソ、WindowsでVimを使わないほうがいい
12/26は藤堂ユリカ様の誕生日
これまた重要です。お祝いしましょう。
アイカツの感想
12/13(土)より公開された『劇場版アイカツ!』についての感想です。
本当に最高でした。話としては1、2期の集大成という感じ。わがままを言うと『輝きのエチュード』はフルで聴きたかったなぁ…。
あかりちゃんがDreamyCrownのドレスを持っていて、紅林さんが出ないあたりから推測するに時期としては107話あたりでしょうか。
追記:アイカツ112話をまだ観ていませんでした。適当なことを言って申し訳ございません。
いちごちゃんのコンセプトどおり、「観てくれたみんなが素敵な明日を迎えられるような」素晴らしい出来でした。はい。
作画もテレビアニメ版以上に丁寧だし、モアザントゥルー(回想)やスプラッシュ、さらには三ノ輪ヒカリさんが出てきたあたりに制作陣の気合と愛情を感じました。
エンディングのドット絵も可愛いかったし背景のステージも完成度が高かった。
感想を書くのが下手なのでこれ以上はやめておきます。映画を観て感想を語り合おう。おわり。
口癖カウンター
「血を吸うわよ」2回
「穏やかじゃない」1回
「オケオケオッケー」2回
non-root userでVim+Lua
こんにちは、びしょ〜じょです。
これはcoins Advent Calendar 2014 - Adventar8日目の記事とも言えます。
大学、計算機室。こちとら学費を払っているいわば顧客やぞ、なめた環境しやがって。
T大情報学群情報科学類の計算機室に入っているVimはちょいと古い。OS Xでビルドすると途中でコケて面倒だしOS Xは個人的に好きじゃないので放置。
さて本題に入ります。タイトルの通りnon-root userでVimとLuaをビルドします。
え、大学のVimでneocompleteとか使いたいと思いませんか。はい。
1. readline
pentasでLuaをビルドするとreadlineが無いなどで怒られます。ということでまずreadlineをビルドします。
mkdir ~/local mkdir ~/tmp cd ~/tmp wget https://ftp.gnu.org/gnu/readline/readline-6.3.tar.gz tar xvf readline-6.3.tar.gz cd readline-6.3 ./configure --prefix=${HOME}/local make -j32 make -j32 install
pentasはXeon E5-2650を積んでいる!!8 core 16 threadsすげえ!!make
はええ〜〜っぴゅぴゅぴゅ〜〜〜
2. Lua
ということでreadlineがビルドできた。続いてLua行きます。
wget http://www.lua.org/ftp/lua-5.2.3.tar.gz
tar xvf lua-5.2.3.tar.gz
cd lua-5.2.3
そういえばここで罠が発生します。このままLuaをビルドするとVimにLuaインタプリタが入りません。悲しい。
Makefileに細工をする必要があります。
ではこちらをご覧ください。
ここでまた罠が発生します。上記の通りだと./configure
でコケます。
liblua.soの部分をliblua.so.5.2(wgetで引っ張ったバージョンと同じにする)に書き換えます。
これでOK。
make linux -j32 MYCFLAGS="-I${HOME}/local/include" MYLDFLAGS="-L${HOME}/local/lib -L/usr/lib64" MYLIBS="-lncursesw" cd src && make -j32 linux make -j32 install INSTALL_TOP=${HOME}/local/lua
OK。~/local/lua
ができたと思います。
3. Vim
さて本題のVim。
hg clone https://vim.googlecode.com/hg/ vim cd vim/ ./configure --with-features=huge \ --enable-rubyinterp=dynamic \ --with-lua-prefix=${HOME}/local/lua \ --enable-luainterp=dynamic \ --enable-fail-if-missing \ --enable-multibyte \ --libdir=/usr/lib64 \ --prefix=${HOME}/local \ make -j32 make -j32 install
$HOME/local/bin
にVimが爆誕しました。パスを通してください。ついでにLuaもあるので是非使ってください。
おわり
12/3は冴草きいちゃんの誕生日、ゆるゆり劇場版を観た、鎌倉に行った、XperiaZ2を無くした、Lua
追記 2015 03/18
"l\\u\\a\\5.3 utf8"で優先言語を日本語にしてGoogle検索するとこの記事が上位に来るなんて書いてる時に思ったわけ無いだろ!
今見ても内容がお粗末すぎるので勘弁してください。追記終わり
こんにちは、びしょ〜じょです。
言いたいことの9割はタイトルに書きました。
12/3は冴草きいちゃんの誕生日
最重要事項です。みんなで祝おう。
XperiaZ2を無くした
バイト先に行く途中のバスで無くした。送迎バスなので玄関のすぐ手前まで行き、ボクはそこで下車する直前まで触っていたのだが…。
もう1周間近く経ったので多分見つからない。
ゆるゆり劇場版を観た
@__mukiさんと公開初日に観に行った。感動した。作画はアニメ版と同じく安定しており、購入したパンフレットに書いてあったとおり画風は原作に寄せた感じだった。
なんといっても背景が(原作、アニメと比べ)繊細に描かれている!!
内容は割といつもの通りの日常だった。ゆるゆり12巻初回限定版についてくる小冊子の内容をもう一度読もう。
ネタバレは大罪なのでこの辺で。ただ一つ最高に可愛かったことは言っておきたい。
鎌倉に行った
なんとなく鎌倉の呼び声が聞こえた。T大の推薦入試による5連休最後の日―ゆるゆり劇場版を観た次の日にあたる―、祖母と行った。
津田沼からJR横須賀総武線快速で1.5h。近いような遠いような。
ちなみにT市から津田沼駅までも同じくらい。
1300くらいに到着した。
鎌倉といえば『青い花』を筆頭に、しばしば物語の舞台として扱われる。
少しくらいは聖地巡礼したいという気分もあったが、90%ほどはなんとなくな感情が覆っていたので鎌倉を舞台とした作品の予習なんていう時間は無かった。
大晦日でも何でも無いのに大勢の人が居た。
鎌倉って観光地だったのか…ところでJR鎌倉駅を降りたらデカい神社があるんですよ。
鶴岡八幡宮とかいう名前で有名なんですって。
そんなことすら全く知らないで行った。
神社を回ったら結婚式らしいものが行われていた。めでたい。
黒漆の白旗神社が格好良かった(小並感)。
それから江ノ電に乗った。ローカル線だし静かなんだろうと呑気なことを考えていたらとんでもない乗客量に仰天した。
ただでさえ4車両で小ぶりなんだぞ、もっといたわり給えよ。
窓から手を出せばひとんちの壁にぶつかってしまう区間がだいぶある程に地域密着(物理)型だった。
ボクはど田舎育ちで、実家から一番近い駅は17kmくらい離れていて全く使えなかったし、電車に乗る機会は帝都に出た時くらいなので、単線はだいぶ新鮮に映った。
なんとなく来たとは言ったが、なんとなくの中に海に行きたいという思惑が埋まっていたので、初めて車窓から海が見えたところで駅から降りた。七里ヶ浜駅。
とはいえ行くあてはなかったので海沿いの道を歩いた。砂浜もちょっと歩いた。
気づけばひと駅分歩いていた。浜辺で波に濡らされた靴を引きずる祖母と共に、鎌倉高校前駅から藤沢駅までまたオノデンに乗った。
藤沢駅についたのは1530。神社の参道から昼飯は食べようと思っていたが、鎌倉では何が名産で、どれを食べれば徳が積めるかなど考えていたら結局今の今まで何も食べないでいた。
祖母が虫歯を患っているらしく、固いものは食べられないようで。彼女は特にグラタンを所望していたので、駅ビルのイタリアン飯屋で遅い昼食をとった。ハイカラ娘め。
WORDのOBの方がご飯をおごるという会がその日の1830からだったが、ボクがチバラギスタン南部を発ったのは1830で、もうアホかと。
とりあえず行ったらタダ飯会はほとんど終了していた。
とりあえず小籠包と水をもらった。
Lua
最後までどうでもいいルポを読んだ人は多分ここを読まないし、ルポを読み終えなかった人はここまで読まないだろうから、一番どうでもいいことは最後に書こう。
最近Luaという言語を始めました。Luaの詳細はウィキピーディア先生などに聞いてください。
簡単に説明すると、高速な動的型付けのスクリプト言語だと思います。ウィキピーディア先生の概要のあたりを見れば多分もうすこしまともなことが書いてあります。
唯一のデータ構造はtable{}
いわゆる連想配列です。
t = {1, 2, 3, "a", "b", (function sum(a, b) return a + b end)} print(t.sum(1, 2)) --> 3
なんでも入れられる。要素に名前も付けられて、上記では関数にsumという名前をつけてt.sum()
という感じで関数を呼んでいる。
これはt["sum"]
の糖衣構文で、後述するようにオブジェクト指向型言語テイストな書き方に貢献している。
ついでに--
で以降右の文字はコメントになる。他にもコメントの方法はあるがカツアイ。
さらに言うと標準ライブラリは_Gというtableに入ってる。
(function (x) print(x) end) (3) --> 3
無名関数とかできる。かっこいい(雑)。
function addx (x) return function (y) return x + y end end
functionも返せる。カリー化とかできるぞい。
t = {} mt = {x = 1, y = 2} setmetatable(t, {__index = mt}) print(t.x) --> 1
先ほどのtableにメタテーブルというものをくっつけることでtable同士で二項演算をしたり、別のtableから要素を持ってくるなどができる。
速い
多機能
コルーチンとかある(雑)。
a, b = b, a
という代入が許されているのでtmp()とか書かなくていい(雑)。残念な点
string.len("a") --> 1 string.len("auieo") --> 5 string.len("あ") --> 3 string.len("あいうえお") --> 15
string.len(str)
は察しの通りstring型strの文字数を返す関数だが…。Luaがブラジル発祥なのが悪いんや…。
ただしこれはLua5.2までの話で、Lua5.3ではutf8という型が生み出され、
utf8.len("あいうえお")
は大和の民に5
を返してくれる。とはいえstring型がUTF-8に対応したというわけではなく、悲しさはにわかに残る。
Rubyで
str.to_i
にあたるtonumber(str)
も、strに二項演算を書いてもうまく動いてくれなくて厳しい。
tonumber("51") --> 51 tonumber("51-2") --> nil tonumber("51*1") --> nil
え、tonumber()
ってそんな用途に使わないんですか。っていうくらいtonumber()
の中身で計算をしようとしている人が居ない。ごめんなさい世間的にはボクが悪いようです。
追記(12/04 16:09)
function tonumber_ext local f = loadstring("return " .. str) return f() end
でいけますね。作れっていうことでした。追記おわり。
Lua 蛇足
Luaは完全に名前で選んだので、何に使われているかしっかり調べるまで全く知らなかった。当初はC/C++の組込みを目的に作られ、最近ではゲームエンジンで活躍している。
アイマス2も一部Luaが加勢しているらしい。ほかにはNginxとかLuaLaTeXとかヤマハルータとかヴォカロとか。
現在ボクがデスクトップpcのArchLinuxで使っているタイル型WM "awesome" もLuaで記述されている。
二度目ですが詳細はウィキピーディアを見ろください。
めちゃくちゃどうでもいいんだけどはてブのMD記法ゴミ
百合について
こんにちは、びしょ〜じょです。だんだん秋らしくなってきた。読書の秋。百合の秋。
今年はなんとなく自分を否定してみた。愛飲しているコカコーラは実はまずくて、惰性で飲んでいるとか、本当は百合は好きじゃないとか。
だが、なんとなく自分のTwilogを見たら、自分は最低でも週5日は"百合"が含まれるツイートを必ずしていた。さらに、1周間の"百合"が含まれるツイートを合計すると最低でも20個ほどになった。やっぱ好きなんすね〜。
百合について
そもそも百合との出会いはと言われると記憶が曖昧だが、『ゆるゆり』1期は観たし、2012年の正月にお年玉で『ささめきこと』1〜8巻を購入して9巻を爆速で予約注文したことは覚えている。『ゆるゆり』かもね。
しかしプリキュアも無印から全部リアルタイムで観ていたしなぁ。
まぁそこは置いといて。百合も言ってしまえば恋愛モノの一ジャンルなわけだ。では、他の恋愛モノとの違いは何なのか。
ボクが思うに、両者ともに女の子であることですね。いや、まぁそうなんですが。以下をご覧ください。
男性が女性を養う、守るという形から、女性同士で支えあっていく、対等な関係であることが自分の中では矛盾なく入ってくる。
先に言っておくが、女尊男卑とかそういう話をするわけではない。
物語の初期ではフニャチンな男がこれといった成長もなく、最終話で俺が守ってやるみたいなケースはいくつか散見されうんざりする。
百合においては(少なくともボクが見てきた百合作品では)いっしょにがんばろうエイエイオーといった相互の補完関係になり、納得の行く物語になる。
もうひとつは、男性が居ない、あるいは脇役になるので、作品の中の登場人物で物語が完結する。
これは何かというと、ノンケモノで言うところのヒロインに対する恋人♂、つまり読者♂の二次元写像に当たるものがおらず、読者に媚びる必要が減るのである。
これにより不可解な温泉回やチラリ、ラプラスの魔も予測不能なラッキースケベなどによるテンポの悪さが解消される。
そして、友達のような恋人のような甘酸っぱい、なんともいえない間柄である。
街中を二人で手をつなぎ歩いても、一緒にお泊りしても、背中流しっこしても、女の子同士なら付き合っていなくてもそれほど不自然ではない。ノンケカップルでこれをやられたらもう非難轟々ですね。
女の子同士だから付き合う前にこんなイベントを(読者に不自然がられず)することができる。しかも付き合ってもこのイベントたちは何度でも起き得る。この感じはノンケモノでは再現不可能だ。
男性が出なければ百合というお前は一つ大きな勘違いをしている。お前が百合と信じて見ている作品を見ているお前の股間を見てみろ。それから作品をよ〜〜〜く見てみろ。作中の女性と目が何度か合うだろう。作中の女性の谷間や尻がお前の目に映るだろう。
そうだよ、その話は彼女たちで完結していない。視聴者、読者であるお前を含めて物語を進めている。お前に見られているていで話が進んでいる。
上に書いたものは一部間違いであり、話の受け手のクローンが物語に直接関わらなくとも、登場人物は暗に受け手に対する話し手という役割を担っている。
話し手が受け手を意識しすぎると、その物語は受け手であるお前を登場人物の一人として舞台にマッピングしている。透明人間か、あるいは汚いおっさんか。
透明人間の男が物語に登場してしまうと、その男を喜ばせるための物語になる。それは百合と呼べるかー否。
その点で、(百合作品ではないが近い存在として挙げると)『ゆゆ式』は完全に彼女らで話が完結している。
なお、これらは全てボク個人の考えであり、云々。
9/15と(終)
夏休み中は毎日日記を書いている人間がいてすごいなぁと思ったので便乗した。
1100
起床。親に頼んでおいた米が届いた。起床、荷物を受け取り、アイカツを観、風呂に入っても1300だったので驚いた。
1500
登校。
1700
イーアスに行く。ギタークロスと編集部の紙コップ500個を購入。
1900
飯。お好み焼き。道頓堀花畑店。食べ放題で食べまくって食べ過ぎた。途中店内で幼女先輩がコップを割ってさらにその上に立ってしまったので肝が冷えた。肝を冷やしながらお好み焼きを頂いた。うまい。
0400(論理的9/16)
寝る前にtmuxのステータスラインが気になった。メモリ使用率、CPU使用率とそれぞれ一番食っているプロセス名とその割合を表示しているが、psコマンドを加工していてtopコマンドを見て比較するとどうにも精度が悪い。
じゃあtopコマンドを用いて表示するかということになった。最初はtop -n1
をawkで受け取るという感じだったがなんか微妙だ。適当にファイルに出力してvimで見てみるとエスケープシーケンスやらなんやらが入っていてこらアカンわとなった。
manを見たりググったりすると「topコマンドにはbオプションというものがあってだな…」ということだった。
top -bn1 | awk 'NR==8{printf "#[fg=yellow]Max:%s(%2.1f%)", $12, $9}'
こんな感じで一番CPUを使っているプロセス名とその割合が出た。
topをメモリ使用率でソートして出すにはtop -o %MEM
がいいという話を@polamjagくんから頂いたので上記のものを流用してすぐにできた。
概ね満足したので眠りについた。
自分が日記を書くのはモチベーションがある程度ないと難しいということが今分かった。毎日日記を書く人はすごい。
昨日の話を今書いているあたりで察して欲しい。
Centifolia
こんにちは、びしょ〜じょです。
さて、なんとなく最近入手したものを羅列してみる。
- 椅子と除湿機 ― 6/9
- 良い。夏は除湿機。
- ディスプレイ( http://amzn.to/1vDXAJJ ) ― 6/12
- 百合漫画多々
- 百合は最高。
- あかすり(手袋タイプ) ― 7/26
- ごっつい手袋でゴリゴリ垢が取れる映像に影響された。ボディソープが要らない。
- Xperia Z2 SO-03F(docomoの回線付) ― 8/9
- 落下落下また落下による打撃を受け、画面が破損しタッチセンサが死に始めたiPhone5(16GB、黒)に張り付いていたSoftBank回線を生贄に生成した。iPhone(というか林檎社)はなんとなく肌に合わなかったので去年の暮れあたりから変えたいと思っていた。個人的な感想でiPhone5君(docomoとSoftBank)と比較すると、
- テザリングも充分な働きをしてくれたが、iPhoneで使ったテザリングアプリは純正ではなかったので比較するのはかわいそうだ。とはいえデフォでテザリングくらいさせてくれよという気もあるのでやはりZ2に軍配が上がる。Z2(というかソフト)の悪い点はデフォルトアプリ(メール、音楽プレイヤー)が微妙、イヤホンジャックの位置、防水のためなのはわかるがmicroUSBのカバー。カメラボタンも個人的に使いどころがわからない。
- とはいえ使い始めてから1周間も経っていないので数日後には意見が変わっているかもね。しかしハードの性能の優位性はZ2であることに変わりはないだろう。まぁLTE+テザリングが充分な働きをしているのでもうお腹いっぱい感もある。
- 光学ドライブの位置に挿せるハードディスクのベイアダプタ(?) ― 8/12
- つまりこんな感じのもの( http://amzn.to/1q70RJc )。ツクモで買った。
- 自由課題でやっている、独自のLinuxディストロを作るというものの役に立てたい。合計してSSD256GB+HDD500GBになった。
- ついでにUSBメモリとmicroSD(Z2用)も買った。
- スイッチ付き電源タップ(1穴) ― 8/12
- 以前買ったUSBライトのために引っ張ってきたが、よく考えたら電気スタンドで良かったのではという気持ちになり使う気がなくなった。
さて…。