トップ 追記

Route 477

過去の日記


2015-06-30

[linux] fcitx-mozcで入力が全角になる現象への対処

Ubuntu上では日本語入力にfcitx-mozcを使っているのだが、日本語モードで「Foobar」みたいに大文字から始まる単語を入力してEnterを押すと「Foobar」のように全角になってしまう現象が発生していた。

アドバイスをいただいて確認してみたところ、fcitxのプラグインで全角入力を補助するものがあることが分かった。
状態パネルの右から2番目に月のマークのアイコンがあるのだが、これが満月だとプラグインONで、三日月だとプラグインOFFらしい。

状態パネルの右から2番目にある三日月アイコンは何?

[https://wiki.ubuntulinux.jp/UbuntuTips/JapaneseEnvironment/Fcitxより引用]

ということで、三日月にすることで対処できた。

[ruby] RubyからSwaggerを使う方法について調べた

仕事で必要になりそうなので、Swagger (http://swagger.io/ ) をちょっと触ってみた。

SwaggerはYAMLで書かれたAPI定義をもとに、APIサーバやそのクライアントを自動生成してくれるソフトウェアである。READMEを見ると、けっこういろいろな言語に対応しているようだ。

  • サーバ側:node.js, scalatra, jax-rs, spring-mvc
    • Ruby対応については後述
  • クライアント側:Java, Scala, C#, Perl, Python, PHP, Ruby, Android, Swift, etc.

またAPIサーバだけでなく、APIドキュメントも同時に生成してくれる (デモ http://petstore.swagger.io/ )。そのためAPIサーバを誰かに作ってもらうとき、Swaggerを使う取り決めにしておけば、必ず最低限のドキュメントが存在することが保証されるというわけ。

今回はSwaggerをRubyから使う場合(特にサーバ側をRubyで書きたい場合)にどんなライブラリがあるかを調べた。

リンク

  • http://swagger.io/
    公式サイト

  • http://editor.swagger.io/
    APIのWebエディタ。左にYAMLを書くと右にプレビューが出る。
    いくつかのサンプルを見ることもできる。

  • Swagger Codegen
    Swaggerのコードジェネレータ部分。いろんな言語に対応している。ジェネレータ本体はJavaで書かれている。
    これをインストールしなくても、上のWebエディタからジェネレートすることもできるようだ。

API定義の作成

とりあえず動かすだけなら、Webエディタのサンプルを使うのが簡単。
例:http://editor.swagger.io/ を開き、File→Open Example→minimum.yamlを選択

メニューのGenerate ClientからSwagger JSONを選ぶとAPI定義をJSONで取得できる(ライブラリによってYAMLではなくJSONしか受け付けないものがある)。

クライアント側

WebエディタのメニューのGenerate ClientからRubyを選ぶと、Ruby用のクライアントコードがzipで落ちてくる。どんなものなのかは未調査。

サーバ側

最新のSwagger Codegen (2.1.0)はまだRubyサーバの生成に対応していないようなので、別の方法を探してみる。
調べた範囲では3つほどライブラリがあった。

  • swagger_engine

    • Rails用
    • API定義ファイル(JSON)からAPIドキュメントを表示する部分をRails Engineとして提供してくれる
    • API自体は普通にRailsでつくる
  • swagger-blocks

    • チュートリアルはRails用だが、Sinatra等も使えると書いてある
    • API定義をYAML/JSONではなく、独自のRuby DSLで行う (そこからJSONを生成することは可能)
    • これもAPI自体は普通にRails等でつくる
  • grape-swagger-ui

grape-swagger-uiはREADMEを見る限りではまだSwagger2に対応してなさそうだったので、残りの2つを比較する。

  • swagger_engineはAPI定義をYAML/JSONで書く。Rails専用
  • swagger-blocksはAPI定義をRuby DSLで書く。Rails以外も対応

ということで、Railsを使う予定であればswagger_engine、Railsが使えない or YAMLを書きたくない場合はswagger-blocksかな。


2015-05-27

[mac][types] MacでSML#をコンパイルした

前にチャレンジしたときはうまく行かなくて諦めたのだけど、こちらの手順を参考にしたらコンパイルできた。ありがとうございます。

以下は手順。

32bit版のgmpを入れる

既にgmpが入っていたのでいったん削除した。

$ brew remove gmp
$ brew install gmp --32-bit

LLVMのコンパイル

今回は/usrに入れるのではなく、SML#専用にコンパイルすることにした。

$ mkdir ~/bin/smlshp
$ cd ~/bin/smlshp
$ wget http://llvm.org/releases/3.4.2/llvm-3.4.2.src.tar.gz
$ tar xvf llvm-3.4.2.src.tar.gz
$ cd llvm-3.4.2.src
$ ./configure --build=i686-mac-darwin CC='gcc -m32' CXX='g++ -m32' --prefix=/Users/yhara/bin/smlshp/llvm34 && make && make install

SML#のコンパイル

$ cd ~/bin/smlshp
$ wget http://www.pllab.riec.tohoku.ac.jp/smlsharp/download/smlsharp-2.0.0.tar.gz
$ tar xvf smlsharp-2.0.0.tar.gz
$ cd smlsharp-2.0.0
$ ./configure --with-llvm=/Users/yhara/bin/smlshp/llvm34/      \
               --prefix=/Users/yhara/bin/smlshp/smlsharp/ \
               LDFLAGS='-L/usr/local/Cellar/gmp/6.0.0a/lib'     \
              CPPFLAGS='-I/usr/local/Cellar/gmp/6.0.0a/include' \
                    CC='gcc -m32'                               \
                   CXX='g++ -m32'
$ make && make install

動作確認

$ cd ~/bin/smlshp/smlsharp
$ ./bin/smlsharp
SML# 2.0.0 (2014-04-04 11:47:08 JST) for i686-apple-darwin13.4.0 with LLVM 3.4
# 1 + 1;
val it = 2 : int
# 

うまく動いたようだ。


2015-04-09

[english] NHKのラジオ英語講座を、インターネットで聞く

最近は英語学習について特に何もしてないので、NHKのラジオ英語講座でも聞こうかなぁと思っていたのだけど、そういえば今月から新年度で、講座も新クールになることを思い出した。

最近はラジオでの放送から一週間遅れでストリーミング放送が提供されており、「NHK マイ語学」への会員登録(無料)は必要だけど、好きな時間にパソコン等で聞けるらしい。またテキストも電子書籍版が売られており、Kindle for Macとかで読むことができる。便利。

AmazonのNHKテキストコーナーは2016年分の予約販売が先頭に来ていて、何がなんだかわからなかったので、今月分を以下にアフィリエイトしておく。
(難易度についてはこのページの下の方を参照のこと)

難易度A1〜A2

A1: 「日常生活での基本的な表現を理解し、ごく簡単なやりとりができる」
A2: 「日常生活での身近なことがらについて、簡単なやりとりができる」

NHKラジオ 基礎英語1 2015年 4月号 [雑誌] NHKテキスト(NHK出版 日本放送協会)
NHKラジオ 基礎英語2 2015年 4月号 [雑誌] NHKテキスト(NHK出版 日本放送協会)
NHKラジオ 基礎英語3 2015年 4月号 [雑誌] NHKテキスト(NHK出版 日本放送協会)
NHKラジオ エンジョイ・シンプル・イングリッシュ 2015年 4月号 [雑誌] NHKテキスト(NHK出版 日本放送協会)
NHKラジオ 英会話タイムトライアル 2015年 4月号 [雑誌] NHKテキスト(NHK出版 日本放送協会)

難易度B1

B1: 「社会生活での身近な話題について理解し、自分の意思とその理由を簡単に説明できる」

NHKラジオ ラジオ英会話 2015年 4月号 [雑誌] NHKテキスト(NHK出版 日本放送協会)
NHKラジオ 入門ビジネス英語 2015年 4月号 [雑誌] NHKテキスト(NHK出版 日本放送協会)

難易度B2

B2: 「社会生活での幅広い話題について自然に会話ができ、明確かつ詳細に自分の意見を表現できる」

NHKラジオ 攻略!英語リスニング 2015年 4月号 [雑誌] NHKテキスト(NHK出版 日本放送協会)

難易度C1

C1: 「広範で複雑な話題を理解して、目的に合った適切な言葉を使い、論理的な主張や議論を組み立てることができる」

NHKラジオ 実践ビジネス英語 2015年 4月号 [雑誌] NHKテキスト(NHK出版 日本放送協会)

(難易度設定なし)

NHKラジオ 英語で読む村上春樹 2015年 4月号 [雑誌] NHKテキスト(NHK出版 日本放送協会)

内容について

各講座の詳しい内容については、英語のテレビ番組・ラジオ番組 | NHKゴガク を参照。
すごい適当だけど、選ぶとしたら例えばこんな感じかな?


2015-02-20

[ruby][memo] Sinatraでundefined method join for stringが出る

ちょっとSinatraでアプリを書いているのだけど、undefined methodjoin' for String`みたいなエラーでちょっとはまってしまった。

Slim

原因の一つ目は「テンプレートエンジンにSlimを使っていて」「partialをレンダリングしようとした(?)」ときに出るもので、slimとtempleを最新版(slim 3.0.2, temple 0.7.5)に上げたら直った。

Sinatra

で、実は同じエラーが出るケースがSinatra本体にもある。こちらは「例外が発生し、show_exceptionで例外ページを表示しようとしたとき」に起こる。

とりあえずこのコミットで治るらしいので、Gemfileに以下のように書いて凌ぐことにした。

gem 'sinatra', git: 'https://github.com/sinatra/sinatra.git',
               ref: '5f6168bfc92280892e819df524d4508cf9032f6d'
               # for https://github.com/sinatra/sinatra/issues/961
本日のツッコミ(全1件) [ツッコミを入れる]

dyama [sinatraの件、同じ現象ではまっていました。ありがとうございます、解決しました。]


2015-01-06

[github] GitHub Wikiを全画面表示する

GitHub Wikiは便利だけど、ページ幅がけっこう狭いので、表とか入れるとちょっと見づらかったりする。
これをChrome + CSSでなんとかする方法。

  1. Stylishという拡張を入れる
  2. Github - Remove wiki page list and whitespaceを追加
  3. GitHub Wideを追加

これでGitHubの表示幅が広くなって、かつサイドバーも無くなるのでWikiコンテンツが画面いっぱいに表示されるようになった。

ただサイドバー無くすのはちょっとやりすぎで、ページ間移動がめんどい。クリックでトグルできたりする方がほんとは良い。
まあ印刷時だけ有効化するとかが良いかも。


過去の日記