diary

日記です

UnityのMeshが手軽にヒープをモリモリ食う話

Unity - Scripting API: Mesh.triangles

Meshのtrianglesプロパティを参照すると、(CombineMeshでまとめた複数のサブメッシュを持つMeshは)ヒープに新たに配列を確保する。手軽に毎フレCombineMeshするみたいな事してるとうっかり破滅する。 サブメッシュ横断した頂点インデックスになるんだろうからまあそうなるわなという感じはあるが。

軽く罠っぽいけど、まあGetTriangles/SetTriangles使えやという話。

わたしの、最高のガジェット

この記事は ねとけん Advent Calendar 2014 4日目の記事です。

僕が今年買ったもので常用してるものを適当につらつら書いていく。

SONY MDR-1RBTMK2

Amazon.co.jp: SONY ワイヤレスステレオヘッドセット MDR-1RBTMK2: 家電・カメラ

SONYBluetoothヘッドフォンのフラッグシップモデル。 2012年発売のMDR-1RBTの後継。

発売自体は去年なんだけど、apt-X対応タブレットを使い始めたので2年近く使った初代から乗り換えた。

装着感がよい

イヤーパッドが柔らかくて適度に弾力があり、縫製もしっかりしていて、初代モデルを2年近く雑に扱ってもビクともしなかった。

絶妙な側圧なので長時間つけてても締め付けられず、不意に外れる事もないので、装着感は極めて良い。

値段相応かそれ以上には良い。あんまり語れる耳を持たないので詳細は省略。。。

MK2からapt-X対応してるので初代に比べて対応端末からだとBluetooth接続時の音質は明らかに上がった。(ような気がする)

使い勝手

実はステレオミニジャックを搭載しているため、Bluetooth無しでも普通の有線ヘッドフォンとして利用できる。その場合はBT無しモデルのMDR-1RMK2と同等の音が出るので、音質も上がって得な感じでオールオーケーな感じになる。

僕は音ゲーマーなので、音ゲー筐体のヘッドフォン端子や備え付けてあるアンプにつないで使ってる。

また、NFC搭載スマホとならヘッドフォンつけてかざすだけでペアリング可能。

ヘッドフォンの電源ON => BT接続をスマホ側から確立という流れをワンタッチ&ノールックで行えるので、僕はヘッドフォンをかぶってから適当にスマホをかざす、というのが完全に習慣になってしまっている。たまにNFCのないiPhone 5cをかざして本当につらい気持ちになる...

SONY SRS-X7

Amazon.co.jp: ソニー ワイヤレスポータブルスピーカー ブラック SRS-X7/B: 家電・カメラ

SONYのポータブルワイヤレススピーカーのフラッグシップモデル。 こちらは今年頭あたりに発売されたのを、夏ぐらいにその場のノリで買った。

総合出力32Wというポータブルワイヤレススピーカーとは思えない出力を誇るので、全力を出すと一般家庭だと近隣から苦情が出る。完全に迷惑なので全力を出さないように。

サブウーハー+パッシブラジエーターx2を積んでいるのが一番の特徴で、かなり低音に強い。机の上で鳴らすと机が揺れて楽しい

使い勝手

無線/有線LANとBluetoothとステレオミニジャックを搭載しており、DLNA/AirPlay/Bluetooth/有線接続の4方式で接続可能。こちらもapt-XとNFCペアリングに対応しているので、Androidから使うとより便利。

そこそこにサイズはでかいのだけど、ポータブルワイヤレススピーカーなのでちゃんとバッテリーも搭載している。かわりに重さが1.9kgあるのでダンベルとしても使えて便利

自宅で使うときには自由に場所を移動させれるのは地味に便利。僕の自宅は広めのロフトがあるので、ロフト篭って作業するときとか、マンガ読むときとかにリビングから持ち込んでズンズンしてる。 タンクトップを着て鳴らしながら肩に抱えると黒人ごっこが出来て非常に便利

f:id:Trapezoid:20070421152424j:plain

外でやると迷惑なのでやらないように。

サイズと重さの問題から鞄に常に忍ばせておくみたいな運用は不可能だけど、やっていく気持ちがあればイベントや旅行の際に持ってくぐらいは十分可能。

Busy BeaverのラウンドシェイプパックMでもマチを広げればだいたいジャストサイズで入る。

Amazon.co.jp: [ビジィ・ビーバー] Busy Beaver コーデュラ ラウンドシェイプパック M BB1333 10 (ブラック): シューズ&バッグ:通販

河口湖で2日間きんいろモザイクを土下座しながら視聴するなどの用途で実際に運用した実績がある。 一緒に土下座した面々からは非常に好評だった。

Amazon.co.jp: きんいろモザイク (5) (まんがタイムKRコミックス): 原 悠衣: 本

救い

kobo aura

Amazon.co.jp: KOBO 電子書籍リーダー KOBO aura (ブラック) N514-KJ-BK-S-EP: パソコン・周辺機器

去年発売されたkobo電子ペーパー端末。

ずっとkobo gloを使っていたのだけど、200台限定31%OFFクーポンを配っていた時期があって思わず飛びついた。

8980円でこれ買えたのは大分お得な気分になれた。

平たい

平たい。

f:id:Trapezoid:20141202004007j:plain

平たい画面で読むきんいろモザイクは最高という他ない。

実用上も、段差に邪魔されずにスワイプできるのはストレス無くていい。あと段差あると必然的に奥まった位置に指を持ってかなきゃいけないので、それが無いのは地味にでかい。

ページ送りとかはgloよりは改善している感じはする。とはいえ電子ペーパー端末なのである程度諦めは必要。

Kindle Voyageでもいいかもしれないけど高いしmicroSDも刺さらないし、microSDXC 64GBぶっさす生活に慣れてると辛さがありそうな感じなので断念した。

kobo auraは安く買えれば今からでも買っていい端末と言える。

以上

zncでISO-2022-JPなサーバーに接続する方法

経緯

IRC BouncerであるところのzncでISO-2022-JPなwide等のネットワークに接続出来るようになったので、手順を雑に記しておく。

zncの内部エンコーディングUTF-8に統一されている。 このため当然wideにつなぐにはエンコーディング変換をする必要があるのだけど、現行のznc 1.2にはcharsetモジュールが入っていて一見これでISO-2022-JPなサーバーにも接続出来るように思える。

しかし使ってるライブラリがiconvな為、UTF-8 => ISO-2022-JPの変換でよく化ける。おまけにマルチバイトのチャンネル名を正しく扱えず、あんまり使い物にはならない。

何とかならないかとzncの実装を追っかけてたら、数ヶ月前にICUを使ったエンコーディング変換が実装されていたことがわかった。

https://github.com/znc/znc/commit/c0a5ecb40b65072a051fa29412142f9eeff9a9f6

znc 1.3がリリースされれば使えるとは思うが、とりあえずソースビルドして試してみることにした。

とりあえず個人的にznc専用に飼っているさくらVPS上のCentOS6に構築した。

手順

ICU

まずICUを入れる。zncからはpkg-config経由でicu-ucが要求されるので、yumから入れたりするとバージョンが古いのかpkg-configからはicuしか見つからずICUが有効にならない。 これも怠惰にソースビルドすることにした。

curl -O http://download.icu-project.org/files/icu4c/52.1/icu4c-52_1-src.tgz
tar xzvf icu4c-52_1-src.tgz
cd icu/source
./configure
make
make install

問題なく入る。ビルドはわりと長い時間かかる。 文字を扱うということが単純なようでいて業が深いのだなと思っていたら終わった。

znc

ICUをソースビルドしたので/usr/local/lib/pkgconfigをpkg-configのconfig pathにしておく。

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

やっとzncをビルドする。

git clone git@github.com:znc/znc.git
cd znc
./autogen.sh
./configure

configureの結果からICUが有効になっていることを確認する。

charset:      yes

makeする

make && make install

あとは一旦他のznc導入記事でも見て設定していく。

エンコーディング設定

charsetモジュールは廃絶されたので、設定方法も微妙に変わった。webadminからまだ弄れないようす。 まずは対象ユーザーにcontrolpanelモジュールを入れておくこと。 usernameというユーザーにwideという名前でネットワークを作成したなら、

/privmsg *controlpanel SetNetwork encoding username wide JIS8
/privmsg *controlpanel Reconnect username wide

すれば設定は完了する。IRCクライアントの文字コード指定はUTF-8で接続する。

使ってみた結果

割りと使える。適当だけど以上。

vimの話

夏バテと飲み過ぎによる胃もたれの途中ですがvimの話です。

画面スクロール如きでmode意識するな

vimでもモードを意識しないで済むならそれに越したことはないという場面は往々にしてあります。 特にスクロールしたいというのは割り込み的に発生する欲求なので、僕はこれをできるだけ何も考えずに行えるようにしています。

imap jjjjj <esc>
imap kkkkk <esc>
imap hhhhh <esc>
imap lllll <esc>

と設定した上でキーリーピート速度を早めておくと、hjkl押しっぱなしでinsertモードをすぐに抜けてそのままカーソル移動できます。

というかマウス使え

shellからでも

set mouse=a
set ttymouse=xterm2

しておくことでマウスが結構まともに使えます。 ttymouse=xterm2するとドラッグ効くようになって、splitされたパネルのリサイズとかあと範囲選択爆速になって色々捗ります 数行上下にスクロールするのにjkで画面端までカーソル動かすよりは、スクロールしたほうが速いやろという話です

僕のtmux.conf

set -g status off
  • コンソールのログとかスクロールして見れるのが一番便利、セッション維持してくれればいいのでは
  • パネル分割とかiTermでやれ

FAQ

  • カレントディレクトリのgit branchとか時間とか出したい
    • zshのPROMPT/RPROMPTでやれ
    • 時計見ろ
  • Macが無い
    • 買え
  • screenでいいのでは
    • そうかも

以上です

redis2.8のttlが複雑怪奇だという話

結論

  • Redis 2.8(unstable)はttlの挙動が変わっているので気をつけろ

概要

http://trapezoid.hatenablog.com/entry/2013/02/10/035020

これの続きです。この記事の中で触れた、ttlコマンドの挙動に関してunstableから微妙な変更が加わっていました。どうやら2.8で入るっぽいです

いままで(stable)

  • ttlが自然数として表現できる場合には自然数を返し、なければ-1を返す
  • そもそもexpireを設定していない場合も、-1を返す

これから(unstable)

  • ttlが自然数として表現できる場合には自然数を返す
  • expireが存在するが、既にexpireすべき時間を迎えており、masterからのキー削除命令を待っているキーの場合には0を返す
  • そもそもexpireを設定していない場合は、-1を返す
  • そもそも指定したキーがdb上に存在しない場合には-2を返す

という感じで、意味合いが4通りぐらいになります。色々見分けられるようになるのはいいんですけどちょっとこれはどうなんですかね。。。