dot NET Framework から dot NET Core へ移行

久々に作業メモ。
Visual Studio で C# のプロジェクトを新規作成すると .ウィンドウズフォームアプリ と ウィンドウズフォームアプリケーション(.NET Framework) の2種類出てくる
何が違うの?
と思って調べてみると windows 上では見かけそんなに違いなさそう。ただ、.NET のバージョンが違うようで
ウィンドウズフォームアプリはフレームワークにオープンソースの .NET core を使用し windows / linux / macOS などのクロスプラットフォーム対応らしい。
ウィンドウズフォームアプリケーションは 一部オープンソースらしいがフレームワークに .NET Framework を使用した windows アプリケーション。
と言う違いがあるそうで今後は .NET Core の方が多くなるんだろう。ただ、コンセプトが違うし今すぐ移行しないとダメとも言えないのでその辺はまあ、各自判断ですかね。
IoT なんかは .NET Core を使用した方が良さげだが。

と言う事で以前作った OpenStreetMap の編集ツール JOSM のデイリービルドをダウンロードするツールを作っていたのだけれどもこれが Framework 側で作っていたので Core へ移行できないかと調べてみた。そうすると移行ツールというのが存在してた。
https://dotnet.microsoft.com/ja-jp/platform/upgrade-assistant
なんか微妙な翻訳だけれどもこのサイトに手順が示されてた。
手順は順番にクリックすると示されていくと言うなかなか分かりよかったです。
 1. 「作業を開始」 をクリック イントロが表示目的、条件、時間などが表示されてた。
 2. 「作業を開始する」をクリック 環境の確認コマンドプロンプトが表示
    dotnet と入力してエラーが出なければ ok
 3. ツールダウンロード コマンドプロンプトで
dotnet tool install -g –add-source “https://api.nuget.org/v3/index.json” –ignore-failed-sources upgrade-assistant
   完了すれば準備 ok
 4. アップグレード開始
   依存関係を調べる。なんかよく分からなかったorz
    upgrade-assistant analyze <Path to csproj or sln to upgrade>
   アップグレードする。
    upgrade-assistant upgrade <Path to csproj or sln to upgrade>
    メッセージが表示され最後に
     Choose a command:
      1. Apply next step (Select an entrypoint)
      2. Skip next step (Select an entrypoint)
      3. See more step details
      4. Configure logging
      5. Exit
     と指示されるので私は 1を選択。
     何ステップかに別れているようで9回ほどコマンド”1”を入力した
     で無事終了。
これで Framework から Core へ移行できました。

とりあえずそのままコンパイルしたら WebClient() は古い形式だ、あと名付けルール違反でイベントなどは頭文字大文字でと何個か警告された。
まあ、今回はそのまま実行はできたけど移行後にある程度修正は必要そうですね。

wordpress 更新でトラブル

wordpress 4.3.6 から 4.6.1 へアップグレードしたら
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 122880 bytes) in …/wp-admin/includes/template.php on line 730
なるエラーが表示され
ダッシュボードほか操作メニューが表示されなくってしまった。ついでにトップページも表示が一部おかしくなっている。

症状は以下の二つ。
トップページは表示されているが、一部表示がおかしい。というか、スクリプトが途中まで実行されているがエラーで強制終了したような感じ。
wp-admin にアクセスできなくなってしまっている。がログインはできている。

こちらのサイトは更新しても問題なく表示されたので違いはプラグインかと考え追加したプラグインを疑って調査開始。追加したプラグインで google アナリティクス関連はどちらにも追加しているので除外。
wp-social-bookmarking-light もたぶん大丈夫そうだと考え、問題のサイトでインストールしたプラグインで怪しそうなのは以下の2つ。
wp-gpx-maps
all-in-one-seo-pack

まずは、サイト自体の表示がおかしいところから。
スクリプト停止は地図を表示させている記事が問題のようなので wp-gpx-maps を何とかすることに。
操作メニューへアクセスできない為、ファイルマネージャーでフォルダ移動させることにしました。
やはりこれが原因で移動するとツーリングマップの表示できなくなったがサイト自体は正常に表示できるようになりました。これは4.6.1は未検証のプラグインでした。
地図表示については対応しているプラグインがありそうなので後日修正することにします。

次は wp-admin にアクセスできない原因調査。
怪しそうな seo 関連のプラグインがメニューに悪影響を与えているのではと all-in-one-seo-pack を移動させてみると、ビンゴでした。移動させたらエラーは表示されなくなり操作メニューも無事表示できました。
しかし、このプラグイン4.6.1に対応してるようだがなぜエラーが出たのだろう。

なんだかんだで意外とあっさり問題解決しました。
でも、やっぱりエラーが出たら焦りますねぇ。

DesignSpark PCB の 3D エラー

DesignSpark PCB を使っていて回路図、パターン図ともに特に問題が起きていたわけではないのだけれど、基板の 3D 表示機能が働かないことが判明しました。

家で使っているものは問題なく表示できるからDesignSpark PCB 自体のものではないなと思っていたがようやく原因がつかめた。
エラーで異常終了食らうのは FMV-A2225 windows 8.1 64bit の環境。家の Acer 3830T では異常終了にはならない。何が違うかなと思いつつよく見ていると、毎回 OpenGL のロードあたりで止まっていることが判明。よくよく調べてみるとドライバが原因と言うことが分かりました。

FMV-A2225 の VGA は Mobile Intel(R) 4 Series Express Chipset Family でドライバは windows 8.1 の標準ドライバ 8.15.10.27xx 2013年のやつ。x のところ番号忘れました。どうもこのドライバが OpenGL に対応していないのか動作がおかしいのかよく分からないけれどダメらしい。

更新しようにも Intel のサイトでダウンロードしようと思っても 4 Series のものはwindows のものを使ってね。みたいらしく 8.1 のドライバは見つけられなかった。
で、仕方ないのでwin7 のものをダウンロードしてインストールしました。署名が、とか何とか警告出ましたけどここは強引に。インストール後バージョンは 8.15.10.2869 2012/10/4 になりました。たぶんビルド番号の 27xx から 2869 に番号が上がってる割に年代が若くなってるのはなぜに。でもバージョンは同じなのねと思いつつ、これに変えると起動しなかった DesignSpark PCB の 3D View が起動するようになりました。

すべて無事解決。というわけにも行かないわけであと一つ作業が残ってる。Windows Update には標準ドライバがまた追加されて27xx がインストールされてしまうと言うオチに。なので、Update に表示される更新ドライバは非表示にしてしまいましょう。ということで完了です。

家の desktop もそうだけど古いパソコンはそれなりっちゅうことかね。

twitter api のキーはいずこで…

以前 twitter アプリを作ってみようと dev.twitter.com で登録してたのだけど、ちょこっと実験しておしまいでした。
で、またふと思ってアクセスしてみたらトップ変わっててびっくり。どこで key やら Access Tokens 取得するんだっけ。と探し回りました。

スクリーンショット 2014-10-28 20.43.48
トップページの下の方にある tools のグループに Manage Your Apps ってのがあって、ここでアプリの登録とキーの取得ができる。とまあ、ちょっと変わりすぎててびっくりしたよ。

OpenOffice.org のインストール

OpenOffice.org 4.1.1 がリリースされていたのでバージョンアップすることに。普段は LibreOffice を使っているのだけれども、過去に作った Base のマクロが LibreOffice へ移行しきれていないので OpenOffice.org を残している状態。

メインは LibreOffice で過去LibreとOOoが干渉していたので、ちょっとインストール時に細工して共存する形でインストールしている。ネットワークインストールを行うと関連づけはされないが複数の OOo を干渉せずに共存させることもできる。方法は、以下の通り。

1. ダウンロードしたOOoインストールプログラムを普通に実行する。
2. 展開されたあと自動起動する setup プログラムをキャンセルする。
3. 展開フォルダにある setup のショートカットを作成する。
4. ショートカットのプロパティ、リンク先 “C:\……\setup.exe” のあとに  /a を追加する。
※ .exe” と /a の間は半角スペースを入れないと場所が見つからないとエラーがでる。
5. ショートカットを実行する。これでネットワークインストールが開始される。
6. あとは保存したいフォルダ名を入力して進めばOK。
7. soffice のショートカットを作成してデスクトップに貼り付ける。ついでに sendto に保存しておくと開きたいファイルを右クリック、送るで開きたいファイルを一発で開くことも可能。

自分はファイル探すのがめんどくさいのでこうしているが、3. 以降を “ファイル名を指定して実行” でsetup.exe を /a オプション付けて実行するでも可。

あと一つ。インストール完了後もう一つ作業があって、複数バージョンをインストールしている場合たとえば4.0系と4.1系 この場合プロファイルが共有されてしまうため場合によっては不都合が出る可能性がある。
なのでプロファイルを別にする必要がある。
C:\Program Files (users)\OpenOffice.org4.1.0\program フォルダの中にあるbootstrap.ini を編集
UserInstallation=$SYSUSERCONFIG/OpenOffice/4 となっているのを
UserInstallation=$SYSUSERCONFIG/OpenOffice/4.1 などと書き換える。
こうすることで実験的に次のバージョンをテストしたいなどの場合に、現行プロファイルを汚すことなく共存可能。とまあ、こういったこともできるわけです。

ちなみにアンインストールするときはインストールしたフォルダとプロファイルをごっそりと消してしまえばOK
プロファイルは win8 なら ユーザー\xxxxx\AppData\Roaming\OpenOffice の中にいる。