Surface3 + Windows10

若干加筆。


先週、Windows10に早速アップグレードしました。僕的にはいい感じです。Windows8.1に感じた不満点がゴッソリなくなってます。

Windows10・・・というわけではないのですが、Surface3での気になって眠れない点。

  1. スリープから復帰すると、たまにスクリーンキーボードがどうやっても出てこない時がある。結果ログインもできず途方にくれる。
  2. スリープから復帰すると、高確率でMicroSDカードが認識せず、エクスプローラが固まる。カードを抜き差しすると正常に認識されるが、その後の挙動がめっちゃ不安定になる。メモリカードが粗悪なのかも。でもトランセンドだし・・・。
  3. スリープから復帰するとたまに全体的にモッサリになって再起動を余儀なくされることがある。
  4. Windows10にアップグレードしたらOnenoteの機能がなんか貧弱になった?Windows8.1のときはペンの太さとかもっと柔軟に選べたと思うんだけど・・・気のせい?ペンのUIが変わってちょっとガッカリ。
  5. デフォルトの動画閲覧アプリがとにかく使いにくい。
  6. サーフェスペンの利き手の設定はどこでやればいいの?
    bluetoothデバイスからSurfaceペンを削除したら設定に出てきました。ん?
  7. US配列版のタイプカバーを使って、ドライバをAX配列のものにして半角・全角トグルを右ALTに割り当てたんだけど・・・無視されるようになった。もうこの方法は駄目なの?
  8. Microsoft Edgeで、全画面表示はないの? タブ切替はWindows8.1の時の方がよかったなー。
  9. 解像度を150%にすると、フォントがモヤっとするのはなんでや?
  10. 「映画&テレビ」と表示されているアプリで、動画ファイルが入っているフォルダーを追加したが、一向に現れない。5分ほどあーでもない、こーでもない、としてたら突然現れた。
    しかも、後からその追加したフォルダに動画ファイルを追加しても全く更新されず一覧に出てこない。なんじゃこれ? 純正のアプリが「ふざけてんのか?」レベル。こんなアプリ作ったやつはとっととクビにしてくれ、レベル。
  11. 今更だが、ストアアプリに「使える」アプリが一つもない。っていうか、Officeアプリぐらいしか使えるものがない上、有料ときた。マイクロソフトが率先してアプリをガンガン作ってラインナップをそろえるべきじゃないのか? いくら開発者に作れ、作れ、と開発ツールを無料にしても、だめでしょ? やり方が違うでしょ? 作ってほしいのなら、まず、自分らが率先して使えるアプリを作らんかい!
  12. その他、眠れなくなる点は随時追加予定。。。

総じてSurface3+Windows10は、パソコンとして使う分には良い組み合わせだと思います。Windows7からのアップグレードならば、納得いくと思います。

ですが、Windows8/8.1を使い込んでいる人は暫く待った方がいいと思います。

そもそも

  1. ウェブ閲覧
  2. 動画の視聴
  3. テキストエディタでの編集作業
  4. スクリプト実行環境
  5. TeraTermの利用

の5つをどこでも出来るようにと、買ったSurface3ですが・・・スリープ復帰時の不安定さが気になって、夜も眠れません(..;)  ま、再起動すりゃ直るので、ま、いいか。

Windows10をしばらく触ってみて、・・Windowsって、こんな難しいOSだったのかな・・・と思った。とにかく、知らないと何もできない。調べないと使えない。調べるツールとして、左下にデカデカと検索ボックスはあるが、何を入れていいのかわからない。何か入れると「問題が発生しました」となる。なんじゃこれ?

長年Windowsを使ってきたけど、そろそろWindowsを使うのやめようかな。。。と一瞬思った。

Text::CSV_XS::version を確かめなさい・・・

全県の郵便番号CSV(ZIP書庫)ファイルを日本郵便のサイトからダウンロードして、解凍して、SQLiteのテーブルへぶち込む、一連の流れをperl で書いた。

そもそもの発端は、メールフォームや会員登録フォームなどで住所を入力する手間を省くため郵便番号から自動的に住所が挿入される、よくある仕組みを実装するため、変換のベースとなるCSVデータをSQLiteにインポートすれば、SELECT一発で引けるやん、という訳。

ここで、上記のCSV => SQLite にインポートするため、Text::CSV_XSモジュールを使った。まぁ、それが当然ですよね。このスクリプト自体はすぐ出来たんですが、作成・実行をWindows7上のActivePerl 5.14.1 で行った。なんら問題ない。

#CSVからレコードを読込データベーステーブルに登録する。
# $dbh   :DBIハンドル,
# $table :テーブル名
# $fin   :CSVファイルのIOハンドル
# utf8,h2z_,sjis は 文字コード変換のために定義した関数
# eval_result はエラー処理のために定義した関数
sub csv2db
{
  my ($dbh,$tablename,$fin) = @_;
  my $csv = Text::CSV_XS->new({binary => 1,eol => $/});

  eval
    {
      my $sth = $dbh->prepare(sprintf('insert into %s values(?,?,?,?,?,?,?,?,?)',$tablename));
      $dbh->begin_work;

      my $count = 1;
      while(my $row_ = $csv->getline($fin))
        {
          $row_->[1] =~ s/\s+$//g;
          if(1 != $sth->execute($row_->[0],
                               $row_->[1],
                               $row_->[2],
                               utf8(h2z_($row_->[3],'cp932')),
                               utf8(h2z_($row_->[4],'cp932')),
                               utf8(h2z_($row_->[5],'cp932')),
                               utf8($row_->[6]),
                               utf8($row_->[7]),
                               utf8($row_->[8])))
            {
              print "failed to insert...row($count)\n";
            }

          if((my $c = $count++) % 10000 == 0)
            {
              $dbh->commit;
              print sjis("${c}件登録されました。\n");
              $dbh->begin_work;
            }
        }
    };
  eval_result('insert data successfully.',sub{$dbh->commit;},sub{$dbh->rollback;});
}

で、このコードを含む一連のスクリプトを、テストサーバー(CentOS6 / perl 5.10 ) で実行すると・・・

Wide character in subroutine entry…

でました・・・。やな、メッセージ(;゚ロ゚)

半角カタカナから全角カタカナの変換がおかしいのかなー・・・なんて見当違いな事をいろいろ試してました。というのも、ちゃんと変換できてるレコードもあるので・・・。ちゃんとSQLiteへインポートできたレコードと上記エラーメッセージが出たレコードを比較しても全然分からん。

で、最終的に、分かったのが・・・CSVからレコード配列に変換するときに変なことが起こってるみたい・・・というのが判明して、Text::CSV_XSモジュールを使わず単純にsplitを使うと、あっけなくインポート終了。なぜ???

最終的に、Text::CSV_XSのバージョンが違っていたことが原因と判明。

Windows上のActivePerlにバンドルされていたバージョンは、”0.82″。 CentOS上のperlにバンドルされていたバージョンは”1.19″。どうやら新しい方のバージョンは、Text::CSV_XS->new({…, decode_utf8 => 0})というようにdecode_utf8属性?を無効にしないと、UTF8フラグが付いてしまう?らしい。この辺、まだよく分からん。

こんな、perldoc Text::CSV_XS をちゃんと読めば解決できたであろう、しょーもないことに丸2日もかかっちまったよ。トホホ。。。

Windows10 !

Surface3 にアップグレード通知が来たので早速実行。CLEyKrXUYAA6GcD_orig
1時間ほどほっとくとアップグレード終了してた。

ただ・・・せっかくWindows8.1の操作に慣れてきた・・・と思ってたら、Windows10になってさらに変わってしまったので、ちょっとイライラ(..;)

とりあえず、「どうすればいいのか教えて欲しい」項目。

  1. タブレットモード時だけ解像度を150%にできないもなのか・・・・?
  2. USキーボードで右ALTキーに漢字トグルを割り当てたけどそれが効かなくなった。

Windows8.1用にxkeymacsをビルド

追記 2015/8/14
たぶん、画面のサイズを125%とか150%にするとまたボタンが隠れてしまいます。根本的な解決にはならないのでご注意ください。


Surface3にxkeymacsをセットアップして立ち上げたけど、プロパティダイアログで、ボタンが隠れる問題に直面(^^;

xkeymacs-8.1

ダイアログリソースをいじればいいや、と思いxkeymacs-snap-110830のソースをダウンロードしてVisual C++ 2010 Express Edition + WDKでビルドしたんですが、以下のエラーでストップ。

Utils.cpp(461): error C2039: 'GetString' : 'CString' のメンバーではありません。

ふむふむ、GetStringがないんだったら、強引にキャストしてまえ!ってことで、

//修正前
memcpy(pMem, text.GetString(), nLength);

//修正後
memcpy(pMem, (LPCSTR)text, nLength);

で切り抜け。

xkeymacs.rcだけVisual Studio Communityで適当にサイズ修正。
プロパティーシートで使用されるフォントがメイリオになってしまうのが原因?
ソース追えるほどMFCに精通していないため、ダイアログリソースだけ場当たり的に修正してビルド。

今度はちゃんとボタンが表示されました。

xkeymacs-8.1-2

めでたし!

ファイルの置き場に置いてます (xkeymacs-only-win8.1) 無保証

最後にリリースされてから4年と久しくバージョンアップされていないようですが、
Windows10も出ることですし、ダイアログ関連のメンテナンスリリースしてほしい<m(__)m>

Surface3 & nasne

デスクトップPCにはPC TV with Nasneをインストールしていて、たまに見ることがあるのですが、あまり使わない。

ってことで、試しに買ったばかりのSurface3に体験版を入れて nasne 視聴を試みた。これでサクサク見れるようなら、PC側のアプリをライセンス解除してSurface3にライセンスを移そうと。

んぉ!? TVの視聴、録画番組も普通に再生できるやん!

まぁ、再生したのも10分ぐらいでしたが、特にカクカクして視聴に耐えられない、というレベルではないので十分やないかなー。

しかし・・・普通に再生できるのはちょっと意外でした。一昔前のネットブック時代のAtomプロセッサしか知らないから、これだけ性能が向上しているのには、ちとビックリしてます(^^;;; よっぽどGPUコアの性能がいいんでしょうね。

Surface3に限らず、Atom x7搭載機は結構使えますな!

ってなわけで、PC Tv with Nasne のライセンスを移行しよ。