Streem 言語の雑感
matz が Streem なるスクリプト言語をデザインしているということで、パッと見で思いついたことをメモしておく:
- UNIX の pipe っぽいストリーム操作を中心に据えた言語
cat
はSTDIN | STDOUT
と書けるらしい- 型が欲しい
- (Functional?) Reactive Programming と相性が良さそう
- 時間的に変化するイベントを取り扱える?
- 型が欲しい
- 例外状態の伝搬をどう扱う?
- UNIX pipe みたいに繋いだプロセスのどれかが異常終了したら全体の処理が失敗するのでは困る
- 文字列とかいうリニアな記号表現で分岐したストリームを表現するのがまず難しい疑惑
- いっそ Haskell の needle みたいに ASCII アートで書くのはどうだ
{-# LANGUAGE QuasiQuotes #-} fNeedle :: (Int, Int, Int) -> (Int, Int, Int, Int) fNeedle = [nd| }=={(+1)}=\==========================> \ }===\ \ /============> \ \ / }=) \ (==={uncurry div}=/={negate}===> \ \=={(*2)}========================> |]
型が欲しい。
Yosemite で AquaSKK の入力モードが切り替わり続ける問題を適当に直した
追記:この修正が取り込まれたバージョンのバイナリはここから入手できる↓
AquaSKK(OS X yosemite対応版) - みずぴー日記
Yosemite で AquaSKK を使うと、 Safari などに入力するとき入力モードが高速で切り替わり続けるバグが出ることがある。
理屈は分かってないがそれっぽい箇所を適当に直したらバグが直ったっぽいので一応メモしておく。他への影響は追っていないので知らない。無保証。
修正済みのフォーク:uasi/aquaskk · GitHub
修正点:platform/mac/src/server/SKKInputController.mm#L159-L169あたりを if (activated_) { activated_ = NO; ... }
で囲む。
} else { // 個々の入力モードを選択している場合 SKKEvent param; // ex) "com.apple.inputmethod.Roman" => SKK_ASCII_MODE param.id = [menu_ convertIdToEventId:(NSString*)value]; if(param.id != InvalidInputMode) { session_->HandleEvent(param); modeIcon_->SelectInputMode([menu_ convertIdToInputMode:(NSString*)value]); } }
↓
} else { if (activated_) { activated_ = NO; // 個々の入力モードを選択している場合 SKKEvent param; // ex) "com.apple.inputmethod.Roman" => SKK_ASCII_MODE param.id = [menu_ convertIdToEventId:(NSString*)value]; if(param.id != InvalidInputMode) { session_->HandleEvent(param); modeIcon_->SelectInputMode([menu_ convertIdToInputMode:(NSString*)value]); } } }
Safari 他でスワイプして戻る操作が効かなくなった問題が色々やったら直った
2016年12月13日追記:この問題は jiTouch の One-Fix Two-Slide-Down/Up, One-Fix-Press Two-Slide-Down/Up ジェスチャーを使ったとき起きることが分かった。[jiTouch のサポートページ(http://www.jitouch.com/support/)に問題が起きたときの対処法がいくつか書いてあるが、根本的な解決策は今のところないため、これらのジェスチャーを使わないほうがよさそうだ。(追記ここまで)
Safari や Xcode の画面で、左右スワイプして戻る/進むと戻りかけのまま画面が固まってスクロールを受け付けなくなる問題が Mavericks でときどき起きていた。体感では10〜20回に1回の割合。さっき Yosemite にアップグレードしたら百発百中で発生するようになったので Apple の品質管理も地に落ちたもんだと思っていたが、あんまり騒いでる人がいないので偶発的なバグかもしれないと思った。で色々試したら直った。以下手順。
- システム環境設定の「トラックパッド」を開く
- 「スクロールとズーム」タブで「スクロールの方向:ナチュラル」をオフ
- 「その他のジェスチャ」タブで全部の項目をオフ
- スワイプを試してみてうまく動くのを確認し、オフにした項目をオン
元々オフになっている項目があったらオンにしてからオフにするとうまくいくかもしれない。試してないが。
補足、先に試して効果がなかったこと:
- PRAM リセット
- 「ページ間をスワイプ」の設定だけ切り替え/オンオフ
Twitter の画像 URL に :orig をつけると元画像が取得できる(できない場合もある)
Twitter にアップロードされた画像は、ある程度の大きさを超えると自動的に縮小される。しかし画像の URL に :orig
をつけて https://pbs.twimg.com/media/XXX.jpg:orig
にすると元の画像を取得することができる。ただし元画像があまりに大きいと :orig
をつけても縮小された画像が返ってくる。
元画像を取得するには
タイムラインに表示された画像を右クリックして「イメージを新規タブで開く」を選ぶ。ブラウザによってはメニュー名が異なる(「新しいタブで画像を開く」など)。
新しいタブで開いた画像の URL は https://pbs.twimg.com/media/XXX.jpg:large
という形式になっている。 :large
の部分を :orig
に変えて開き直す(:large
がついていない場合は単に :orig
を付け足す)。これで元画像が取得できる。
元画像が取得できる条件
画像の横幅が一定の大きさ以下なら元画像が取得できる。横幅が上限よりも大きくなると上限値まで縮小される。上限は URL 末尾のオプションの有無で変わってくる。
2015年10月10日追記: 最近 :orig
のサイズの上限が変更されたようだ。Twitterの画像の:origで投稿時原寸の画像が降ってくるお話 - neotaso’s blogによれば :orig
をつけることで6400×3840ピクセルの画像も原寸で表示されるとのこと。
URL 末尾のオプション | 横幅の上限 |
---|---|
なし | 横600ピクセルまで |
:large |
横1024ピクセルまで |
:orig |
|
縦幅にも上限がある。横幅は上限に収まるが極端に縦長な画像の場合、縦の上限値まで縮小される。
URL 末尾のオプション | 縦幅の上限 |
---|---|
なし | 縦1200ピクセルまで |
:large |
縦2048ピクセルまで |
:orig |
|
GitHub 風の絵文字の名前で絵文字入力できる SKK 辞書つくった
GitHub Markdown では :+1:
で👍を出すとか :smile:
が😄になるとかそういうことができる。SKK でも簡単に絵文字を入力したかったので絵文字辞書を作った:
https://github.com/uasi/skk-emoji-jisyo
▽モードに入って smile と入力すると😄を出せる。
その他に使える絵文字は Emoji cheat sheet を参照のこと。ただし Unicode に収録されていない絵文字は出ない。辞書に入ってるのは870文字。
辞書はこれでダウンロードできる:
curl -O https://raw.githubusercontent.com/uasi/skk-emoji-jisyo/master/SKK-JISYO.emoji.utf8
AquaSKK 向けのインストール方法は README に書いた。他はよろしくやってほしい。
ところで Mac で Ctrl+Cmd+Space を押すと絵文字入力パレットが出てこれはこれで便利。使うとよい。
😊😊😊
PS: emot gem 使うと名前と絵文字の Map が取れて便利。
Cintiq 13HD に最初から貼ってある液晶保護フィルムの交換についてサポートに聞いた
最近の Cintiq 13HD には最初から液晶保護フィルムが貼ってある(2013年秋ごろかららしい)。これに傷がついたらどうすればいいか、自分で交換できるのか、というか剥がせないっぽいけど上から他社の液晶保護フィルムを貼っていいのか、ワコムのサポートにメールで問い合わせてみた。
ワコム 液晶ペンタブレット 13.3フルHD液晶 Cintiq 13HD DTK-1300/K1 【新型番】2015年1月モデル
- 出版社/メーカー: ワコム
- 発売日: 2015/01/23
- メディア: Personal Computers
- この商品を含むブログを見る
質問と回答
Q 液晶保護フィルムは自分で交換できるか?
A ユーザーが交換することはできない。
Q フィルムに傷がついたらどうするか?
A ワコムの修理センターに送付して修理対応。費用はその都度見積り。
Q 他社製の液晶保護フィルムを上から貼ってもいいか?
A 最初から貼ってあるフィルムは見やすさや書き心地を追求してある。上から他社製のフィルムを貼るとそれが損われることがある。そのため重ね貼りはおすすめしない。ただ、傷が気になるようなら他社製のフィルムを貼ることを検討してほしい。元々のフィルムは剥がさないほうがいい。
Cintiq は画面より芯のほうが柔らかい素材を使っているが、筆圧が強かったり、ペン先が片減りして尖っていたり、同じ箇所を集中的に描いたりすると傷がつきやすいので気をつけてほしい。
というわけで
修理対応だと面倒なので上から液晶保護フィルムを貼ることにした。買ったのはこれ。アンチグレアで見やすい。色味は多少変わるが気にしていない。表面がさらさらして書きやすい。そんなところ。
フィルム貼りは埃対策のため服を脱いで風呂場で行った。端を折って剥がしやすくしたセロハンテープを用意し、フィルム表面にくっつけて引っ張ったりしながら。知恵と気合いが試される。
13インチのフィルムを気泡なく貼るのはしんどいからしばらく交換したくない。
ミヤビックス OverLay Plus for Cintiq 13HD 低反射タイプ 液晶 保護シート OHDTK1300
- 出版社/メーカー: ミヤビックス
- メディア: エレクトロニクス
- この商品を含むブログを見る
vagrant up すると .dev ローカルドメインを設定してくれる Landrush が便利な話
(2015年3月3日追記: .dev をローカルドメインに使うとゲスト上で gem
コマンドが使えなくなる場合がある。 .test などを使うとよさそう)
Rack の世界には Pow というサーバがあって便利。何が便利かというと、ln -s ~/my-rack-app ~/.pow/my-rack-app
こうやって Rack アプリへのシンボリックリンクを ~/.pow に入れるだけで、ブラウザで http://my-rack-app.dev
にアクセスできるようになって、アクセスしたら自動で Rack サーバを立ち上げてくれる。
自動でローカルドメインをセットアップしてくれるのはすごい便利。 Vagrant でも Landrush というプラグインを使うとそういうことができる。インストールはこう:
vagrant plugin install landrush
Mac だとこれだけでよい。 Linux では設定が必要なので README 読んで。
インストールしたら Vagrantfile に設定を書く。
Vagrant.configure('2') do |c| ... if defined?(Landrush) c.landrush.enabled = true end end
これで vagrant up
すると一緒に DNS サーバが起動する。 myhostname.vagrant.dev
にアクセスするとVMにリダイレクトされる。
Qiita の開発用サーバをローカルで立ち上げるときもこれを使っている。設定はこんな感じ:
Vagrant.configure('2') do |c| ... if defined?(Landrush) c.landrush.enabled = true c.vm.hostname = 'qiita.dev' c.landrush.tld = 'qiita.dev' c.landrush.guest_redirect_dns = false end end
c.landrush.guest_redirect_dns = false
を指定してる理由は忘れた。外すと動かなかった気がする。 c.landrush.tld = 'qiita.dev'
を単純に = 'dev'
にしない理由は Pow と共存させるため。ここに指定した TLD と同名のファイルが /etc/resolver
以下に生成される。その TLD を持つドメインにアクセスしたら、ファイル内で指定された DNS サーバがそれを処理する。という仕組みになっていて Pow は /etc/resolver/dev
を使うので、バッティングを避けている。
これ便利なので使うとよい。