2013年8月19日月曜日

TeXstudioで日本語入力がうまくいかないバグがあったから直した

直せたっぽいんで


diff --git a/qcodeedit/lib/qeditor.cpp b/qcodeedit/lib/qeditor.cpp
index b9a067f..3c9a72c 100644
--- a/qcodeedit/lib/qeditor.cpp
+++ b/qcodeedit/lib/qeditor.cpp
@@ -3153,7 +3153,7 @@ void QEditor::inputMethodEvent(QInputMethodEvent* e)
   return;
  }
  */
-#ifdef Q_WS_MAC
+// #ifdef Q_WS_MAC
     QString preEdit=e->preeditString();
     if( !preEdit.isEmpty()){
         int i=-1;
@@ -3170,7 +3170,7 @@ void QEditor::inputMethodEvent(QInputMethodEvent* e)
         preEditLength=preEdit.length();
         preEditLineNumber=m_cursor.lineNumber();
     }
-#endif
+// #endif
 
  if ( e->commitString().count() ) {
   m_cursor.beginEditBlock();
@@ -3192,10 +3192,20 @@ void QEditor::inputMethodEvent(QInputMethodEvent* e)
 
   m_cursor.endEditBlock();
  }
+ 
+ if( preEdit.isEmpty() && e->commitString().isEmpty() && preEditSet) {
+  m_cursor.beginEditBlock();
+  m_cursor.movePosition(preEditLength, QDocumentCursor::Left, QDocumentCursor::KeepAnchor);
+  m_cursor.removeSelectedText();
+  m_cursor.endEditBlock();
+  preEditSet = false;
+  preEditLength = 0;
+ }
 
  foreach ( QEditorInputBindingInterface *b, m_bindings )
   b->postInputMethodEvent(e, this);
  
+ e->accept();
 }
 
 /*!

http://texstudio.sourceforge.net/こっからソースをDLしてきて
cd texstudio2.6.2
patch -p1 mypatch.patch

でパッチを適用して
https://sourceforge.net/apps/mediawiki/texstudio/index.php?title=CompileTXS
の手順でコンパイル

2013年7月12日金曜日

VirtualBoxのextensionをユーザー名に日本語が(ry でインストールする方法

前の記事の続き
extensionも先程と同様に、まずパス名に漢字が含まれない場所において、次に先ほどのように環境変数を変更したシェルでC:\Program Files\Oracle\VirtualBox\VirtualBox.exeを起動して、あとはファイル→環境設定→拡張機能にてインストールする



VirtualBoxをユーザー名に日本語が含まれる環境でインストールする方法

私の場合、漢字の名前をユーザー名にしてしまったため、ホームディレクトリのパスががC:\Users\名前\みたいなことになっているのだが、これだとVirtualBoxをインストールまたはアップデートするときに下の画像のようなエラーが出てインストールできない

これは、VirtualBoxのインストーラーは一時ファイル置き場として<ホームディレクトリ>\AppData\Local\Tempを使用するのだが、上記の環境だとこのパス名に漢字が含まれてしまうため、パスの処理がうまくできずにエラーを吐いて終了してしまう
そこで、インストール時にだけ一時ファイル置き場を変更することを考えた
 まず、VirtualBoxのインストーラーを、パス名に漢字が含まれない場所に置く
私はCドライブのルートに置いた
次に、一時ファイル置き場を作成する
私はC:\tempとかいうフォルダがもともとあったのでそこを使った
PowerShellを開き、次のコマンドを打つ
$env:TMP = "C:\temp"
C:\VirtualBox-Win.exe
$env:TMPは一時ファイル置き場のパスを示す環境変数である
この値を一時的に変更しておいて、virtualboxのインストーラーを起動する

C:\tempとかC:\VirtualBox-Win.exeは自分の用意した環境に合わせて
 あと本件と直接関係はないが、VirtualBox Bridged Networkingはインストールしないほうがいいかもしれない
私の環境(Win8.1 64bit)ではWLANが繋がってもネットワーク設定がうまくいかず、インターネットに接続できなくなった
















2013年6月22日土曜日

Boost.勉強会 #12 大阪に参加してみた

 帰ってブログを書くまでがBoost.勉強会だと言われたので、数ヶ月ぶりにエントリーを更新する

 普段使ってるGoogle CalenderにIT勉強会カレンダーを登録してるんだけど、そこにBoost.勉強会が入ってたので、ちょうどその日空いてることだし、C++ってどんなふうなのなんかなー、レベル高いところを覗いてみたいなーと思ったので、登録し参加した次第

 先々週ぐらいに猫C++やり終わった!!!とかほざいてるC++超超初心者勢には荷が重すぎる内容であることは最初から分かっていたつもりだったんだが
……予想以上に重かった
理解できるセッションが最初の「C++で作るWEBアプリケーション」と最後の「C++コミュニティを作る」だけだった
まあ順番に感想を書いていく

 一つ目の「C++で作るWEBアプリケーション」
わかり易かったし、感動した
これからはC++ネイティブデベロッパーが自分の普段使いの言語でウェブのクライアント側の実装ができるようになるのか!、と
某しまぱん氏が「そこまでしてC++で書く意味とは」とおっしゃっていたが、
これからC++を学ぼうと思っている私のような者が「C++さえできればなんとかなるのか!!!」(おそらく実際はそうではない)と自信と誇りとを持ってC++学習を進められたり、既存のコードを活用できるという点で意味があることだと思う
非常に興味をそそられる内容だったので今度是非自分でもやってみたい

 2つ目の「C++初心者のためのBoost.MPL入門」
まず発表者が高校生ということに驚かされる
私も高校生のままでいたかった
あと……初心者のための?
私はもしかしたら超超初心者どころではなく超超超超初心者ぐらいかもしれない…
でなおしてきます

 昼食
@fadis_氏と桜花氏と某氏と某氏についていって入った居酒屋で海鮮丼を食べる
ウサギ(ry

 3つ目の「boost::multiprecisionと適応型無誤差演算」
ちょっと分かった
誤差なし演算させると莫大な時間がかかるので基本誤差ありで適度に誤差無しを使いましょうという内容(多分
将来物理系のシュミレーションとかしそうなのでそのときに直面しそう

 4つ目の「constexpr中3女子テクニック―実践と濫用そしてC++14へ」
こちらの発表は中3女子の方がなされてて、びっくり(
スライド数が多く、時間が超過するほど内容が濃く、熱く語っていらした
そして内容は…すいません全然わかりませんでした
とりあえず来週ぐぐりながら復習してみる…
ただ、音声合成とかグラフィックとかはやってみたいと思った
特に鏡面効果

 5つ目の「Allocators@C++11」
すいません(ry

 6つ目の「君はまだ、本当のプリプロセスを知らない」
すい(ry
ただ、変態的なことをしているような気配は感じた

 そして7つ目の「C++コミュニティを作る」
あきら氏の日本の技術者を救いたいという熱い思いを感じた
しかし、向上心のない職場(会社)って、どうなってるんだろう…会社って儲けるためにあるんだから、できるだけ楽に儲けるために能率が上がるツールを使おうという発想がないというのは…?
まあ、会社が儲かっても一般社員にはほとんど関係なく、能率が上がっても仕事の量が増えて帰る時間は変わらない、という会社が日本ではほとんどだろうからなあ…
早いうちから就職のこと考えとけとか言われるけど正直日本の会社に就職とかしたくない(ボソッ
あと、英語力に関する正直な感想として、バグ報告で意思を伝えられるぐらいの英語力は技術者なら持っていないとダメなんではと思った
やっぱり英語圏が開発の中心なわけだし
まあ受験を終えてからというものの英語力絶賛降下中な私が偉そうに英語についてゴチャゴチャ言うことはできないかもだが

以上、感想

当初の今回の目的はC++の 闇 高度なテクニックに触れようということだったので、目的は果たせた
プレゼンの内容は将来もっとレベル上がった時によく見直したい

2013年4月29日月曜日

ubuntu13.04にてadbが実行できない件

ubuntu13.04 64bit virtualboxによる仮想化環境で発生
別に13.04でなくても仮想化環境でなくても発生しうると思うが、重要なのは64bit環境ということである
Android SDKはLinux 64bit用のものを使用
ここでadbを実行しようとすると、
android-sdk/platform-tools$ ./adb
bash: android-sdk/platform-tools/adb: そのようなファイルやデ ィレクトリはありません
などというわけのわからないエラーに悩ませられる
…ファイルがない?
いや、ファイルビューアで見てもlsで確認してもちゃんとあるんですけど…

この場合は、apt-getでia32-libsをインストールすると直った

しかしこのエラー表示は分かりにくい
「バイナリを実行できません」的なメッセージだとまだ分かったけど
これは多分バグなんじゃないかと思うが、bashのバグなのか他の何かのバグでこうなるのかはよく分からない

>>> 13.4.29追記
ある方の情報によると、zsh使えばこの問題からはおさらばできるそうです