サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「#文学」
nyaruru.hatenablog.com
1 年遅れぐらいになりますが,OSS Mozc 関係で 2015 年にやったことのまとめです. 空き時間を利用したプロダクトチーム外からのコミットということで,新規機能に関しては引き続き何も行っていません.前年と同じく OSS プロジェクトとしての環境整備と技術的負債の解消に注力した年でした. 以下が主な活動内容です. Google Code (Subversion) から GitHub (git) への移行を完了 過去のコミット履歴を可能な限り維持 ドキュメントを Markdown で書き直す Travis CI および AppVeyor を利用し,サポートしている全プラットフォームについて CI (Continuous Integration) を実現 Android Linux desktop NaCl Windows macOS コードの簡略化 プロダクションに使われなかった実験的
Windows 10 Preview ビルド 14328 でお試しいただける日本語 IME の変更点について – Windows & Devices 開発統括部 入力履歴の管理が便利になりました。人に見られたくない履歴が候補リストに表示されて困った経験はありませんか? プライベートモード(仮称)を使えば、その間に蓄積された入力履歴はモードの終了時には削除され、その後意図しない場面で表示されてしまうことを防ぐことができます。 プライベートモード(仮称)はIME のアイコンをクリックして表示されるメニューから「プライベートモード」を選択することでオン・オフすることができます。Edge や Internet Explorer で InPrivate ブラウズ機能をお使いの場合は、本機能が自動的に オン・オフ されます。 プライベートモード(仮称)で蓄積された入力履歴はプライベートモードの間だけ有
業務外にパッチを書いたりしている OSS プロジェクト,だいぶやりたいことが溜まっているので,優先順位をつける意味でもまとめてみた. 業務と基本無関係なので,代わりにやっていただくのは大歓迎.なので以下は Wish List ということにしておきたい. OSS Mozc 関係 [Mozc] Windows 版向けのインストーラーをビルドできるようにする 2013 年に Windows 版のコードを概ねオープンソース化したときに,面倒で後回しにしたのがこの部分. プロダクト版の WiX スクリプトは実際公開済みではあるのだけど,自動アップデート関係の設定等もここで行っているため OSS 版のインストーラにそのまま転用できなくなっている. 技術的な障害は何もなく,OSS 版向きでない処理を取り除くだけ,なんだけどずるずるとはや 2 年半ぐらい. やること. OSS Mozc 向けに,余計なもの
DeepDream を動かしてみようと思ったら 9 割ぐらい IPython Notebook と必要なライブラリの環境整備だったのでそのまとめ. 作業日 2015 年 7 月 4 日 作業前の筆者の状況及びそこから導かれる想定読者 IPython Notebook を使ったことがない.環境構築もしたことがない. Mathematica は使ったことがあるかもしれない. docker コマンドが動く Linux Desktop 環境を,実機,または VM 内 (Windows にインストールした VMWare 等) にもっている. Deep Neural Network と呼ばれる技術について,特に知らないし,特に自分で手を動かして何かしたこもなく,業務でも当面使う予定はない. インターネットからの数 GB 程度のデータダウンロードが可能である. 目標 docker コマンドが動く環境なら
いつもどおりコードが公開されている範囲で. 実は 2013 年にやっていたこと OSS Mozc のアップデートタイミングの関係上,2013年やったこと - Mozc 編 - NyaRuRuが地球にいたころ に載っていなかった内容です.概ね 2013 年末休暇シーズンに余暇としてやっていました. Windows 版での候補ウィンドウのカラー絵文字対応 Mozc チームを離れる直前,休暇シーズンということもあって久しぶりに自分の書きたいコードでも書くかと言うことでやってみたのがこのカラー絵文字対応です. 作業のほとんどは mozc_renderer (独立したプロセスとして動く,候補ウィンドウ表示用プロセス) 内の文字表示処理を DirectWrite に対応させることでした.カラー絵文字専用に追加したコードは数行です. r192 にてリリース. 変更の大半は renderer/win32/
Chromium 関係,コードはあまり書いていない一年でした.数字としてはコミット 17 回,コードレビュー 13 回となります.一方 Issue Tracker 上での活動はまあそれなりにで,Issue 登録 19 回,コメントを書き込んだり状態を変更したりといった Issue の数は 173 件となりました. 自分でやったこと Windows 版 Chromium の Aura 移行完了後不要になった IME 関連コードの削除 Issue 319122 - chromium - Remove TSFEventRouter[Observer], InputMethodTSF, and related unused code. - An open-source project to help move the web forward. - Google Project Hosting 20
2013年やったこと - Chromium 編,いつもどおりコードが公開されている範囲で. HTML5 Forms の type 指定と InputScope の対応作業 Issue 13768 - chromium - InputScope support on Windows (a better IME integration) - An open-source project to help move the web forward. - Google Project Hosting HTML5 Forms の type 指定と Windows 環境での InputScope を連携させるという変更です.Windows 8 以降のオンスクリーンキーボードは InputScope でレイアウトを切り替えるため,IME を必要としない言語でも有効なのがポイントです. 変更自体はそれほど難
2013年やったこと - Mozc 編,いつもどおりコードが公開されている範囲で. Mozc IPC の Windows 64-bit 対応 Windows 環境で動く Mozc は名前付きパイプ使ってプロセス間通信を行うのですが,いわゆる "Squatting Attack" 対策として,GetNamedPipeServerProcessId API で接続先のプロセス ID を取得し,さらにそのプロセス ID から GetModuleFileNameExW API で実行ファイル名を取得して検証しています.が,この仕組みが今は動いていても将来的にうまく動かないことがあるかもという問題. このころ mozc_server や mozc_renderer を 64-bit で動かす実験を行っていて気付いたわけですが, 32-bit プロセスから 64-bit プロセスに対して GetMod
プロセス分離型の IME の開発に携わった以上,一度は試してみたいと思っていた奴,の基礎実証実験っぽいのをやってみた.Windows向け IME を (とくに個人規模で) 作っている人にはもしかしたら役に立つかも. テーマ メインテーマは,Windows で IME を実装するとして,バックグラウンドで別 IME を有効化し,その IME に対してクエリを投げ,返ってきた結果を利用するための技術的な枠組みについて.ここではプロセスモデル的に Windows で可能かどうかという点のみを考える. 大まかな流れ 今回試した手法では,Windows 8 で TSF に追加された ITfFnSearchCandidateProvider という仕組みを活用する.このインターフェイスは,複雑なことはできない反面,1) 文字列を投げて文字列のリストが返ってくるというシンプルな仕組みである,2) ステー
最近やっていた仕事について,一通りリリースが終わって誰でも試せる段階になったので書いてみる.Web アプリ開発者の人や,IME 作成者の人には影響があるかも知れない.ただし Windows デスクトップを相手にしていなければ,ここで読むのをやめてもなんら問題はない. 最近 Chromium と Firefox にパッチを書いて,HTML5 Forms の type 指定が InputScope として TSF ベースの IME (いわゆる Text Input Processors; TIP) やソフトウェアキーボードに通知されるようにした.これは,基本的に Windows 8 上での Internet Explorer 10 の動作に合わせたものである.具体的には,以下の環境で,各種ブラウザが InputScope をサポートするようになった. Microsoft Internet Ex
Mozc 1.10.1389.102 が公開されたということやっと書ける感じの 2012年やったこと - Mozc 編 - NyaRuRuが地球にいたころ の続き.2012 年にやっていたことの今回公開分. Support IBus 1.5 Red Hat によって主導され,GNU/Linux 界隈で使われている Input Method Framework であるところの IBus が,メジャーアップデートにあたって設定ファイルの解釈を変えるという決定を下したところ,挙動の変化に気づいたユーザーが IME 側にバグを登録してくることになり,IME 側で設定ファイルを変更することで対処することになったという案件. 平常心平常心と自分に言い聞かせつつ淡々と対処. https://code.google.com/p/mozc/issues/detail?id=159 https://code.
発端 マイクロソフト社がIEの舵取りに迷っている。同社は先週、Windows 8の“Windows ストアアプリ”として動作する「Internet Explorer 10」でFlashコンテンツを表示する際の方針を変更すると発表した。この方針転換が意味することを理解するためには、Windows 8が発売される前までさかのぼる必要がある。 【#モリトーク】第50話:IEのジレンマ - 窓の杜 という記事を読んだのだけど,どうも用語の使い方が危なっかしい.枝葉の部分ならともかく記事の論点に直結する部分だけに余計に気になる.というわけでちょっとだけ書いてみたのが以下. Windows 8 向けブラウザの 3 分類 Windows 8 でウェブブラウザというと,大きく 3 種類に分けられる. いわゆる Windows ストアアプリであって,標準ブラウザコンポーネントを利用するもの いわゆるデスクト
「Matzにっき」より. しかし、「やめなさい」という人が以下のようなことを言うのは「ズルい」と思う。 言語設計のおもしろさは、「言語の設計は、芸術と科学の組み合せである」というところにある。一方では主観的・直感的な判断が必要になる。例えば、言語を使用する開発者にとって、その言語が易しいものなのか、コーディングしやすいのかといったこと。またもう一方では客観的・厳密な判断も必要だ。例えば、その仕様が言語として妥当か、そのコンパイラを実装するうえで妥当かといったことである。 これじゃ、「こんな面白いことはあなたたちにはもったいない」と言ってるようにしか聞こえない(笑)。 ところで、上記の彼に意見については私も同意する。 C#とRubyとどっちのバランスがどうか、という話はしないことにしよう。 多分 Anders 氏の周りには,世界中からここでいうところの「芸術」「科学」両面の色々な意見が集まっ
まとめ Dell の 10 点タッチ外付け 23 インチディスプレイ S2340T は,個人向けサイトにしか載っていないけど,経費購入に必要な領収書も用意してもらえるので必要な人は迷わず買うと良いよ. S2340T Windows 8 に起因するタッチ対応案件は第一弾が一段落したころでしょうか.「Windows 7 のときに済ませた」という人から,「まだ対応していない」,「テストすらしていない」,「積み残しタスクがある」,という方まで,色々いらっしゃることかと思います. そんななか,まだタッチ対応アプリケーションの開発体制を整えていなくて機材を探しているという場合におすすめなのが Dell の 23 インチディスプレイ S2340T.この製品,Full HD (1,920 x 1,080),10 点タッチに対応しつつ,59,980 円という Windows 8 前のタッチ対応外付けディスク
【注意】I'm not a lawyer だよ! This is not legal advice だもんね! Piro さんが長文を書かれていたので一部だけ切り出してつまみ食い.ただし GPL vs BSDL の話ではなくて看板の話. 自分の作った物が誰にどう使われようとも構わない、極端な話、誰かが看板だけ掛け替えた「改良版」を作って商売していようとも全く構わない、という事であれば、パブリックドメインにしたり、あるいはBSDスタイルのライセンスを選択して問題ないでしょう。 自分の作った物が看板を掛け替えただけの「改良版」として勝手に商売に使われるのは我慢ならない、やるならこっちにも分け前をよこせ、それが嫌なら無償で同じ条件でソースも含めて公開しろ、という事であれば、コピーレフトなライセンスを選択した方がいいでしょう。 自分の作った物がアイデアだけ引き継がれるのはいいけど、自分の血と汗と涙
前回に引き続き今度は Chromium 編.chromium.org のアカウントを作ってもらったはいいものの,メールアドレスの 1 文字目を大文字にされて激しく凹むということもあった一年. Windows 8 向け TSF 対応 Chromium を Windows 8 向けに TSF 対応させるというミッション.いやな予感はしていたものの,Mozc の TSF 対応もあるのであまり積極的に手を出せずにいたら,結局ぎりぎりになって火消し案件として振ってきた,という感じの一件. http://code.google.com/p/chromium/issues/detail?id=137627 Windows 8 では IME の TSF 対応が注目されていたりするわけだけど,実は Immersive Mode で動作するブラウザの方も TSF に対応させる必要がある.対応させないと Imm
いままで仕事で書いたコード (Chromium とか Mozc とか) については基本的に言及しないようにしていたんですが,ソースコードが公開されている内容についてはまあいいかということでまとめてみます (もちろんソースコードが公開されていないことについても色々やってますが).とりあえず Mozc 編*1.順序は概ね時系列. Visual C++ 2010 対応 ちまちまとコンパイルエラーに対処.ビルドスクリプトを vcbuild に加えて msbuild にも対応させたぐらい.あとは gyp にも問題を見つけたので一件パッチを upstream. http://code.google.com/p/gyp/issues/detail?id=244 1.3.975.10x にてリリース. SHOW_INFOLIST_IMMEDIATELY compatibility flag Windows
いまの仕事に就いたことで触れることのできた興味深いソフトウェア開発手法のひとつに,成果物に関するものであれば何であれ"ソースコード"のバージョン管理システムに関連づけるというものがある.使用するライブラリは言うに及ばず,ビルドに使用するコンパイラのバージョンまでもを,ソースコードと同列にバージョン管理するわけだ. このような環境で仕事を続けることしばし,ふと気付けば,多くの Linux ディストリビューションで喧伝されるうたい文句,「依存関係を賢く管理し,多数のユーザーによってテストされ,コマンド一発でインストールもアップデートもできる多数の開発ツール!」,というものは酷く色あせて聞こえるようになっていた. むしろ逆だ.ソースコードのバージョン管理システムとは異なるコマンドによってコンパイラやライブラリのバージョンが変化する!? そんなものは悪い冗談にしか聞こえない.そこにはコミットログも
さて、ハードディスクにはキャッシュメモリ (なういハードディスクは32MBものキャッシュメモリがディスクユニット自体に搭載されているようです) が搭載されています。 ストレージの基礎用語: キャッシュメモリとは [Cache Memory] : 富士通 にあるように、キャッシュメモリは読み出しだけでなく書き込みの性能も上げてくれます。つまり、OSから「これ、ディスクにちゃんと書き込んでね」と依頼されたときに、ハードディスクは実際の円盤には書き込まずとも、ハードディスクユニット内のキャッシュメモリに書き込んだら「うん。ちゃんと書いたよ!」とお返事を返せるわけです。 こうやってキャッシュメモリ上に格納されたデータは、後でちゃんと円盤に書き込まれて永続化されるわけですが、それまでの間に不意の電源断 (停電、ブレーカ(NFB,MCB,MCCB)が落ちた、電源ケーブルがひっかかって抜けたった) が起
今回は Windows サービスを作成する上でのセキュリティ上のポイントを軽く紹介する. Windows Vista では,サービスをより安全に実行するために Service Control Manager (SCM) の改善が行われている.ポイントとなるのは,必要特権リストの指定が可能になったこと,および制限された SID を割り当てられるようになったことだ. たとえば,特定ファイルを物理メモリ上に保持し続けるサービスを作りたいとする.この処理をサービスにする必要があるのは,それが特権を必要とするからだ.VirtualLock API でロック可能なメモリ領域は通常 30 ページに制限されており,SetProcessWorkingSetSize API でその制限を拡大するには,SE_INC_BASE_PRIORITY_NAME 特権が必要である.しかし,単純に System アカウント
Windows 8 では,AppContainer と呼ばれる新たな Sandbox メカニズムが導入される.Windows ストアアプリ (旧名: Windows Metro アプリ) や,Immersive モードの Internet Explorer のレンダリングプロセスなどが AppContainer で動作するプロセスの代表格だ.Windows ストアアプリ制作者にとって AppContainer が重要になるのはもちろんのこと,Windows ストアアプリ内で動作する必要のある IME やアクセシビリティ系ツールの制作者も,AppContainer について理解する必要がでてくる. AppContainer プロセスを確認する Process Explorer 15.23 を用いて,AppContainer プロセスの特徴を確認してみよう.以下は Windows 8 付属の「
Google Chrome のデイリーリリースバージョンは,炭鉱にて危険をいち早く察知するカナリアにたとえられ Canary 版と呼ばれている. (炭鉱で戦うものたちの熱い物語については『炭鉱の庭師』を参照されたい) Google Chrome Canary 版は以下のページからインストールできる. https://tools.google.com/dlpage/chromesxs Canary 版と安定版は,インストール先フォルダから使用するプロファイルまで異なる別アプリケーションである (Side-by-side インストールと呼ばれている).両者を同時に起動することももちろん可能だ.また,Canary 版であっても Google Update の対象になることから,一度インストールしてしまえば後は自動で trunk を追いかけてくれる. 実は,Canary 版にはもうひとつ大きな特徴
Windows 7 以降の OS では,SSD 上のボリュームに対してデフラグがスケジューリングされません.これと同様に,ドライブ特性に応じた動作戦略の変更をアプリケーションでも行いたいこともあるでしょう.そのような場合にアプリケーションに組み込めるように,簡単なサンプルコードを書いてみます. 元ネタは, Windows 7 Disk Defragmenter User Interface Overview - The Storage Team at Microsoft - File Cabinet Blog - Site Home - TechNet Blogs で解説されているアルゴリズムです. 以下,物理ドライブ "\\.\PhysicalDrive0" について,"no seek penalty" かどうかと,"nominal media rotation rate" かどうかの取
Metro では,AppContainer という特殊な環境でアプリケーションが実行されます.IME DLL は *1,対象の Metro スタイルアプリケーションプロセスに読み込まれ,AppContainer の管理下で動作することが求められます. 実際,Microsoft は Windows 8 Release Preview の公開に合わせ,Guidelines and checklist for IME development (Metro style apps) というガイドラインの提供を開始しました*2.同ドキュメントには,AppContainer 内で IME の機能を実装する上で,次のようなケースに注意せよとあります. 辞書ファイルの置き場所 インターネットを利用したアップデート 学習機能 プロセス間での(設定や学習)情報の共有 同ドキュメントには,IME の学習機能や,プ
Chromium Sandbox は,乱暴に言えば 対象プロセスの権限や動作をとにかく制限する それだと目的の動作もできなくなることがあるので,本当に必要な処理についてはより強い権限を持ったプロセスで代理処理する という二段構成になっています. 2. の代理処理は,Sandbox 化されたプロセス内での API 呼び出しをフックして行います*1.悪意のあるコードが API フックを回避し,本来のシステムコールに到達した場合,プロセス本来のアクセス権限によるチェックが行われます.このケースまで想定して,前者の「とにかく」のレベルが決まります. 1. の制限は強ければ強いほど良いため,Chromium Sandbox では,先ほど出てきた整合性レベルに加え,プロセスのアクセストークンからの権限削除,Job を利用した制約,デスクトップ分離などさまざまなテクニックが使われています.実際には,アプ
Windows アプリケーションに,統一的な "Protected Mode" (保護モード)の仕様や基準といったものはありません.保護モードと呼ばれている各技術の実装は製品ごとに異なります.A という製品の「保護モード」を有効にした状態で IME が動く(ように見える)からといって,B という製品の「保護モード」を有効にしても同じ IME が動く(ように見える)とは限りません. 例えば,Google Chrome は,ウィンドウ処理を行うブラウザプロセスと,HTML のレンダリングを行うレンダラプロセスを分けており,Chrome の保護モードが適応されるのはレンダラプロセスの方です.IME はウィンドウ処理が行われるブラウザプロセスに読み込まれるため,IME にとっての Chrome は,(プラグイン周りをいったん忘れることにすると) メモ帳などと同じただのデスクトップアプリケーションで
「『プリキュア』で検索したら『ハートキャッチプリキュア』にマッチしない」という Windows Search の話. Windows7に深刻なバグを発見したので、警鐘を鳴らすために晒してみます。 再現に使用したOSはWindows7 Home Premium x64です。 バグの再現手順 !!! 悪用厳禁 !!! ●1.適当にフォルダを作る 名前は何でもOK ●2.作ったフォルダーを開いて、 「ハートキャッチプリキュア」 「ふたりはプリキュア」 「プリキュア」 の3つのフォルダを新規作成する ●3.検索窓に「プリキュア」と入力してみる ●4.「ハートキャッチプリキュア」が無かったことにされる ちくしょう!誰がこんなことを!メディーック!!メディーーーーック!! 対処方法 検索窓に「*プリキュア」と入れると全部ヒットするみたい。 でも、XPの頃は「プリキュア」で全部ヒットしてたのでなんか腑に
9 Generational GC (中略) さて、Schemeにおいて、ユーザプログラムがconsやvectorのみを用いる限り、旧→新のポインタは決して生まれない。 Set-car!などの破壊的代入を行なって初めて生じるものである。コンパイラが、破壊的代入の際に必ずGCに知らせる(書き換えられるオブジェクトを GCに教える)ようにすれば、GCが旧→新のポインタ全てを手早く見つけることができる。このように、メモリオブジェクトへの書き込みの際に特別な処理を行なう機構をwrite barrierという(注)。 (中略) 10 Incremental GC (中略) Generational GCと同様に、write barrierが必要になる (ここではmark and sweepを仮定する)。 Write barrierがないと破綻する例を図8に示す。マークフェイズの途中でaが黒になった時
次のページ
このページを最初にブックマークしてみませんか?
『NyaRuRuが地球にいたころ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く