Author Archives: admin

Foxit Readerをアプリから起動すると警告が出る

Foxit Readerは比較的軽量なPDFリーダー。Adobe Readerの代わりに使える。

アプリケーションからPDFをFoxit Readerを開くと以下のような警告が出る。

これは署名されていないアプリケーションから起動するとこれが出るようだ。チェックボックスをチェックしても消えない。

これを消すにはファイル ⇒ Preferencesからダイアログを開いて以下の場所でアプリケーションの実行ファイルと登録する。(日本語版ではTrust Managerは「信頼マネージャ」)

フォームをリソースエディタで開こうとするとエラーになる (C++/CLI)

ヘッダファイルをダブルクリックしてリソースエディタで開こうとするとエラーになる。

これはヘッダーファイルの最初のクラスが当該フォームでないため。以下のソースのように前方参照(ref class)を使っていてもうまく動かない。

前方参照を別ファイルに分離

これを回避するには前方参照の部分だけのヘッダーをつくり、それをインクルードすればよい。

前方参照だけのヘッダーheaderref.h

もとのヘッダー

.NET Frameworkのマルチターゲットの話

適当に書くので参考までに。

マルチターゲット

アプリのビルドの際にいろいろなターゲットを指定できる能力のこと。ターゲットには以下の内容が含まれる

  • .NET Frameworkのバージョン(Target Framework)
  • プロセッサ(Target platform)
  • 上の2つを合わせてTarget contextと呼ぶ。

Toolset

ターゲットとコンパイラを合わせてToolsetと言う。ToolsVersionと同じ。

参照アセンブリ

ツールセットで指定される。C:\Program Files\Reference Assemblies\Microsoft\Frameworkにあるアセンブリを参照する。ここにあるアセンブリは実装を持たず機能があるかだけを表す。

ToolsVersion

VSのプロジェクトファイルには以下の内容が含まれる。

15.0は使うMSBuildのバージョンだがVS2013以降はこの値は使われず、VSのバージョンに合ったバージョンが使われる。MSBuildは互換性が高いのでこの値は対して意味がない。
VSのバージョンとToolsVersionの対応は以下

  • VS2010とVS2012 → 4.0
  • VS2013 → 12.0
  • VS2014 → 14.0
  • VS2017 → 15.0

14.0以前はレジストリにある以下のキーを参照する

15.0以降はレジストリは見ないで、以下のものを使う
C:\Program Files\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin

C++/CLIでWndProcを継承実装する

FormでWndProcを宣言する

実装する

ビルドするには/clrオプションを設定しなければならない。

実例ファイル

FFmpegで動画の音声をノーマライズする

Windowsで実験。python3.5でやった。

ffmpeg.exeへパスを張る

ffmpeg-normalizeをインストール

pythonのpipでffmpeg-normalizeをインストールする

対象ファイルのaudioコーデックを見つける

ffprobeでaudioコーデックを見つける。

出力のストリームからaudioコーデックを見つける。aacやvorbisなどがある。

normalizeする

ffmpeg-normalizeが見つからない場合は、pythonフォルダのScriptsにパスを張る。

参考(実行されるメインのffmpegコマンドライン)

参照

元のソース

QtのプロジェクトをVisual Studio 2017で開く

コマンドプロンプトを開く

メニューから[Visual Studio 2017]→[Developer Command Prompt for VS 2017]を開き、VS2017の環境でコマンドプロンプトを開きます。(日本語版の場合名前が日本語になっていると思うので読み替えてください。)

開いたらQtプロジェクトのあるフォルダへ移動します。

qmakeへのパスを通す

上記のqmake.exeへのパスは自分の環境に合わせます。

qmakeでVisual Studioのプロジェクトファイルを作ります

成功するとvcxprojが作られます。

vcxprojを開く

終わりに

vcxprojを開くためには毎回qmakeへのパスを通す必要があるので、出来上がったvcxprojをエクスプローラなどから起動してもうまくビルドできません。

vlcで「再生を停止した位置からの再生再開を行いますか」を表示させない

VLCのバージョン3から、動画を再生したとき、前に閉じた位置から再生する機能が追加されてデフォルトで有効になっている。しかしこの機能を使うとウインドウのサイズが変更されてしまって都合が悪いときがあるのでこれを無効にする方法。

VLCを起動しオプションを表示する

  1. メニューから「ツール」→「設定」を選択
  2. ダイアログの左下の「設定の表示」グループの中の「すべて」を選択
  3. 左のツリーから「インターフェース」「メインインターフェース」「Qt」を選択
  4. ダイアログが小さいと右側が見えないので最大化して、右側の「再生を継続しますか」「常にしない」を選択

Windows7でサウンドのアイコンがXになる

サウンドが無能になってるようなアイコン

Windowsの起動時、何らかの原因で起動が遅いと上のようなアイコンになるようだ。実際にはサウンドは通常に機能していてもタスクトレイのアイコンが無効になってるようになる。

ログオフすれば直るがそれをしたくない場合は以下の2つ

直すにはエクスプローラを強制再起動するか、”Windows Audio”サービスを再起動すればいい。

Windows Audioを再起動する

以下のコマンドを管理者コマンドプロンプトで実行する。

firefoxのESRとQuantumを共存させる

新しくなったfirefoxのQuantum、早くなってマルチプロセスになって使い心地はよくなったが過去のアドオンが使えなくなってしまった。アドオンのできることに大きな制限が加えられたため、機能自体が不可能になったものも多いはず。これらのレガシーアドオンを使うためには古いバージョンのfirefoxであるESRバージョンを使うしかない。しかし一般的にはESRとQuantumの共存は考えれていなくてどちらか一方をインストールするように設計されている。そこでここではそれらの共存を目指す。

ダウンロード

以下の2つ(ESRとQuantum)をダウンロードする。(win32のja(日本語)直リン)
https://ftp.mozilla.org/pub/firefox/releases/52.6.0esr/win32/ja/Firefox%20Setup%2052.6.0esr.exe

https://ftp.mozilla.org/pub/firefox/releases/58.0/win32/ja/Firefox%20Setup%2058.0.exe

解凍

これらは7zなどで解凍できるので解凍する。中にcoreというフォルダがあるのでそれぞれ”Mozilla Firefox ESR“と”Mozilla Firefox Quantum“と変えて、インストールしたいフォルダに移動させる。

デフォルトのプロファイルを作成

“Mozilla Firefox ESR\firefox.exe”を起動して閉じる。この操作でデフォルトのプロファイルが生成される。プロファイルは共存させることができないので、ESRとQuantumで別々につくる予定だが、とりあえずデフォルトのものをつくっておく。

プロファイルの作成と編集

WIN+Rで「ファイル名を指定して実行」を表示し、%APPDATA%\Mozilla\Firefoxと入力する。この中にあるprofiles.iniを編集して以下のようにする。

ここではProfile1とProfile2を追加した例。NameとPathを変えて、Defaultを0に設定している。すでにプロファイルが存在していた場合には番号を変えて対応する。

次に指定したPathに対応するするフォルダを作成する。すでにあるフォルダをコピーしてもいい。

ショートカットの作成

次にこれらのプロファイルを利用するショートカットを作成する。Mozilla Firefox Quantum\firefox.exeMozilla Firefox ESR\firefox.exeのショートカットファイルをつくり、プロパティを編集してリンク先に以下の値を追加する。

ESR

Quantum

これでそれぞれのショートカットからESRとQuantumを起動でき、同時に起動することもできる。このショートカットキーから起動しなかったときは、デフォルトのプロファイルが使用される。

ここでつくったファイルのダウンロード

フリー&オープンソースソフトのライセンス基礎

オープンソースのライセンスはなかなかわかりづらいし解説も難しいものが多いのでここでは簡単に(そしていい加減に)記述したい。

用語

基本的な用語の整理。

  • フリーソフトウェア:日本語だとただで使えるソフトということだが、一般にはソースコードが自由に利用できるものであり、その自由を他人にも伝えていかなければならない義務をもともなっているものである。
  • コピーレフト:フリーソフトウェアの理念を表わしたもの。誰もが自由にソフトウェアが利用できるべきであり、ソースコードも利用できるべきであるというもの。そのためには他人の自由も尊重する義務も伴う。コピーライトに対する言葉だが反対の意味ではない。コピーレフトはコピーライト(著作権)を保持する。そうしないと他人に義務を課せないからである。
  • オープンソース:ソースは公開されているがフリーソフトウェアほどの義務をともなっていないもの。
  • ライセンス:許諾と約される。許諾とは許すこと、つまり本来は法律上許されない行為を著作権者が許すこと。

基本概念

自分が作った創作物には著作権があり、著作権者は著作物の独占的権利をもつ。他人が勝手に他人の著作物を複製して公開したりしてはいけない。フリーソフトウェアの推進者はソースコードを自由に利用できる世界をつくるために自分のソフトウェアにライセンスを設定し他人に自分の著作権の権利の一部を許可する。

ライセンスを受け入れた人(ライセンシー)は自由にソースコードを利用し改変する自由を得るが、自由を得るだけではなく幾つかの義務も課せされる。義務を課さないと利用されるだけになりフリーソフトウェアの理念を拡大できないからである。

ライセンスには幾つもの種類がありGPLがもっとも自由なライセンスと謳われている。それを自由と感じない人もいるかもしれないがソフトウェアの世界で自由といえばGPL系と思われていてそれ自体に対しては意義は唱えれていないと思われる。

それに対してもっと義務の薄いライセンスもある。これらはloose(緩い)ライセンスと言われる。一般に元のソースコードに改変を加えて公開してもソースコードの公開は要求されず元のライセンスの表示や元の著作者の表示をすることだけが義務となる。

ライセンスとはあくまで著作権法の範囲の話なのでそもそも著作権法と関係ない行為にはライセンスは関係ない。

自分のソースを公開しないで改変しない配布は許されるか

フリーソフトウェアを理念に基づいて考えるとその自由を侵害しないように注意すれば大体のとこは許される。プログラマーの多くは元のライブラリなどを改変しないでそのまま利用し自分のアプリにリンクすることが多いだろう。問題なのは、このとき自分のソースコードを公開する義務があるのかということになる。自分の考えではもっとも「自由」なGPLでもその必要はないと思われる。課される義務は元のライブラリのソースコードを公開することで自分のアプリのソースコードを公開することではない。ここで難しいのがリンクの法的扱いで、それは改変と何が違うのかということだ。これに対して技術的に回答しても技術的に対応されるだけなので法的に考えないとならない。著作権で守られるのは創作物でありそれは著作者の意図を体系として表したものであるから改変とはこの意図にたいしてライセンシーの意図を組み入れて元の意図を展開あるいは破壊したものと考えればいいと思う。

GPLは本当に自由か

この問題も難しい問題である。社会は経済で回っており人間はカネを稼がないと生きられない。すべてがフリーソフトウェアになってしまえばプログラマーは食っていけない。それを推進する人たちは保守をすればいいとか言っているが、プログラマーが食えないことに代わりはない。とは言え市場経済がソフトウェアの発展にとってもっとも適切だという保証もないしフリーソフトウェアが人々に貢献してきたのは事実だし今も貢献し続けている。マイクロソフトなどもオープンソースへ大きく舵を切った。

フリーソフトウェアの今後と日本

日本のソフトウェア業界は遅れていると思う。世界の大手ソフトウェア業界はオープンソースへ向かっている。日本にもそれを普及しようという動きはあるが弱い。このことが将来のソフトウェア産業において日本の地位をさらに貶める危惧がある。これは政治問題でもある。