!kiyoka.blog RSSPLAIN

Related pages: !kiyoka.blog.2005_04 !kiyoka.blog.2005_03 !kiyoka.blog.2005_02 !kiyoka.blog.2005_01 !kiyoka.blog.2004_12 !kiyoka.blog.2004_11 !kiyoka.blog.2004_10 !kiyoka.blog.2004_09 !kiyoka.blog.2004_08 !kiyoka.blog.2004_07
5555555111111111101111111111110001111111111112222222222222222222211222222222222222233333333333333333444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
5

kiyoka日記。NendoSekkaの開発や、最近思うことなど

5

最新10件!kiyoka.blog   過去記事一覧!kiyoka.blog.list

5

kiyoka.blog_header 

5

このブログを書いている人: 西山 清香(kiyoka) - twitter: @kiyokaEXT

5

5

 

5

 

1

kiyoka.2015_01_19[Xwindow][RDP] rdesktop経由でリモート接続したWindows日本語IMEを有効・無効制御したい

1

 

1

自分用メモ。

1

環境

1

ハードウェア: PowerBook G4 (日本語キーボードモデル)

1

OS: MacOS X 10.5.8

1

RDPクライアント: rdesktop (MacPortsに入っているもの)

1

接続先Windows: Windows Server 2012 R2 on Amazon EC2

1

 

1

やりたいこと

0

MacOSと同様に、Windowsでも「英数」キーでIMEをOFF / 「かな」キーでIMEをONしたい。

1

 

1

MacOS X上のX windowの設定

1
rdesktopが認識できるキーシンボルを定義する
1
$ vi ~/.Xmodmap
1

 

1
以下の内容にする
1
 keycode 110 = Muhenkan
1
 keycode 112 = Henkan
1

 

1
xmodmapを適用する
1
$ xmodmap ~/.Xmodmap
1

 

0

WindowsのIMEの設定

0

MS-IMEのキーバインドの設定で、「英数」をIME-OFF / 「かな」キーをIME-ONに割り当てる。

0

 

1

参考リンク

1
 OSXのX11で英数キー、かなキーの設定を変更する - HongoWikiEXT
1

 

1

comment please => kiyoka.2015_01_19

1

 

1

 

1

 

1

 

1

 

1

1

 

1

 

2

kiyoka.2015_01_15[Xwindow][RDP] rdesktop経由でリモート接続したWindowsの中でバックスラッシュが打てない

2

 

2

自分用メモ。

2

環境

2

ハードウェア: PowerBook G4 (日本語キーボードモデル)

2

OS: MacOS X 10.5.8

2

RDPクライアント: rdesktop (MacPortsに入っているもの)

2

接続先Windows: Windows Server 2012 R2 on Amazon EC2

2

 

2

現象

2

リモート接続して ¥キーを押しても、Windowsでバックスラッシュが入力できない。バー'|'は入力できる。

2

¥キーを押す度に、rdesktopがワーニングメッセージを出す。

2
$ rdesktop -f xxx.xxx.xxx.xxx
2
Autoselected keyboard map ja
2
WARNING: No translation for (keysym 0xa5, yen)
2
WARNING: No translation for (keysym 0xa5, yen)
2
WARNING: No translation for (keysym 0xa5, yen)
2

 

2

対処方法

2

rdesktopのkeymapsファイルを編集する。

1
$ cd /opt/local/share/rdesktop/keymaps
1
$ sudo vi ja
2

 

2

編集内容

2

以下を削除

2
backslash 0x73
2

以下を追加

2
backslash 0x7d
2
yen 0x7d
2

 

2

参考リンク

2
 UbuntuPC/rdesktop(RDP)のかな入力が不正 - PelicanWikiEXT
2

 

2

comment please => kiyoka.2015_01_15

2

 

2

2

 

2

 

3

kiyoka.2014_10_08[ssh][X] XQuartzが固まるのはX11Forwardingのタイムアウト設定のせいだった

3

 

3

MacOS XのXQuartzEXTのX11プロトコル転送を使っていたら、とちゅうでよくsshが切れていた。

3

ずっと原因がわからなかったが、どうやらこれが原因だった。

3

 

3

X11 Display Forwarding Fails After Some TimeRandomnessEXT

3

 

3

MacOS X側(XQuartz側)の /etc/ssh_config にこれを定義して ssh -X [ホスト] で繋げばOK。

3
ForwardX11Timeout 596h
3

 

3

最近のopensshだと、デフォルトは20分くらいになっているそうだ。

3

なんとも単純だけど、今季最大の収穫だなのでメモ。

3

 

3

comment please => kiyoka.2014_10_08

3

3

 

3

 

4

kiyoka.2014_09_03[LLVM][実験] LLVMが楽しい

4
 LLVM-Logo-Derivative-2
4

 

4

LLVMが普及しつつあるけど実際どうなのか

4

ふと思いついてLLVMについて調べ始めた。

4

世間ではGoogle ChromeのPNaCLとかemscriptenやasm.jsが実用的に使われる気配が見えてきた。

4

AppleのMacOS XやFreeBSDのLLVMへの傾倒を見ると、そろそろどんなものか知りたくなってきた。

4

なぜか昔から自分はCross Platformの話題が好きなようで、i386で動くLinuxのエミュレーターをJavaで書いたこともある。(完全に黒歴史…)

4

 

4

LLVM-IR

4

Cross Platformerとしての興味の対象はLLVM-IREXTなので、まずはここから。

4

LLVM-IRの言語仕様を調べたりclangの出力するLLVM-IRのコードを眺めてみたりした。

4

clangの最適化オプションを -O0 から -O3 にしてどれくらい最適化されるのかを眺めたり。

4

LLVM-IRの抽象度は非常に高く読みやすく(読むものでは無いだろが)Cross Platformな話題が好きな自分にはかなり楽しそう。

4

挙句の果てには、LLVM-IRのコードをEmacsLispで動かせないかと実験をしてみたりした。

4

 

4

LLVM-IRをEmacsLispに翻訳

4

可能性を探るためにちょっとやってみたのだが、LLVM-IRのインタプリタlliコマンド の 約1000倍の実行時間がかかることがわかった。

4

ということでこれで思考実験は終わり。

4

 

4

このようなCプログラムをclangでコンパイルし、LLVM-IRを翻訳したEmacsLispで動かしてみた。

4
#include <stdio.h>
4
4
int main(void)
4
{
4
  int total = 0;
4
  volatile int i;
4
  for( i = 0 ; i < (1000000 * 1000) ; i++ ) {
4
    total += i+1;
4
  }
4
  printf( "total = %d\n", total );
4
  return 0;
4
}
4

 

4

"clang -O0 -S -emit-llvm loop.c" で出力したLLVM-IRコードもあわせて見るにはこちら。

4
 simple loop program.EXT
4

 

4

つぎに愚直にEmacsLispに翻訳してみたのが loop1.el 

4

手でちょっとだけ最適化してみたのが loop2.el 

4
 Translate to Elisp from LLVM-IR codeEXT
4

 

4

LLVM-IRをSchemeに翻訳

4

愚直にSchemeに翻訳してGaucheで動かしてみたのがこちら。

4

lliの100倍の時間がかかる。しかしGaucheは速い。

4
 Translate to Scheme from LLVM-IR codeEXT
4

 

4

cmigemoをEmacsLispで走らせられないか(妄想)

4

cmigemoを1000倍非力なCPUで動かすとどれくらい使えないかを測ってみた。

4

cmigemoの検索クエリから正規表現への展開は1000回実行しても100ms程度で、実用的な範囲。

4

しかし、mcigemoが辞書をロードする時間は1000回実行すると3分もかかる。これは実用にならない。

4

 

4

っと、ここで夢から覚めて我に返った(←イマココ)

4

いやー妄想って楽しいもんです。

4

 

4

comment please => kiyoka.2014_09_03

4

4

 

4

 

5

kiyoka.2014_07_16[Sekka] sekka.elからpure emacsでhttp通信しようするも断念

5
 iStock_000016378483XSmall
5

Emacsも年々進化していることだし、もうそろそろcurlコマンドを使わなくてもEmacsだけでHTTP通信できるのでは?と思ってチャレンジしてみた。

5

今回はあきらめたのだが、理由を忘れそうなのでここにメモしておく。

5

gibthubのSekka作業ブランチは "http_pure_elisp" 。

5
  https://github.com/kiyoka/sekka/tree/http_pure_elisp
5

 

5

url.elのリクエストが不正?な問題

5

Emacs-24に入っている url.elを使ってsekka-serverにアクセスするも、webrickが400 Bad Requestを返す。

5

url-retrieve-synchronously関数の返却バッファには、200 OKのレスポンスの後ろに、400 Bad Requestのレスポンスがくっついてくるので原因がよくわからない。

5

curlコマンドからWebrickにリクエストした時は発生しないので、url.elのリクエストがRFCに準拠していないのか、Webrickの潜在バグを突いているのか…

5

 

5

url.elからのリクエスト中にEmacsのキーイベントが消費される問題

5

url-retrieve-synchronously関数を実行している間にCtrl-jを押しても効かない。

5

キーイベントがどこかで消費されているのかもしれない。

5

curlコマンドをプロセス起動した場合にはそのような現象は発生しないので、url.elの作りの問題なのかもしれない。

5

url*.elで "discard" や "event"  などで検索したがあやしい処理は見つからず…

5

 

5

Webrickの代替が見つからない問題

5

Webrickの代わりに別のRackドライバを探したが、thinくらいしか見つからなかった。

5

thinを使ってみるも、Segmentation Faultで動かず断念。

5

 

5

こんな感じで、あまり時間をかけていないが、一旦断念。

5

また一年後くらいに再チャレンジするかも。

5

ただ、curlが非常に安定していることもあって、EmacsからHTTPリクエストする場合はcurlがデファクトスタンダードになっているようだ。

5

いっそEmacs本家にcurlをリンクしてくれたりいいのにと思うんだけどなぁ。

5

 

5

comment please => kiyoka.2014_07_16

5

5

 

5

 

5

kiyoka.2014_03_15[PasteHub] PasteHub.netは「コピペをいろんなWebサービスのハブにする」

5
 iStock_000019296334XSmall
5

PasteHub.netの大改造中。

5

 

5

コンセプト

5

コンセプトは「コピペをいろんなWebサービスのハブにする」にしようかと考えている。

5

もう、サーバーサイドのコードはgitのmasterからきれいに削除し、Dropbox必須とした。

5

おかげでクライアント側のコードも半分以上は不要となった。

5

それでも「コピペを同期する」という本来の機能の利便性と安定性が上がった。

5

 

5

大改造のきっかけ

5

きっかけは自分がスマートフォン(iPod touchなんだけど)を買っていろんなアプリが動くようになったことだろう。

5

 

5

今迄使っていたiPod touchはとても古く、iOS 4.2までしかインストールできなかった。なにせ2014年におけるiOS 4.2というのは、とんでもない時代遅れのシロモノなのだ。

5

どんなアプリ作者もiOS 6.0以上で動くアプリしか作らない(当然か…)。iOS 4.2ではTwitterクライアントはなぜか起動せず、Feedly、Safari to go 、Kindle、Evernoteは非対応だ。

5

 

5

それが一変した。

5

最新のiPod touchを買ってiOS 7.xが使えるようになり、EvernoteやTwitterクライアント、Feedly、Safari to go、Kindleが動くようになった。

5

今までスマートフォンのサービスがここまで便利になっているとは知らずに来たもんだから、その進化には正直たまげた。

5

EvernoteもブラウザベースのWebサービスとして使っていると、それほど便利さは実感できない、なので使う意味はほとんど無い。おまけに古いiPod touchにはカメラさえ付いていないので、写真でメモを取るということもできなかった。それはEvernoteと言えるのか?…

5

 

5

時代の流れとDropboxの普及

5

2012年に作り始めたPasteHubというプログラムは、当初、コピペ情報を仲介するためのサーバーサイドを時前で持っていた。

5

2014年の今ではDropboxが事実上の標準となり、使っていない人はいないというところまで来た。(Google DriveとかOneDriveも含めたクラウドストレージというくくりで見ると、ほぼ100%だろう)

5

そんな背景もあり、Dropboxに完全依存することに決めた。

5

 

5

というわけで、ぼちぼち使えるプログラムとして生まれ変わる最中です。応援よろしく。

5
 kiyoka/pastehub · GitHubEXT
5

 

5

comment please => kiyoka.2014_03_15

5

5

 

5

 

5

kiyoka.2014_02_25[PasteHub] 新PasteHub.netは何を優先するか

5
 iStock_000019296334XSmall
5

自分用メモ。

5
インストールが簡単(設定なし)
5
Mac/Windowsはインストーラーにてインストールするだけ。
5
Linuxはrpm/debをインストールするだけ。
5
Emacsはmelpaからelispをインストールするだけ。
5

※ 但し、Dropbox以外のストレージサービスを使っている場合は、設定値変更が必要。

5

 

5

最後のEmacsクライアントは実装がけっこう大変そうな気がするが、やってやれないことは無い。

5

使うのが簡単なものほど作るのは大変というのはよくある話。

5

実装が多くなるという意味で当然といえば当然なのだが…

5

 

5

comment please => kiyoka.2014_02_25

5

5

 

5

 

5

kiyoka.2014_02_22[PasteHub] 大きなピボット

5
 iStock_000019296334XSmall
5

PasteHub.netというコピーペーストを複数のマシンで共有するサービスを作った。

5

しかし、ここへきてPasteHub.netの「コレジャナイ感」が大きくなってきた。

5

自分が欲しいのは、複数のOS、複数のマシンでコピーペーストが同期されるシステムだ。

5

PasteHub.netではそれだけのために、次のような手順を踏む必要があった。

5
サイトを用意
5
ユーザーアカウントを登録
5
アプリケーションをインストール
5

 

5

これはなかなか敷居が高い。

5

サービスを提供する側にとっても、ユーザーにとっても。

5

実際にこの敷居の高さのせいか、ツールを使う人は皆無に近かった。

5

 

5

そんなわけで、しきり直しをします。

5

 

5

PasteHub.netを使うには、

5
アプリケーションをインストール
5

だけでいけるようにしたい。

5

 

5

自分でサイトを構築・維持するのではなく、Dropboxのような共有ストレージサービスを利用しようと考えている。

5

Dropboxのような共有ストレージは既に誰もが使っているだろう。

5

有名なドリルの喩えでいうと、「ドリルを買う理由は"穴"が必要だからである。ドリルが無くても、穴が得られれば良いのである。」ということだ。

5

自分も"穴"だけが欲しいので、ここいらでピボット(方針変更)しよう思う。

5

 

5

共有ストレージも、同期のタイムラグの問題などいろいろ課題は出るだろうが、それを解決できれば簡単に使えるものになるだろう。

5

仕組みが単純になる分、Dropboxと連携するIFTTTなどのサービスとも連携できるなど、価値も増える。

5

というわけで、いろいろ実験しながら可能性を探っていきます。

5

 

5

comment please => kiyoka.2014_02_22

5

5

 

5

 

5

kiyoka.2014_02_12[Ruby][Nendo] CRuby 2.1.0の非互換性-Symbolクラスにモンキーパッチできなくなった件

5
 iStock_000019986662XSmall
5

忘れないうちにNendoをCRuby 2.1.0で動かすのに苦労した話を書いておこう。

5

多分、SymbolにモンキーパッチしているプログラムはCRuby 2.1.0で動かなくなるので、その時に誰かの役に立つかもしれない。

5

 

5

CRuby 2.1.0に持ち込まれた非互換

5

 

5

.以下は、CRuby 2.0.0で動いて、CRuby 2.1.0で動かないコード

5
# Symbolへのモンキーパッチ
5
class Symbol
5
  def set_lineno(value)
5
    @lineno = value
5
  end
5
  def lineno
5
    return @lineno
5
  end
5
end
5
5
sym1 = :a
5
sym1.set_lineno( 10 )
5
p sym1.lineno
5
5
sym2 = :a
5
sym2.set_lineno( 20 )
5
p sym2.lineno
5

 

5
結果(ruby-2.0.0-p353)
5
$ ruby symbol.rb
5
10
5
20
5

 

5
結果(ruby-2.1.0)
5
$ ruby symbol.rb 
5
symbol.rb:5:in `set_lineno': can't modify frozen Symbol (RuntimeError)
5
        from symbol.rb:13:in `<main>'
5

 

5

何がしたかったのか

5

NendoはRubyで実装したScheme処理系(サブセット)である。

5

Nendo 0.6.6ではSchemeのソースコードをパースしたツリーの内部で、SchemeのシンボルはRubyのSymbol型に変換して保持していた。

5

そうするメリットは絶大で、Schemeの処理系の中で:quoteのようなRubyのSymbolと == 演算子で比較できる。

5

また、同時にそのシンボルがSchemeプログラムのソースコードのどの位置(ファイル名、行番号)に出現したかを保持したい。

5

つまり、同じSymbol型でも、位置情報を持っているものと持っていないものがあり、かつ、同じSymbol型として操作できる。

5

Ruby 2.0.0までは、乱暴だが上のようなモンキーパッチを使うことで、このトリックを実現していた。

5

 

5

Ruby 2.1.0

5

Ruby 2.1.0では上記のようなモンキーパッチは許されなくなった。

5

最適化のためか、はたまた安全性のためか、その両方かもしれないが、そのような挙動になった。

5

puppetも同様の問題でひっかかってpuppet側で対応したようだ。

5
 (maint) Fix can't modify frozen Symbol error on Ruby 2.1.0 by jeffmccune · Pull Request #2184 · puppetlabs/puppet · GitHubEXT
5

 

5

Nendo 0.6.8

5

Nendoも同様に0.6.8で地道に対応した。

5

Symbolへのモンキーパッチをやめて、ParsedSymbolという型を新規に作り、RubyのビルトインSymbolとの比較箇所などを地道に修正していった。

5

影響範囲は大きく、なかなか骨の折れる作業だった。

5

 

5

感想

5

本来はモンキーパッチは良くないコーディングだとわかっていたが、このような逃げを許してくれるのがRubyの良いところかと思っていた。

5

多分、モンキーパッチを許さないことで最適化しやすくなり実行効率は高まりそうな気がするので、CRubyの進化として良いことだろう。

5

ただ、ちょっと固くるしいなぁと思わなくもない。

5

言語が洗練するとはこういうことなのかなぁ。

5

 

5

追記 ( 2/23 )

5

SymbolもGCできるようにする改善だったようだ。それなら従おう。

5
 Feature #8906: Freeze Symbols - ruby-trunk - Ruby Issue Tracking SystemEXT
5
  Now, Integer and Float objects are frozen objects.
5
  How about to freeze Symbol objects, too?
5
  I think Symbol is friend of Integer.
5

...

5
  Background of this proposal:
5
  
5
  Now, I'm working on "GC-able Symbols" feature.
5
  Freezing symbols make this feature easier.
5
  
5
  for example:
5
  (1) set an instance variable @iv for symbol s
5
  (2) collect s
5
  (3) generate s
5
  (4) what value of @iv for s returns?
5

 

5

comment please => kiyoka.2014_02_12

5

5

 

5

 

5

kiyoka.2014_01_26[Sekka] Sekka 1.5.0 リリース

5

SKKライクな日本語入力メソッド Sekka 1.5.0をリリースしました。(リリースノート Sekka.ReleaseNote)

5
 iStock_000016378483XSmall
5

 

5

ついにWindowsでも動くようになりました。

5

Cygwinは不要で、RubyInstaller.org 1.9.3 上で動きます。

5

 

5

comment please => kiyoka.2014_01_26

5