2017年12月24日日曜日

W10Wheel - 日本語化

現在、ロケールまた設定で言語を切り替える仕組みを作り、
メニュー項目とダイアログのテキストの翻訳中です。
Java版(Scala版)のみですが、70%ほど終わりました。

カタカナにするか漢字にするかなどで悩み、意外と時間が掛かります。
残念ながら、今日中には終わらなそうです。

2017年12月10日日曜日

W10Wheel - ON/OFFボタンの表示改善

こちらのサイトを見ると
http://did2memo.net/2017/07/09/w10wheel-net/
>> OFFと書いてあるのが、オフにするボタンかと思った
との記述があり、表示方法を改善したいと思います。

以下の候補がありますが、どれがいいでしょうか。
また、他に良い方法があったら教えてください。

1. ON (--> OFF) / OFF (--> OFF)
2. ON (to OFF) / OFF (to ON)
3. ON/OFF # 文字列は変更しない

# 普通の設定画面を作ったほうがいいとは思いますが、
# なかなか実装が大変そうで取り掛かれていません。
# 現在仕事でWeb系のプログラムを触っているので
# HTML, CSS, JavaScript(もしくはAltJS)で設定画面を作って、
# ブラウザからHTTPで設定を受け取ろうかとも考えています。

W10Wheel v2.6.5 (Java and .NET)

URL:
https://github.com/ykon/w10wheel/releases/
https://github.com/ykon/w10wheel.net/releases/

共通:
* IOの高負荷状態に、入力キューが溢れていた問題を修正

Java:
* exewrapをv1.2.3に更新
実行時にVMオプションを変更する機能を追加
詳細: https://exewrap.osdn.jp/

変更自体は小さいのですが、重要なコアにあたる部分の修正です。
これによって高負荷状態での安定性が少し改善するかもしれません。
# Java版では並列性も改善します。


追記: (2017-12-12)
昨日今日と試した結果、少しなんてものではなく劇的な改善でした。
ESETのファイルスキャン時に不安定になることがありませんでした。
長く患っていた、この問題を修正することがやっとできたようです。

しかし、もっと早く気付くべきでした。
この問題のコードは一番最初から存在していました。
今まで不安定な状態を放置して申し訳ございませんでした。

2017年10月28日土曜日

アンチウイルスソフト

アンチウイルスソフトがファイルスキャンしている時など、
IOが高負荷状態になると、W10Wheelの動作が不安定になります。
現在は「Esc+クリック」の状態初期化で一時的な対処となっています。
この現象は解決したいのですが、何かいい方法が見つかっていません。


追記: (2017-12-12)
v2.6.5にて修正されました。

W10Wheel 2.6.3 (Java)

https://github.com/ykon/w10wheel/releases

exewrapを更新しました。
> Java9のパスをレジストリから検出

2017年10月22日日曜日

W10Wheel 2.6.2 (Java版のみ)

https://github.com/ykon/w10wheel/releases/

Java9との互換性が上がっているようです。
ただし、現時点のexewrap(1.2.0)はJDK9をインストールした環境で
JRE9を自動的に見つけられません。
# JAVA_HOMEにパスを設定すると動きます。

2017年10月15日日曜日

W10Wheel 2.6.1

URL:

https://github.com/ykon/w10wheel/releases
https://github.com/ykon/w10wheel.net/releases

共通:

  • コマンドライン引数のパースを改良
  • エラーハンドリングを改良
  • デフォルト値を変更 (Accel.table, Threshold.horizontal)

.NET:

  • 設定ファイルの読み込みを改良

Java:

  • ライブラリとツールを更新:
exewrap: 1.1.9
jna: 4.5.0
scala: 2.12.3
swt: 4.7.1a

Java9:

デフォルトでは、起動に失敗しますが
(exewrapが、JRE9を見つけられない)
JAVA_HOMEでパス指定すると、Java9でも動くようです。
しかし、Scalaの対応もまだ完了していないので、
(https://github.com/scala/bug/labels/jdk9)
今のところは、Java8までのサポートとします。

2017年9月29日金曜日

近況

こちらは最近放置してすみません。
もっと開発に関する情報を載せたいのですが
最近はPCが壊れたり、新しい仕事先の勉強など
色々と忙しく、なかなか時間が取れない現状です。

W10Wheelに関しても、
誰からもポストしてもらえないので
Blogとかは書き込みにくいのでしょうか。
(関心がある人自体が少ないのかもしれませんが)

試しに、Twitterアカウントを作ってみたので
何かご意見がある人は、気軽にメッセージを投げてください。
https://twitter.com/ykon0x1

2017年7月23日日曜日

GetFileSizeGroup

PowerShellで作成したCSVファイルを元に
ファイル名が近いものを探してグループ化して
合計サイズを降順で表示するプログラムです。

まだ、結果がいまいちかもしれません。
もう少し改良できそうです。

2017年7月17日月曜日

W10Wheel v2.6 (Java and .NET)

URL:
https://github.com/ykon/w10wheel/releases
https://github.com/ykon/w10wheel.net/releases

共通:
コマンドを追加 (--sendReloadProp, --sendInitState)
--sendReloadProp: 設定ファイルをリロードします。
--sendInitState: 状態を初期化します。

Java:
exeラッパーをexewrapに変更しました。
この変更により
  • 実行ファイルがx86とx64で分離しました。
  • タスクマネージャーでW10Wheel.exeと表示されるようになりました。
  • ReplaceSWTが必要なくなりました。

Context周辺のリファクタリングを行いました。
まだまだ汚いコードが残っていますが、
少しだけ重複コードが減りました。

2017年7月2日日曜日

W10Wheel v2.5 (Java and .NET)

https://github.com/ykon/w10wheel/releases
https://github.com/ykon/w10wheel.net/releases
  • 状態の初期化機能を追加
Escapeキーを押しながらクリックすると、
状態の初期化とスクロールモードを終了します。

スクロールモードから戻らなくなった場合など、
何か動作がおかしくなったら、お試しください。

2017年6月12日月曜日

W10Wheel 2.4.1

https://github.com/ykon/w10wheel/releases
https://github.com/ykon/w10wheel.net/releases
  • スクロール開始のセット順序を変更 (スレッドの問題)
問題の発生を確認できていませんが、
運が悪いと、スレッドのタイミングによって
動作が不正になる可能性もあるので
念のため順序を入れ替えました。

2017年6月11日日曜日

W10Wheel 2.4

https://github.com/ykon/w10wheel/releases
https://github.com/ykon/w10wheel.net/releases

共通:
  • RawInputから移動値を取得するように変更しました。
    DPI変更の影響を受けなくなりました。
  • DPI関連の設定を削除。
Java:
  • DPIを変更すると、タスクトレイのアイコンが増殖していたのを修正。

2017年5月28日日曜日

Rust / FizzBuzz

fn main() {
    for n in 1..101 {
        match (n % 3, n % 5) {
            (0, 0) => println!("FizzBuzz"),
            (0, _) => println!("Fizz"),
            (_, 0) => println!("Buzz"),
            _ => println!("{}", n)
        }
    }
}

Rust / Hello

fn main() {
    let name = "Rust";
    println!("Hello, {}!", name);
}

VS2017 and Cargo

Visual Studio 2017(with C++) をインストールした環境で
"cargo build"すると、link.exeが見つからないというエラーが発生します。
note: the msvc targets depend on the msvc linker but `link.exe` was not found
note: please ensure that VS 2013 or VS 2015 was installed with the Visual C++ option
error: aborting due to previous error
Cargoは、まだVS2017のパスを認識できていないようです。
とりあえず、以下を実行することでビルドできるようになります。
\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat
(32bitの場合はvcvars32.bat)

詳細は以下を参照してください。
https://github.com/rust-lang/rust/issues/38584

現在の開発環境

  • Scala: Scala IDE 4.6.1 RC1
  • F#: Visual Studio Community 2017

W10Wheel.NET 2.3

https://github.com/ykon/w10wheel.net/releases
  • コンパイラーをF# 4.1に更新
他の変更点はありません。

W10Wheel 2.3

https://github.com/ykon/w10wheel/releases
  • コンパイラーをScala 2.12.2に更新
  • JNAの拡張を内部に取り込む変更
v2.3以降、lib/win32ex.jarは不要になります。

2017年5月21日日曜日

W10Wheel 2.2.2

https://github.com/ykon/w10wheel/releases
  • 管理者として実行して、エクスプローラーを再起動すると、タスクトレイのアイコンが消える問題を修正
動作確認してみたい方は、
W10Wheel.exeを右クリックして「管理者として実行」で起動、
タスクマネージャーでエクスプローラーを右クリックして
「再起動」するとテストできます。

2017年5月20日土曜日

W10Wheel 2.2.1

https://github.com/ykon/w10wheel/releases
  • エクスプローラーを再起動すると、タスクトレイのアイコンが消える問題を修正
動作確認してみたい方は、
タスクマネージャーでエクスプローラーを右クリックして
「再起動」するとテストできます。

2017年5月14日日曜日

W10Wheel 2.2

https://github.com/ykon/w10wheel/releases
https://github.com/ykon/w10wheel.net/releases

共通:
  • Injectされたクリックを無視する
  • EventWaiterの同期改良 (LR系トリガーに影響)
Java:
  • 一部の変数をvolatileからAtomicBooleanに変更
  • ライブラリの更新: SWT 4.6.3, JNA 4.4.0, Logback 1.2.3
.NET:
  • メニュー名のタイポを修正

Injectされたクリックの無視は、他のソフトで挿入されたクリックを
トリガーとしていなければ、影響がありません。
# SetPointの「ボタン切り替え」などには影響しません。

この変更で何か問題が発生するようなら、
元に戻すか、選択できるようにするかもしれません。

W10Wheelの既知の問題

稀に他のプログラムと、何らかの処理が重なった時、
スクロールモードのまま戻らなくなったり、クリックが効かなくなります。
カーソル変更が有効の場合は、カーソルが戻りません。
この状態に陥った場合は、Escapeキーを押しながらクリックをお試しください。
それでも駄目な場合は、Ctrl-Alt-Deleteを押して、
タスクマネージャを起動すると、復帰できます。
# 復帰できない場合は、プロセスを終了してください。
# "W10Wheel.exe --sendExit"で終了することも可能です。

スレッドの問題か何かで、正しく状態が遷移していないと思われます。
再現性が確実ではないので、治すことが難しいです。
100%再現する、何かがあれば教えてください。

2017年5月13日土曜日

W10Wheelの使い方に関して

質問などがあったら、コメントしてください。

W10Wheelの動作報告に関して

  • *ソフトと一緒に動かすことができた
  • *ソフトを一緒に使うことで動作した
  • *設定で競合を回避できた
  • OS: *バージョン / VM: *バージョン / 設定: *で動作した
  • 他、何でも他の人が見て有益になりそうなこと
などがあったら、コメントしてください。

W10Wheelのコードに関して

  • コードが汚い (もっと綺麗に書き換えられる)
  • コードに問題(バグ)がある
  • APIの使い方が間違っている
  • より適切なAPIが存在する
  • スレッドの使い方が間違っている
  • スレッドセーフではない
  • ScalaまたF#の流儀に沿っていない
  • より関数型的なコードにするには
  • 他、技術的な何か
などがあったら、コメントしてください。

W10Wheelの今後に関して

  • 環境を更新してビルド (Scala 2.12 / F# 4.1)
  • 設定を普通のGUIダイアログにする (検討段階)
  • Readmeを書き直す (汚いので)
  • コードをより関数型に近づける
  • ネイティブに移植する (Rustで実装)

W10Wheelの改良案に関して

何かあったら、コメントしてください。

W10Wheelの問題に関して

何か気になる点があったら、コメントしてください。
  • Java版もしくは.NET版のどちらを使っているか
  • Infoから確認できるバージョン
  • 現在の環境(OSやVMのバーション)など
できるだけ詳細にお願いします。

テスト

こちらは、コメントのテストとして使ってください。