Quantcast
Channel: うたブログ〜情報編
Viewing all 44 articles
Browse latest View live

UILabelのfontサイズについて

$
0
0
UILabelのfontサイズは.fontのpointSizeなどで設定できるが、実はこの値はiOSによって動的に変更される。

adjustsFontSizeToFitWidth=YESでminimumScaleFactorを設定していた場合、.text(attributedText)の表示幅によってfontのサイズも変更される。


それはまだ理解しやすいがもう1つわかりにくい変化タイミングがある。


attributedText内でフォントを設定した場合、その先頭にかけられたフォントサイズになる。
ひょっとしたら、フォントそのものも変更されるかもしれない。


// 全体にフォントを適用した文字列を作成
NSMutableAttributedString *astr = [[NSMutableAttributedString alloc]
initWithString:baseStr attributes:@{NSFontAttributeName:font}];


この場合、label.fontのサイズはここで指定したfontのそれになる。
問題はここから。このastrにさらに、先頭からlen文字に

NSInteger point=0; // 先頭
UIFont *zeroFont=[UIFont systemFontOfSize:0];
[astr addAttributes:@{NSFontAttributeName:zeroFont} range:NSMakeRange(point,len)];

とかしてフォント指定を重ねると、それがUILabel.fontのフォントサイズになる。
この場合フォントサイズは0なので、len文字は表示されない。
先頭ではなく文字列途中にかけた場合はフォントサイズにはならない。

このattributedTextの表示は正常に行われるが、後にそのUILabelにそのまま別の.textを代入したりするとフォントサイズ0なので全体が表示されないというバグが発生する。.fontでサイズを呼び出してもおかしい、ということになる。

そんなことするはずないと思われるかもしれないが、UITableViewCellで再利用する場合には有り得る話となる。


要注意。

iOS7以降におけるUIButtonの挙動の問題について

$
0
0
iOS7以降では、UIButton.textを設定した時、UIButton.textLabel.frameが変更されるのは実表示されるタイミングになっている。すなわち、.text代入時にはtextLabelの表示幅や位置は取得できない。

通常それを知る必要はないが、UIButtonではtextLabelは基本的にセンタリングで表示される(titleEdgeInsetで補正は可能)ため、例えばボタンを表示上左寄せしたい場合にはtextLabel.frame.origin.x=0にしなければならない。ところが、.text代入直後は.textLabel.frameは{0,0,0,0}であり、この時点で代入しても無効になる。

ではどうするかというと、KVOで.textLabel.frameを監視して、その代入があったタイミングで補正する。

こんな感じ。

――――――――
UIButtonWithLabelAlignment.h
――――――――
#import <UIKit/UIKit.h>

// 左寄せと上寄せがORで設定できる
enum {
  kUIButtonWithLabelAlignment_normal=0,
  kUIButtonWithLabelAlignment_left =(1<<0),
  kUIButtonWithLabelAlignment_up   =(1<<1),
};

@interface UIButtonWithLabelAlignment : UIButton
@property (nonatomic) NSInteger align;
@end

――――――――
UIButtonWithLabelAlignment.m
――――――――

#import "UIButtonWithLabelAlignment.h"

#define OBSERVE_FRAME @"titleLabel.frame"

@interface UIButtonWithLabelAlignment()
{
  BOOL setKVO;
}
@end


@implementation UIButtonWithLabelAlignment

-(instancetype)initWithFrame:(CGRect)frame
{
  self=[super initWithFrame:frame];
  if (self) {
     [self addObserver:self forKeyPath:OBSERVE_FRAME options:
NSKeyValueObservingOptionNew context:NULL];
     setKVO=YES;
  }
  return self;
}

// KVOによる変更通知受信
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary *)change context:(void *)context
{
  // 1つしか登録してないのでkeyPathのチェックは省略
   // 即解除;そうしないと以下でframeを操作するとまた発生してしまうから
  [self removeObserver:self forKeyPath:OBSERVE_FRAME];
  setKVO=NO;
   // 寄せる
  UIButton *btn=(UIButton *)object;
  CGRect frame=btn.titleLabel.frame;
  if (self.align&kUIButtonWithLabelAlignment_left) {
     frame.origin.x=0;
  }
  if (self.align&kUIButtonWithLabelAlignment_up) {
     frame.origin.y=0;
  }
  btn.titleLabel.frame=frame;
}

-(void)dealloc
{
  if (setKVO) {
   // 外れてないのが残ってたら外す
   self.titleLabel.frame=CGRectZero; // 上の通知でKVOを解除する
  // これでは解除処理が終了するまでにdeallocが終了してしまうためエラーが発生する
  // [self removeObserver:self forKeyPath:OBSERVE_FRAME];
  }
}


ついでに書いておくと、[UIButton sizeToFit]するとボタン幅が表示幅に合わされるので中央寄せ=左寄せで問題ないが、.textLabelにtruncateを設定していると、その表示幅はボタンの幅より必ず狭くなるのでセンタリングが起こる。これはtruncateが発生するラベルと発生しないラベルを並べた場合には、表示位置がずれて見えるということを意味する。なお、truncateが発生したボタンにsizeToFitをかけるとtruncateが外れてしまう(全体が表示できる幅のボタンになる)のでやってはいけない。

UITableViewでのインデックス表示時の注意

$
0
0
UITableView

インデックス表示に重なる部分の下に来る要素(ボタンなど)は反応しないので注意。

実際に表示が重ならなくても、表示領域的に。


GARMIN etreck20(台湾版)の使い方;随時追記

$
0
0
GARMIN社のGPS、etreck 20を購入した。日本語版もあるのだがかなり高い。
日本語版で下位機種のetreck10の値段で、海外版では上位機種であるこの20が買えてしまうほどだった
しかも、調べてみると海外版を日本語化出来るそうなので、海外版を購入した。


~~



~~

これ、実際には台湾版(中国語版)である。Amazonの写真は赤の筐体が写っているが、台湾版は黄色である。この台湾版は英語版に比べ日本語化がしやすい。なので、「中国語がちょっとでも表示されるのは絶対嫌だ」というのがないなら、英語版を買うよりこの台湾版を入手した方がいい。

ちなみに、2015/4/10現在では円高も進んだこともあって、Amazon.comから英語版を購入しても、この台湾版と余り変わらない値段となってしまう。もっとも、この台湾版も日によって大幅に価格が変わることがあるようだが。

~~~準備~~~

届いたらまず、PCにGARMIN Expressと言うアプリを導入する。インターネットで検索して探す。
このアプリ自体は日本語化されている。 今回はWindows版を導入したが、Mac版も存在するようだ。
ファームのアップデートもこの上から行えるようであるが、台湾版は2015年4月11日現在V2.80が最新のようで、アップデートは出来ない。英語版にはV4.20まであるようだが、台湾版にはどうやっても導入出来なかった。


台湾版なので、付属取説は全く読めなかった。しかし、GARMIN Express上から英語の取説を開くことが出来る。英語の取説もわかりやすいとは思わないし、上位機種の30と共用なので20には存在しない機能についても書かれていたりする。なお、英語版向けの日本語簡易取説はここにある。機械翻訳らしく一部に間違いがあるけど。


実のところ、GARMIN Expressは余り使いようがない。ログの取り出しもこれでは出来ない。じゃあなんで導入するかといえば、念のため。

ちなみに、GARMIN Expressは、起動毎にスタートメニューのルートにGarminというフォルダを作る。きわめていらんお節介。



~~~日本語化~~~

台湾版の日本語化の手順は、
  1. メニューの日本語化
  2. 日本地図の導入
の順になる。

~~~メニューの日本語化~~~

これはとても簡単。
Setup~System~LanguageでJapaneseを選ぶだけ。
台湾版にはすでに日本語フォントと日本語メニューデータが入っているからこれだけで済む。
英語版だとフォントの導入から行わなければならないのでかなり面倒そう。

ただ、標準で入っている日本語メニューデータは、翻訳がおかしいと言うかわかりにくい部分があるので、私は独自に編集して使っている。まだ全ての表示を確認出来ていないので公開はしない(文字列長の問題があるかも知れないので)。
変更したい人は、本体を記録デバイスとして認識させて、\Garmin\Text\Japanese.gttを編集すればよい。UTF-8のテキストである。

なお、日本語を選んでも一部のメニューや文言は英語のままになる。どうもファームに直接書かれていて変更出来ない部分があるようだ。

~~~日本地図の導入~~~

この台湾版の最大の問題がこれで、標準では日本が全く表示されない。日本の座標を入れても海のど真ん中になってしまう。なので、日本で使うには日本地図の導入が必須である。

地図は市販のものもあるようだが、無料で手に入れることも出来る。その方法を紹介する。
なお、日本語地図の導入にはマイクロSDカードが必要である。一時的にではなく恒久的に。

~~

~~
日本語地図の導入には最低1GB必要だが、今時そんな小容量はないので問題ない。でも、このSDカードにはログデータも記録されるので、過去のログを本体内に長くとどめておきたいならそれ相応の容量が必要となる。


海外版etreck対応の日本地図はここ↓にある。
OpenStreetMap for Garmin

これを台湾版GARMINで使う場合、ダウンロードすべきは英語版である。日本語版をダウンロードしてはいけない。英語版は英語(ローマ字)表記ではなく英語モデル用に文字コードUTF-8で作られているという意味だった(日本語版は日本モデル=etreck20J用にSHIFT-JISで作られていると思われる)。
誤解を招きやすい書き方をされているので要注意。

で、導入仕方。
  1. 上記サイトから日本~英語版をダウンロードしてくる。等高線の有り無しは好みで。両者を同時に使うことは出来ないようである。Mega Limitedと言うサイトからダウンロードすることになるのだが、Google ChromeにAdBlockを導入しているとはじかれてしまいダウンロード出来ない。設定を変更して通るようにするか、他のブラウザを使うこと。
  2. ZIPを展開する。gmapsupp.imgというのが地図データである。
  3. マイクロSDに書き込む
    まずGarminと言うフォルダを作り、その下に入れる。
    \Garmin\gmapsupp.imgと言うファイルがあれば正解。
  4. GARMINの電池ぶたを開け、電池を外し、その下にあるSDスロットにカードを入れる。
    写真は下参照(Google Bloggerの制約でここに写真が貼れないので)。
    このスロットはカードを差し込むのではなく置くタイプなので、注意。
  5. 電池を入れ直して再起動。
  6. 設定>地図>地図選択でOSM MAPS Familyを有効に設定する
    これをしないとせっかく導入した地図が表示されない。
  7. 同、China BasemapおよびDigital Globeを無効にする
[写真]
SDカードスロットのカバーを上げた状態












    SDカードを挿して蓋を閉めた状態













    (先にSDカードを入れて、USBで認識させて書き込めばいいと思うかもしれないが、USB経由のGARMIN内SDへの書き込みはかなり遅いので、特に大容量の地図データではしない方がよい。)

    これを導入すると、地図上の表記が漢字になるほか、検索も漢字で行える。ただし、OpenStreetMapの性格上、抜けや間違いがある。それに対して文句を言うのは筋違いである。気になるなら、自分で入力して貢献しよう。

    日本語フォントを導入していない海外版でも使えるようにローマ字表記で表示する地図もある。ただ、台湾版は日本語フォントがあるのでわざわざこちらを導入する必要はない。ローマ字変換がおかしい部分もあるし。

    ~~~製品感想~~~

    しばらく使った上での感想などをいくつか。
    • GPS衛星補足能力はかなり高い。また、一端見失っても再捕捉が早い。
      →ではあるが、時々長時間再補足出来ないことがある。特に電源投入直後の捕捉は、高速移動中だとかなりかかる。新幹線の中で電源を切ったり、電池切れに気がついて交換した後に判明(全く別の日に両方やってしまった)。長時間捕捉失敗後も同様の傾向がある様子。
      →低速移動中でもできないと判明。基本的に、初期のGPS補足は停止中にしなければならない(その割には電源ボタンが押しやすすぎ)。
    • 精度は今まで使ったGPSの中でもトップクラス。さすが高いだけのことはある。平均的な誤差は2~3メートルという感じ。
      ただ、GPSの原理上、低速移動時の誤差は大きくなってしまう。これは他のGPSも同様。
    • 電池の保ちはかなり良いと思う。エネループ2本で21時間くらい保つ感じ(標準のログ記録間隔で)。でも、電池が減っても気がつきにくいので、毎日交換するのが吉かと。
    • 重い。電池を抜いてもそう思う。 
    • 電源スイッチを間違って押してしまうこと多数回。 押し易す過ぎる。これは要改良点。スライドスイッチだったらよかったのに。うちではボタン上にホットメルトでぽっちを作って手触りでわかるようにしている。(電源以外も押されてしまいやすいけど、ほかの動作モードに入ってもログ記録は途切れないので致命的ではない。)
    • 全体的に操作はわかりにくい。本体だけでは事実上出来ないこともある。それについてここで書いていこうかと。「トリップメーターどうやって使うんだ!?」
       
    GPS衛星を捕捉しにくい場所
    • 室内;木造でも
    • 地下鉄、トンネル内;携帯電話が通じてもGPSは無理
    • JR223系新快速車両;なぜか窓際でも補足できなかった(京都→大阪間で体験)。
    • 新幹線700系の通路側
    鋼鉄製の普通車両、新幹線N700AやJR四国 8000系は問題なしだった。



    ~~~ログの取り出し方法(日本語地図導入時)~~~
    ログは、日本語地図導入時=SDカード挿入時はSDカード上に記録される。
    なので、GARMINをUSBでつないでSDカード上のGarmin\TRK内のgpxファイルを取り出せばよい。GoogleEarthやカシミール3Dで表示させることができる。
    (カシミールはひたすら重いので、編集でもしない限り使わないけど。)

    ~~~ショートカットの使い方~~~
    ショートカットとは、 機能の中で良く使い物をbackボタンを押すだけで呼び出せる様にする機能である。ショートカットに登録した物は、backを押す度に切り替わって表示(いわゆるトグル表示)される。

    しかしこいつには問題があって、ショートカットに登録された機能は普通のメニューからは表示されなくなる

    最初機能が表示されなくなって故障したかと思ったが、そういう仕様だった。
    メニューからは常に全て表示させておいて欲しいものだ。

    実際の所、ショートカットに登録したところで、メニューから選択するのとさほど操作手順は短縮されないと思うので、使い道は少ないと思う。


    ・・・今後追加予定の項目・・・

    ~~~メニューのカスタマイズ~~~
    ~~~表示項目のカスタマイズ~~~
    ~~~ルート設定~~~
    など

    Firefox/Chrome/IEでまともに見られないページに出会った時の対処方法

    $
    0
    0
    Windows7の再インストールした時、Firefox/Chrome/IEで発生していた各種問題を一気に解決した。それを記録にとどめておく。

    ・・・

    1. Chromeでバンダイチャンネルが見られない
    アドオンのAdblockが悪さをしていたと判明。
    ホワイトリストでhttp://www.b-ch.comを通すことで解決。

    2. Firefoxでバンダイチャンネルが見られない
    自動的にhttpsで接続するアドオン(名前は失念)が悪さをしていた様子。外したらいけた。
    ついでにこちらもAdblockを外すように設定。


    3. FirefoxでGyaoが正常に見られない(テキストのみ表示になってしまう)
    これもAdblockが原因。Gyaoを始め、Yahoo系のサイトはAdBlockを有効にしているとまともに表示されない事が多い(Yahoo知恵袋とか)。広告収入が主なサイトは、あえてAdblock対策してあるのかも。



    4. FirefoxでSilverlightが正常に動かない
    Yahooのルートラボとか。
    これもAdBlockで対象ページを通せばOKだった。



    とにかく動画系にはAdblockを入れているとおかしくなるサイトが多い。広告を外してくれるありがたいアドオンだが、副作用もあるので、表示がおかしい時はまず疑ったほうがいいかも。


     5.  NTTの速度測定ができない
    http://www.flets-west.jp/speed/

    5-1. 「必要なプラグインがインストールされてない」と出る場合
    32bit-Javaのインストールが必要。
    Javaのダウンロードサイトはアクセスしたブラウザのビット数でダウンロードできるJavaのビット数が自動的に切り替わってしまう。64bit Chrome使ってJavaダウンロードしたら64bit Javaが入ってた。
    IE11やFirefoxは32ビットなので、それを使ってJavaをダウンロード&インストールすること。


    5-2. 「エラーが発生する」
    セキュリティーでブロックされてる。
    コントロールパネル~Java(32ビット)~Javaコントロールパネルからセキュリティ~サイトリストの編集で追加として、速度計測サイトのアドレスを登録する。http://[~:~:~:~::~]/bench.jspで、~の部分はつなぐ先によって異なると思う。
    登録すると、実行確認が出てくるので、「実行」を押すと実行される。


    6. Silverlightを再インストールしようとするとWindowsが完全ハングアップする
    これが一番厄介。Silverlightはアンインストール時にレジストリにゴミを残す。そしてそのごみがあると再インストール時にハングアップする。多分80%~95%までの間で。完全に固まってしまい、キーもマウスも何も効かないので強制電源OFFしかない。

    解決法は、そのレジストリのゴミを取り除くこと。
    Windows再起動後、regeditを起動、検索で「Silverlight」を探し、それを含むエントリを全て削除する。200個以上あるので地道にやるしかない(ひょっとしたら一部だけでいいかもしれないけど)。他のを削除しないように。
    全部削除したらregeditを終了し(再起動は必要ない)、Silverlightを再インストールするとうまくいく。


    7. ChromeでSilverlightが有効にならない
    Chrome自体が外部プラグインを認めない方針になったことによるらしい。
    以下の手順で有効にできる。

    (1)URL欄に「chrome://flags/#enable-npapi」と入力
    (2)出てくる設定一覧の中で、NPAPI を有効にする
    (3)Chromeを再起動(先の画面の一番下にボタンが有る)
    (4)URL欄に「chrome://plugins/」と入力
    (5)Silverlightで「常に実行を許可する」をチェック

    先のルートラボをChromeで閲覧する場合がこれが必須となる。
    また、他の外部プラグインも同様に有効にできる。

    iOS8とXcode6.3.2のバグ

    $
    0
    0
    X-BASIC for iOS v3.00の開発に際して、iOS8のバグとかiOS7との挙動の違いをいくつか見つけたので記録しておく。Xcode6.3.2のバグも。

    巷で情報がないもの。

    (1)iOS8で、UITextViewでズームを繰り返すとシステムが反応しなくなることがある
    iOS7.1では問題ない。なので、iOS8.1では頻発、8.2以上では頻度は減ったけどやはり出る。
    UIScrollView上にUIImageViewを載せた場合は問題なさそう。
     回避策なし。


    (2)iOS8.xで、UITextViewでズームした時、画面外に出た部分を表示できない
    表示及びスクロール可能範囲が拡大前のそれと同じであり、またスクロールもできないし、表示も欠ける。
    iOS7では問題ないが、iOS8は全てのバージョンで不可。他の設定が必要になったのかと思ったが、それらしいものはなかった。
     回避策なし。

    UIScrollView上にUIImageViewを載せた場合は問題ない。
    (1)(2)のせいで、X-BASICではテキストのズーム表示をiOS8上禁止した。iOS7では動く。


    (3)UITextViewのscrollRangeToVisible:selectRangeで指定範囲までスクロールしようとした時、iOS8ではその設定のあとそれを発行するtextViewの内容を変更してもその場所に飛ぶが、iOS7では無効になる。

    「例」
    [txView  scrollRangeToVisible:selectRange];
    txView.attributedText=〜
    iOS8では修正後テキストの指定位置に移動するが、iOS7では移動しない。

    先に修正すればOK。
    txView.attributedText=〜
    [txView  scrollRangeToVisible:selectRange];

     iOS7の動作もおかしいとはいえないが、なまじiOS8で動いてしまうだけにiOS7上での隠れバグになりそう。


    (4)iOS8/iOS7とも、UITextView.contentOffsetに値を設定してもそこに飛ばないことがある。
     txView.contentOffset=offset
     としてもだめで、
     [txView setContentOffset:offset animated:YES];
    とするといける。=offsetの後にsetNeedDisplayを発行しても、RunLoopに戻すようにしてもダメ。
    animatedにすると時分割でoffsetを与え続けてくれるので動くのだと思う。
    ということは、contentOffsetへの設定が無視されるタイミングがあるのだろう。

    (5)contentSizeの値が正しくない
    これはiOS7で散々騒がれて回避ロジックも編み出されたけど、iOS8でも治ってなかった。

    ちなみに、UITextView内で行を追加した時、各行の表示位置はsizeWithAttributesで求められる文字列描画高さの累積に一致しない。このため、各行の表示位置を正確に知る方法がない(それがX-BASICでスクロール同期がうまくいかない理由)。


    (6)Xcode6.3.2のバグ;IB上でのUndo
    以下の手順で操作すると、おかしくなる。
    1. IB上で何かUI要素を乗せて実行して動作を見る。
     IBActionでの接続もしてたらよりわかりやすい
    2. その要素を削除して実行
    3. Undoで要素を戻す
     IBActionでの接続も戻っている
    これで元(1.の段階のもの)に戻るように思うが、実際には戻らない。UI要素が表示されない。表面上どこにも問題ないのに戻らないのでしばらく調査したが、どうもXcodeのバグ臭い。要素を一旦削除し、再度乗せたらうまく行った。
    IB上で、実行を挟んだUndoは気をつけろ、ということ。

    (7)Xcode6.3.2のバグ;iPhone6シミュレーターで日本語にならない
    ここに情報があった
    簡単になったのかそうでないのかわからないところ。でもシミュレーター上でも切り替えられるようにするのが筋。

    (8)Xcode6.3.2のバグ;Breakポイントが違う場所に付く
     break文にBreakポイントをつけると、実行時にはbreakして飛んだ先に設定されてしまう。
     breakを通過したあとで止まるならいいが、breakを通らない時も止まってしまうので、デバッグがしにくくなる。
    「例」
    switch (n) {
     case 1:
       break; <- ここにBreakポイントを設定しても
    }
    <-ここで止まってしまう。n=1でなくても。


    UITextViewはiOS7で大問題を起こしたけど、iOS8でも別のバグを入れ込んでいる体たらく。アップルはもっと開発者の声を聞いて、大量の人員を導入してバグ取りすべき。iOS9なんて出している場合じゃない。

    余談:
    UITextViewで、画面上に表示されている範囲を知る方法が欲しいのだけど、実装してくれないかなぁ。

    Objective-Cの隠れた仕様

    $
    0
    0
    X-BASIC for iOS v3.00の開発では、Objective-C、というかそのコンパイラの隠れた仕様に悩まされた部分があった。それを記録しておく。

    (1)Objective-Cでの %ld の l判定はlong と比較されているので実質ではない
    何が言いたいのかというと、64ビットでlong!=intで弾かれるのはいいとして、
    32bitでint=longでも「異なる」と判定されるということ。
    X-BASICでは32ビット環境ではLong = longと定義していたのを、64ビット環境でLong = intと変更した。(LLong=long long;64bit)。32ビットのままでなければならない処理が山のようにあるからだ。ところが上記の仕様のため、従来%ldでいけたところをすべて%dにしなければいけなくなった。ところが%dにすると今度は32ビット環境下で警告を食らうハメになる。というわけで、結局都度(int)で型キャストするという手をとった。

    (2)Objective-CのC型文字列の"~"はchar *であってsigned char *ではない。
    これも警告で引っかかった。
    確かにcharはコンパイルオプションでunsigned にもできるけど、でもそうでない設定の時はchar = signed charだろう?これはCの規約違反だと思うのだが。

     (3)定義済み定数__FUNCTION__ は char [n]と定義されるため、”%s”,__FUNCTION__では受けられるけど、func(char *mes)に対してfunc(__FUNCTION__)にすると警告が出る
     わけわからんかもしれないけど、やってみるとわかる。

     (4)NSUserDefaultで、setBoolしたものはintegerForKeyで読める
        [defaults setBool:NO        forKey:@"BOOL"];

        BOOL       ynb=[defaults    boolForKey:@"BOOL"];
        NSInteger yni=[defaults    integerForKey:@"BOOL”];
       どちらでも読めている。

    まあ、普通はしないけど、バージョンアップで記録内容をBOOL範囲からNSInteger範囲にしなければならなかったので。

    (5)array=[@"A\nB\n" componentsSeparatedByString:@"\x0a"]の結果は
    [0]=@"A\n",[1]=@"B\n",[2]=@""となる。
    最後に@""が入った要素ができるのが味噌。countで得られる値ー1が行数である。



    ドイター フューチュラ28の紹介

    $
    0
    0


    紹介記事はこちら
    リンク先のシステムではHTMLが貼れないので、こちらでAmazonへのリンクを作ってます。

    Windowsが休止から勝手に復帰するときの対処法

    $
    0
    0
    なんか昨日あたりから、Windows7(Pro 64ビット)が、休止から勝手に復帰する現象が発生していた。「スリープ」ではなく「休止」。

    スリープはマウスやキーボードの押下で復帰するが、休止はそんなことはない。基本的には電源ボタンの再押下しか復帰方法はないはず・・・だと思っていた。

    しかし、休止させてから10分ほどすると勝手に復帰している。電気の無駄でもあるし、そうでなくてもこの糞暑い時に暖房器具にも近いPCが起動しているのは宜しくない。
    ということで調査を開始。

    スリープからの復帰を止める方法はいくらでも情報があるが、さすがに休止からについては殆ど無い。あったとしても、ほとんどは休止とスリープを混同してる。

    念のためキーボード、マウス、Bluetoothのプロパティーからスリープからの復帰も禁止してみたが、変わらず。

    考えられる可能性として、有線ネットワークからWakeupLANを受信して再起動している事が考えられた。念のため調べてみたが、それもONになってなかった。

    とあるサイトに、「電源オプション」の詳細設定でスリープの「次の時間が経過後休止状態にするを有効にしていると、休止にならずに復帰することがある」という情報があった。調べてみたが、うちでは「なし」になっている。しかしその下に今まで見たこともない設定があった。

    それが「スリープ解除タイマーの許可」で、「有効」になっていた。まさかと思ってこれを「無効」にしてみたら直った。



    全く用途不明だが、スリープを指定時間で解除するタイマーがあるようだ。しかもそれがスリープだけでなく休止に対しても効いてしまっていると。そりゃバグだろう。

    ということでまとめ。
    (1)コントロールパネル~電源オプションを開く
    (2)省電力(他のプランでも可)を選択し、プラン設定の変更をクリック。もしくは左のリストから「電源プランの作成」をクリックして新規にプランを作成する(上のはそれで「カスタムプラン1」というのを作った時のもの)。


    (3)詳細な電源設定の変更をクリック
    (4)すると上記の電源オプションの詳細設定が出てくるので、スリープ~スリープ解除タイマーの許可を開く
    (5)設定を「無効」にする
    他の設定も必要に応じて変更すればいい。

    ちょうどWindows10が公開された辺りからだったので、もしかしたら、それを通知するプログラム(GWX.EXE)が悪さしているのではとも疑ったが、そうではなかった。ウイルスも疑ったが、ウイルスバスターの検査では引っかかるものはなかった。

    しかし、こんな設定変更した覚えはない。Windows7(XP以降全て)のファイルシステムNTFSは、しょっちゅうファイルが破壊される、極めて弱いファイルシステムなので、何かの拍子に関連情報ファイルが破壊されたのかもしれない。

    ス リープ解除の時間をどこで設定するのかはわからない。ここではない。これが有効になっていてもそのスリープ解除タイマーの設定さえなければ自動復帰しない はずで、何かのプログラムがそれを指定したのかもしれない。それがGWXではないという保証はない。いずれにせよ、解除タイマーを無効にすれば勝手に復帰 はしなくなる。

    もし同様のことでお悩みの方がいらっしゃれば、お試しを。

    花子で作るUIToolbarアイコン

    $
    0
    0
    UIToolBarのアイコンはPNGのアルファチャンネルというものを使って描かなければならない。

    この画像は特殊なので、一般的なグラフィックツールでは作成できない。

    Photoshopが一般的らしいが有償である。無償ではgimpやinkscapeを使うらしいが共に英語版で
    しかも操作が直感でわからない(と思う)上に、gimpは非常に重いので過去に断念している。

    Windows上で、なんとか花子や花子フォトレタッチという手慣れたツールで出来ないか調べた結果、出来た。いかにその方法をまとめる。
    1. 何らかのツールでグレースケールのPNG画像を作る。うちでは花子2013と花子フォトレタッチを使った。花子フォトレタッチでは、保存時にグレースケール、透過はなしを指定する。
    2. 花子フォトレタッチでネガ・ポジ変換をかける。
    3. ここからNetPBMのWindows版を入手する。グラフィック加工ツール群である。
    4. アーカイブの中からbinフォルダの下を適当な場所に展開、libの下も同フォルダに展開する。
    5. コマンドプロンプトを起動。set RGBDEF=./rgb.txtを実行。
    6. グレイスケール画像を透過マスクPNGに変換する方法に従って各ツールを実行していく。
    これで作成した画像をiOSに読み込ませたらうまく行った。

    各ツールの実行をバッチファイルにしてみた。これをツールと同じフォルダにal.batという名前(適当で構わない)で保存した場合、

      al pngファイル名 x幅 y幅

    で、PNGファイル名は拡張子を付けず指定、その画像幅を後に指定する。
    例えば64*32のicon.pngというファイルを 変換する場合、

     al icon 64 32

    とすると、変換結果としてiconA.pngというファイルが出来る。これをUIToolbarに入れればよい。

    これが出来たので、ようやくUIToolbarのアイコンが自作できるようになった。いや、今までも作ったことはあるけど、白黒の2値画像しか作れなかったので。

    ---↓ここからバッチファイル---

    @echo off
    if "%1"=="" goto ERR
    if "%2"=="" goto ERR
    if "%3"=="" goto ERR
    set RGBDEF=./rgb.txt
    pngtopnm %1.png > %1.pgm
    ppmmake black %2 %3 > black.pgm
    pnmtopng -alpha=%1.pgm black.pgm > %1A.png
    del black.pgm
    del %1.pgm
    goto END
    :ERR
    echo al pngファイル名(拡張子は不要) x幅 y幅
    :end
     
    ---↑ここまでバッチファイル---


    おまけ。
    iOSでPNGの透過を有効にするときは、256色にするか、インデックスカラーというものにしなければならない。普通にフルカラーで透過色を付けても透過しない。
    インデックスカラーへの変換は、フリーのgimpかPhotoshopで出来る。

    gimpの場合は、画像>モード>インデックスカラー>255色で変換し、ファイル>エクスポートでPNGで出力し直す。



    GRANDIA II for PCをPS3コントローラーで操作する方法

    $
    0
    0
    DreamCastの名作PRG、GRANDIA IIのPC版が出た。とはいっても英語版の、しかもリメイク版。
    たまたま知ってやり始めたのだけど、キーボードでの操作ではまともにゲームにならない。
    このゲームは3Dで表示されるため画面回転というかカメラ視点を変えないと見えない物が多く、また移動の際も歩きから走りまでを無断階で調整でき、かつ同時に回転も出来ないといけない。キーボードではこれが出来ないからだめ。

    ではあったが、PS3のコントローラーをWindowsに接続したら格段に操作性が良くなった。その接続とGRANDIA IIからの正しい認識にはちょっと苦労があった。それを箇条書きにしておく。
    1. PS3コントローラーをUSBケーブルでWindowsに接続する。すると標準のドライバーで認識される。これはすごいことだが、そのドライバーではGRANDIA IIには不足なので、SONY提供のドライバーに差し替える。
    2. ここからコントローラーのドライバーをダウンロードし、展開しておく。
    3. コントロールパネル~デバイスとプリンター~PLAYSTATION3コントローラーで右クリック~プロパティ。
    4. ハードウエアのタグからプロパティ
    5. ドライバーのタグを開き、削除を押す。これで標準ドライバを外す。
    6. ドライバの更新から先ほどドライバを展開したフォルダを指定する。これで新しいドライバがインストールされる。
    7. これで一応GRANDIA IIが操作できるようになるが、そのままのボタン配置では非常に使いにくいので変更する。GRANDIA IIにはボタン配置を変更する画面があるが、このPS3コントローラーに対しては全く効かない。なので、ドライバ側で変更をかける。
    8. 展開したドライバのフォルダの中にあるsixaxistool.exeをダブルクリックする。画面上何も起こらないように見えるが、タスクバーの中にアイコンで入っているので、右クリックから設定編集。
    9. ドライバ設定をクリック、空きを選ぶ
    10. ボタンアサインを変更する:ボタン0→○、ボタン1→×、ボタン2,3→なし、ボタン4→L1,ボタン5→R2、ボタン7→△、
    11. 設定保存を押して名前をつけて保存する(GRANDIA IIとか)
    12. 適用アプリケーションにgrandia2.exeを設定する(上の画像は入れる前)
    13. 設定画面を閉じる
    14. もう一度タスクバーから右クリック、先ほど付けた名前が出ているので、それを選択
    これで、PS3コントローラーで操作できるようになる。ただし、起動時の「PUSH START BUTTON」だけはボタンが効かないので、キーボードを押す。

    Windowsを再起動または休止明けの時にはコントローラーが認識されなくなるので、一度ケーブルを抜いて再接続が必要。

    なお、Blutoothでの接続ができるかどうかは不明。可能そうな気もするけど、必要がないもので試してない。→上記ドライバではそもそも無理な上に、他のを使ってもBlutoothのポートを1つ占有してしまうようで、実用的ではない。PS3コントローラー用ドライバーを用意しているBluetoothアダプタも売れている。でもそれくらいするなら、USB接続のままでいいや。

    PS3コントローラーをWindowsに接続するドライバーにはmotioninjoyというのもあるが、やたら広告が出てきて非常に見づらい上に、うちの環境ではインストールすら出来なかった。このSONY純正で十分なので、これはおすすめしない(大元のHPも閉じられているようだし)。

    これで大体DreamCastと同じ操作ができる。左スティックで歩くから走るの無段階切り替え移動、L1/R1で回転、○で選択、×でキャンセル、三角でメニューとなる。本当に格段に操作性が良くなり、ようやくゲームになる。

    それは良かったのだが、いかんせんゲームのシステム的出来が悪い。
    とにかく引っかかりが多すぎる。音が出るたび一旦停止、時々敵のキャラクターが消えるし、画面は波打ってる。音楽はループする前に一旦途切れるからおかしい。DreamCast版を知っていると「この程度で製品にする?」と思えるくらい。PS2版も出来は良くなかったが、それ以下。いくら高解像度でもなぁ、と思う。

    まあ、買ったからには最後までやるけど。

    ・・・追記
    ゲームの起動は以下の画面から行う。複数の場所から起動ができそうなのだけど、他の場所から起動しようとするとエラーが出て起動できない。
     他にも色々とバグがいそう。アップデートが時々発表されているから、自動アップデートはONにするのが良いかと。本当にアップデートされているか確認する方法がないけど(ファイル日付から判断するにされてない気もする)。
    →次回起動時に更新されると判明。V1.03でだいぶ設定項目が増えたけど、前の設定が消えてしまうようで、設定し直しが必要。急に画面幅が変わってるし、英語音声になったので驚いた。
    なお、バージョンは設定画面の右下に表示されている。

    iOSシミュレーターの仕様(Xcode6.4編)

    $
    0
    0
    Xcode6.4でのiOSシミュレーターの隠れた仕様を列記しておこうと思う。
    主に自分の忘備録。

    ・AudioToolbox.frameworkのAudioServicesPlaySystemSound()はiOS7では音が出ない
     iOS8では音が出る。またAVAudioPlayerはiOS7でも大丈夫。
     音が出ないから散々調べたらこれだった。

    ・実機にしかないハードウェア機能は当然使えない
      カメラ、モーションなど

    ・eMailはOK
    ・AirPrintもOK

    ・アプリの言語切替は、シミュレーター上の設定〜一般〜言語環境ではなくXcodeのEditScheme〜Application Languageで切り替える
    ただしこれで切り替わるのはアプリケーションの言語だけなので、OSの設定の言語は元のまま。なので、SettingBundleでOSの設定に追加している時にその言語別表示を確認するには、OSの言語設定も別途変更する必要がある。

    ・ProfileでAlloc/LeaksはiOS8でしか動かない
     iOS7ではエラーが出てしまう。
     AppleはiOS7外しにかかっているのがよくわかる。でも、それを開発者に強要するのはどういうものかと。

    ・キーボードの設定はHardware〜Keyboardにある

    ・[UIDevice currentDevice]model]が"iPad Simulator"または"iPhone Simulator"としか返してこない
     シミュレートするデバイスを切り替えても一緒。
     これを使うなら実機が必須ということ。機種別切り替えが必要なプログラムのデバッグにはシミュレーターが使えないってどういうこと?

    ・・・

    それはそうと、Xcode6.4はブレークポイントがおかしいと思うのだけど。
    設定した場所で止まらない。
    一見設定した場所で止まっているようで、実はぜんぜん違う場所で止まっていることが多発している。
    このバグのせいでブレーポイントを使ったデバッグがまともにできない状態。
    細かくNSLog()を入れて、チェックするしかない。
    アップルはもっとデバッグして。

    NSDataの内容をC的に変更する方法

    $
    0
    0
    NSDataは基本的には一度初期化するとその内容を変更することはできない。変更する場合はNSMutableDataを使うと。少なくともメソッドを使った方法ではその通りなのだが、C的に変更するなら方法がある。

    NSMutableData *mdata〜
    char *p=(char  *)[mdatamutableBytes];  

    NSData *data=〜
    char *p=(char  *)[data bytes];

    とすると、内容を示すポインターを得られる。
    ここでpのアドレスからに改変を加えるとNS(Mutable)Dataの内容が変わる。Mutableでなくてもいける。

    NS(Mutable)Dataの中ではデータは連続した領域に保存されているようである。

    ここ1つ注意すべきは、この方法で内容を更新するときは、絶対に元のデータの範囲を超えないこと。メソッドによるアクセスとは違い安全機構は働かないので確実にシステムが落ちる。

    そしてもう1つ。この方法で書き換えても効果が出ないこともある。

    AVAudioPlayerは内部でのデータの保持にNSDataを使っている。それは

    AVAudioPlayer *av=[[AVAudioPlayeralloc]initWithContentsOfURL:url error:&error];
    char *p=[av.data bytes];

    でアクセスできるが、ここでpからの内容を書き換えても音は変化しない。おそらくは、元の音声データが.dataにあるが、実際に音声出力用データはinitWith時に別に複製が作られているのではないかと思う。

    確保した音声データを直接書き換え音を変更しようと思った実験の結果。

    iOS9の変化点

    $
    0
    0
    iOS9で変わった点を記録していく。

    (1)フォントサイズが変わった
    X-BASIC'では同じフォントを使っていても表示サイズが異なる結果になる。iOS9のほうが一回り小さい気がする。

    (2)バックグラウンドでreallocできなくなった
    実行時に
    「This application is modifying the autolayout engine from a background thread, which can lead to engine corruption and weird crashes.  This will cause an exception in a future release.」
    が発生する。一応警告(とダンプ)だけで今は動いているようだが、将来的には落ちると書いてあるので対策したほうが良さそう。一番単純な対策はその部分をメインスレッドで行うようにすればいいのだが、reallocだけメインに持っていくのは無理。全体の動作の見直しが必要。

    realloc以外でも発生する可能性はある。




    MacOSX El Capitanの問題

    $
    0
    0
    1台のMacにEl Capitanを入れてみた。基本的にはYosemiteと外見も似てて使い勝手の面では問題というか慣れが必要な部分は少なそうなのだけど、1つ大きな問題を見つけた。

    ・ディスクユーティリティーでNTFSのディスクの修復ができなくなった。

    NTFSのドライブに対してはFirstAidのボタンが有効にならない。
    今までは、BOOTCAMPでWindowsをインストールしている場合、Mac側のディスクユーティリティで、Windows上のSCANDISKでは復旧できない問題を修復できたのだが、できなくなってしまった。NTFSはディスク内容をしょっちゅう破壊するダメダメフォーマットなのでこの機能がとても重要だったのだ。

    ということで、一旦入れたけどYosemiteに戻した。AppleにしてみればNTFSのサポートなんてしなくても問題じゃないというところなんだろうけど、こんな重要な機能削らないで。

    Mac mini 2014上のBootcamp Windows7をWindows10に確実にアップデートする方法

    $
    0
    0
    Mac mini 2014上のBootcamp Windows7をWindows10にアップデートしようとすると、エラーが出てインストール出来ない。
    Windows10が出てすぐの時は出なかった思うのだけど、最近はIntel Iris5100が互換性がないとエラーが出てしまう。

    VirtualXPも使っていたのでWindows10へのアップデートは先延ばしにしていたが、別のマシンに入れて、案外互換性が高いことと起動の早さにほだされて、暇になった今アップデートすることにした。
    (VirtualXPは、リアルXP機を用意し、TeamViewerで遠隔操作できるようにすることで解決。)

    というところで、Mac mini2014上Bootcamp Windows7をWindows10に確実にアップデートする方法。もちろん大前提として、Windows7がBootCampですでに動いている必要がある。

    (1)マイクロソフトのサイトからWindows10のインストールディスクをUSBメモリに作る
    MediaCreationTool.exeというのを使う。 4GB位あれば十分らしい。
    CDに作ることもできるが、isoファイルをCDに焼くには別アプリが必要なので面倒だし。

    (2)コントロールパネル〜デバイス〜ディスプレイでIris5100を削除する
    ここで再起動はしない。したら、再起動した時に再度ドライバをインストールされてしまう(やり直し)。

    (3)USBメモリ上のSETUPを実行してWindows10のインストールを開始する
    GWX(Windows10のアップデートプログラム)からのアップデートはできない(まだIrisエラーでひっかかる)。

    (4)終了まで待つ
    途中、Bluetoothマウスが切れてしまうことがある。
    うちではBluetoothマウスを2台接続しているが、1台目はOK、2台目が切れた。
    インストール途中でApple提供ドライバがすべて無効になってWindows標準ドライバだけになるから。念のため有線マウスがあるといいかも

    これでWindows10がインストールでき、起動するはず。でもその後も作業は続く。

    (5)AppleSoftwareUpdateを実行
    Bootcamp6更新プログラムとApple入力デバイス更新プログラムをインストールする・・・と言いたいところだけど、まずは後者のみインストールする。なぜなら、Bootcampのインストールには多分失敗するから。途中でエラーが発生し、その後進まなくなる。このBootcamp6更新プログラムは以下の方法で別途導入する。
    →成功する人もいるようなので、一度やってみて途中で止まるようなら下記手順を取ればよいかと。10分以上もブログレスバーが動かないことがあれば失敗。

    (5-1)ここ→Bootcamp6からBootcamp6を直接ダウンロードする。結構でかいので注意。
    (5-2)ExpLzhなどWinRARが展開できる書庫展開プログラムで開く(EXEだけど実態は書庫)。
    (5-3)中には2つのフォルダがあるので、適当な場所に展開する。
    (5-4)BootCampフォルダの中にDrivers\RealTekがあるので、これを別の場所に移動しておく。
    (5-5)BootCamp\Setup.exeを実行する。
    (5-6)終了後、Windowsを再起動する。
    (5-7)移しておいたRealTekの中のRealTekStup.exeを実行、また再起動する。
    RealTekだけでなくもう1つエラーが出ているような気がするけど、どれか不明。デバイスマネージャで見てもエラー出てないし。そのまま無視しても動作に問題はないような感じ。

    このBootcamp6導入を行わないと、画面ドライバがインストールされないので解像度の変更などができない。Iris5100の対応ドライバもここで入る。なお、IntelのサイトにあるWindows10ドライバでもちゃんと表示できる。なぜGWXがIris5100対応してないと表示するのか全くの謎。


    とにかく(2)(3)(5)が肝。

    これでWindows10をMac mini2014上にインストールできる。ただし、Windows10由来の問題はいろいろあるので、それは次のネタで。

    Windows10の互換性とか問題点とか

    $
    0
    0
    で、苦労して導入したWindows10だけど、果たしてその導入価値があるかどうかである。
    今のところ「価値はない」というのが概ねの感想。なぜか。

    (1)遅い。
    とにかく反応が遅くなった。起動も遅い。うちの別のマシンは起動がものすごく早くなったのだが、BootcampのMacでは全く早くならないどころかかえって遅くなった。一から起動も休止明けも。起動だけでなく、起動後の反応も全体的に遅い。起動が早くなるのは、ドライバをすべてWindows10用にしなければならないのかもしれない。

    (2)文字が綺麗でない
    Windows7の標準フォントのほうが数段綺麗。Windows10の標準フォントはなんか妙に縦長で小さくて見みにくい。他の人もそう思うようで、こんなツールもある。Windowsシステムフォントはこれで大方変更されるけど、一部まだおかしいところがあるし、アプリごとにフォント設定を持っているものは影響が及ばないので困る(Chromeも一部そんな感じ)。
    Appleもそうだけど、中華漢字フォントを日本語圏で使うのはヤメれ。本当に汚い。中国の陰謀(圧力)じゃないのだろうかと思ったりする。日本語漢字は中国漢字とは似て非なるものだということを英語圏の人間にわからせなければ。

    個別フォント設定
    (2-1)Skype:ツール~設定~チャット設定~チャット表示スタイル~フォント
    (2-2)Chromeの表示フォントを強制的に変更するときはこちら。標準のフォント設定だけではうまくフォント設定されないことがあるようなので(asahi-netのブログ管理画面など)。これでもうまくいかない=Firefoxとは異なる表示になるサイトもあるので、Chromeのバグではないかと思ったりもしてる。


    (3)アイコンが綺麗でない
    アイコンもなんか下手な絵に変わって美しくない。フラットUIなんてAppleだけのローカルはやりにしてくれ。
    一部は以下のようにして変更できる。ただし、Windows7のファイルが必要。

    (3-1)Windows7のWindows\System32\imageres.dllをコピーしてくる。今後アイコン表示にこのファイルが必須になるので、imageres7.dllとでもリネームして、Windows\SysWow64\にコピーする。Windows10にも同名ファイルがあるので、気をつけること。
    (3-2)コントロールパネル~個人設定~デスクトップアイコンの変更を開く
    (3-3)変更したいアイコンを選択し、「アイコンの変更」で、参照を押してWindows\SysWow64\imageres7.dllを選択する。PCとネットワークはこの中にある。
    (3-4)ゴミ箱だけはここにないので、ここからダウンロードしてくる。解凍して、同じ場所にコピーし、同じようにして変更する。


    (4)日本語入力が起動毎にMSが設定される。
    7では優先順位を付けておけば、その最高優先度のものが標準では使われるが、10ではとにかくMSのを使わせようとする。
    コントロールパネル~言語~詳細設定~入力方式の切り替えでアプリウインドウごとに異なる入力方法を設定するを外すと一応大丈夫になるが、代わりにアプリごとの設定ができなくなる(この場合、設定してないアプリはすべてMSが一番になる)。
    →これをしても、再起動するとまたMS一番にされてしまう。MS日本語入力削除したろか?

    (5)Firefoxのブックマークツールバーがおかしくなる
    FirefoxはWindows10上で再インストールした方がいいみたい。プロファイルを全バックアップして、 アンインストールして、再度インストールする。バックアップ方法についてはここ

    (6)多くの設定は引き継がれるが、キーボードの入れ替えなどしていると外れる。
    キーボード関係のレジストリが変わったからだと思われる。
    うちではChangeKeyというのを使っているが、再登録が必要だった。

    (7)コントロールパネルがわかりにくい
    一応、スタートメニューのところで右クリックすると旧来表示が出せる。
    ただし、次のClassicShellを導入するとできなくなる。

    (8)スタートメニューが使いにくい
    Windows7のそれに慣れていると、10のはとても使いにくい。50音分類なんて要らない。
    なので、ClassicShellというのを導入して、出来るだけ7のに近づける。 標準では英語になっているので、設定で日本語を選んでおく。
    同様のものは他にもあるようなので、好みに応じて導入するといいかも。
    なお、(7)で書いたとおり、これを導入するとスタートメニューが右クリックでのコントロールパネル前表示ができなくなるが、スタート~右側のコントロールパネルの上でダブルクリック、で表示可能。

    (9)スタートメニュー横の検索またはCortanaの入力欄が邪魔
    タスクバーの上で右クリック、Cortana(または検索)~表示しないを選択する。

    (10)デスクトップの整列条件が標準に戻るので再設定が必要

    (11)時計の自動同期がなされない。というか、時計が狂ってる。
    標準で設定されるインターネット時刻の同期先(time.windows.com)がエラーを起こすためで、コントロールパネル~日付と時刻~インターネット時刻~設定の変更でtime.nist.govなどを選んで今すぐ更新~OKしておく。

    (12)Google Chromeでアドレスバーのところに検索文字を入れて検索しようとすると失敗することが非常に多い
    なので、別途検索を選んで行うしかない。ものすごく面倒。同じバージョンのChromeでもWindows7では発生しなかったので10の問題。
    →一旦空白画面が表示されて、10秒以上経ってから結果が表示されることもある。Chromeは昔は軽快だったけど、今やIE以上に遅い。利用価値がどんどん下がっている。
    Windows10上では前述の表示フォントの問題もあり、もはや使いものにならない気もしてる。

    (13)エクスプローラーの操作がリボンで非常に使いにくい。
    リボンはMSが作った最悪のインターフェースだと思う。目的の操作をするの手間が掛かり過ぎるし覚えにくい。これもClassicShellである程度従来型に近く調整できる(標準ではいまいちだけど)。

    (14)pdfを開こうとすると、規定のプログラムをAcrobatに設定してもAcrobatDCで開くようになった。
    しかたないのでDCを削除。なんかアプリケーションの割当て周り(のWindows7からの移行部分)にバグが有ると思う。

    (15)コントロールパネル内でマウスのホイールが効かないことがある
    Windows10の設定から開くとダメになる。旧来形式で開くとOK。
    ものすごく不便。この意味でもWindows10形式コントロールパネルは不要。
    →(20)にまとめ

    (16)プログラムが実行できないことがある
    アップデートとかすると、

    と表示されて止められることがある。フリーウエアに多い。
    もし確実に問題がないことがわかっているなら、「詳細情報」を押して、

    を表示して、「実行」する。一度実行すると記録されるので、2回目以降は表示されない。

    (17)IO-DATAのRAMディスクソフト「RamPhantomEX」はそのままでは使えない状態になる。
    ドライブは出来ており一見使えそうに思えるが、アクセスすると「ファンクションが間違っている」というエラーが発生する。
    回避するにはフォーマットをFATにする必要がある。NTFSではエラーが発生する。
    V1.01およびWindows8対応のV1.10で確認(FATの確認は後者のみ)。

    (18)e-TAXなどで使う電子カードリーダーRW-5100は接続するだけでOK。ドライバは自動的にインストールされる。
    通常なら接続から5分もすれば利用可能に成ると思う。
    SHARPのサイトからWindows8用の動作確認ツールをダウンロードしてきて確認すればなおOK。
    とはいえ、住民基本台帳カード内の電子証明が有効期限切れだともう更新できないので、マイナンバーカードにする必要があり、しかもそのカードは非接触式なのでこのリーダーは使えない。

    (19)IO-DATAのマッハドライブの設定からCドライブが外れる可能性がある。
    なんかCドライブのアクセスが早くないような気がして調べたら外れてた。
    念のため確認したほうが良い。

    (20)Edgeでマウスホイールが効かない
    うちではマウス動作支援のためにZtopと言うフリーウエアを導入しているが、これが原因だった。
    Windows10形式の設定でマウスが効かないのもこれ。
    解決法は、すべての設定を再度し直すこと。元の設定を書き留めておいて、いったんすべての設定をOFFにして「OK」(ZTopも終了したほうが良いのかも)。再起動して設定を戻して「OK」。うちの環境ではこれで治った。64ビット環境ではZTop/ZTop64の両方で設定。以下がうちでの動いている設定。ひょっとしたら、「ホイールを直下のウインドウへ送る」のチェックは入れたらダメなのかもしれない。




    Ztopの他、類似のソフトで同様の現象が発生するらしい。こちらも参照



    とにかく、技術的にはどうなんだか知らないけど、遅い+デザイン的にダサすぎるので、Windows7で問題ない人にはあんまりおすすめしがたい感じ。DVDやBluray再生ソフトは軒並み使えなくなるし、VietualXPも使えないしで、このアップデートはいろいろと自分で出来る人向けかと。アップデートを全員に「ほぼ」強要しているマイクロソフトの馬鹿さ加減には呆れる。

    Windows10が休止から勝手に復帰するときの対処法

    $
    0
    0
    以前「Windows7が休止から勝手に復帰するときの対処法」というのを書いた。こことASAHI-NETのブログにもアップした。

    で、Windows10にしたら、また発生するようになってしまった。電源周りの設定はWindows7の時のままなのに。どうも10特有の問題がいるらしい。ということで、その対処方法。

    ・・・

    Windows10で休止が勝手に開けてしまう理由は「WindowsUpdate」と「MediaCenter」。前者は10では自動化されているのだが、それが悪さしている。後者はMediaPlayerの一機能が勝手に起動している。これはWindows7からアップデートした時だけかもしれないが、Windows7上でその機能を止めていても10に移行した時に勝手に入ってしまう。ということで、それらを止める。

    (1)スタート~Windows管理ツール~タスクスケジューラーを起動する
    (2)左側のタスクスケジューラライブラリ~Microsoft~Windows~UpdateOrchestratorを選択
    (3)中央からRebootをダブルクリック
    (4)Rebootのプロパティが開くので、「条件」のタブで「タスクを実行するためにスリープを解除する」のチェックを外して「OK」。
    Reboot設定
    (5) 「トリガー」のタブで指定日時を選択、「編集」で開き、「有効」のチェックを外して「OK」。


    (6)左側のタスクスケジューラライブラリ~Microsoft~Windows~WindowsUpdateを選択
    (7)中央からAutomatic App Updateをダブルクリック
    (8)「条件」のタブで「タスクを実行するためにスリープを解除する」のチェックが入っていたらを外して「OK」。
    (9)中央からScheduled Startをダブルクリック
    (10)「条件」のタブで「タスクを実行するためにスリープを解除する」のチェックが入っていたらを外して「OK」。ここでエラーが発生するときは無視しても問題ない(と思う)。

    (11)左側のタスクスケジューラライブラリ~Microsoft~Windows~Media Centerを選択

    (12)中央からmcupdate_scheduledをダブルクリック
    (13)「条件」のタブで「タスクを実行するためにスリープを解除する」のチェックを外して「OK」。

    (14) 「トリガー」のタブで毎日を選択、「編集」で開き、「有効」のチェックを外して「OK」。


    手間は多いけどやることは同じ。スリープ解除をさせないのと有効を外す。

    ところが、これを設定してもまだ勝手に起動することがある。その理由は、「WindowsUpdateが上記設定を勝手に戻す」から。 なので、WindowsUpdateを済ませた後には再度この設定を確認する。殆どはReboot内2つの再設定だけでOK。
     
    なお当然のこととして、これをするとWindowsUpdateは自動ではかからなくなるので、手動で行う必要がある。

    起動時または休止明けにチェックするというオプションがあればいいじゃん、と思うのだけど、なんで勝手なことするかなぁ、MSは。「小さな親切、大きなお世話」というのがまだわからんのだろうか。今までさんざん失敗して叩かれてるのに。

    Windows10で不具合を起こすソフト

    $
    0
    0
    Windows10で不具合を起こすソフトを列記しておく。
    なお、当方ではWindows10はお払い箱にしたので、今後検証や回避法調査は不可。

    ・Justsystem製品でヘルプ時に必ずインストールを求めてくる問題の解決策
    Windows10ではうまくいかない

    ・Ztop/64
    「ホイールを直下のウインドウへ送る」をONにしているとEdgeや設定などでホイールが効かなくなる

    ・Chrome
    検索が応答しないことがある
    →Chrome49のバグ。 Windows7でも多発。

    ・てきぱき家計簿マム7
    アップデートが出来ない

    ・ラベル屋さんHOME8
    アップデートが出来ない

    ・RamPhantom
    NTFSに出来ないことがある。FATならOK。

    ・Canonプリンターの付属ソフト
    対応したプリンターがないと言われることがある。Windows8対応ドライバを入れ直す。

    ・やさしくデジタルファイリング9
    ファイルアイコンがおかしくなる。

    Google Chromeでマウスホールが効かない場合の解決法

    $
    0
    0
    Logicoolのマウスを使っていて、Google Chromeでマウスホイールは効かない場合、
    Chromeにアドインで入るSet Pointが原因なので、。それを外してChromeを再起動すると一応効くようになる。「一応」と書いたのは、効かない場面もあるから。

    Ztopを導入している場合は、これのために効かなくなる。この場合、Ztopに以下の設定を入れて回避する。

    ホイール個別設定に新規で1つ追加。タイトルは「Chrome」とでもしておく。
    この設定を利用するにチェックを入れる
    クラス名:Chrome_RenderWidgetHostHWND
    「ホイール転送を許可する」と「透過してホイールを転送する」もチェックすると良いかも。
     他は全部外す

    これでホイール個別設定有効をチェックしておく。
    これで解決。

    Viewing all 44 articles
    Browse latest View live