プログラムを中心とした個人的なメモ用のブログです。
タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。
簡単なプレゼンとかで使用する資料を remark.js を使用して Markdown で作成しているのですが、IE のみスライドが表示されず、ずっと Chrome や Firefox で閲覧してくださいと言ってきました。
しかし、ヘッダーに以下の一行を追加することで IE でも正しく表示されるようになりました。
もっと早く気づくべきだった・・・orz
<meta http-equiv="X-UA-Compatible" content="IE=8;IE=9;IE=10;IE=11;edge;">
Amazon の広告情報などを取得する Amazon Product Advertising APIを利用するためには、AWS (Amazon Web Services) からアクセスキーを発行する必要があります。
AWS にログインすると、ルートアカウントに対してアクセスキーを発行するのは非推奨で、IAM ユーザーを作成し、個別の IAM ユーザーに対して適切な権限を与えるように言われます。
これについて、少し前までは IAM ユーザーに対して Product Advertising API の権限を付与することができなかったみたいで、ネット上を検索してみても Product Advertising API のアクセスキーはルートアカウントでしか発行できないという記事がたくさん見つかります。
しかし現在では IAM ユーザーに対して Product Advertising API に対する権限を付与できますので、まずは Amazon に言われる通りに IAM ユーザーに対して権限を付与するようにしましょう。
ただし、現時点では Amazon Product Advertising API を利用するには、AdministratorAccessの権限が必要のようです。
これだとせっかく IAM ユーザーを作成してもフルアクセスできてしまうのであまり意味がありません。
IAM ユーザーに Amazon Product Advertising API だけを利用できるようにするには独自にポリシーを作成する必要があるみたいです。
この件について、下記の参考 URL として挙げているサイトの内容がとても参考になりました。
AWS 初心者の私も危うくルート権限を付与するところでした。
日進月歩の IT の世界ではググる際に期間を指定するというのも重要なテクニックですね。
尚、取得したアクセスキーはコード上に直接記述せず、環境変数を使うなどするのが普通のようです。
アクセスキーをハードコーディングしたソースコードを Github などのパブリックなリポジトリに公開してしまい、不正利用された結果 Amazon から莫大な費用を請求されたというのはよく聞く話です。
そうなってしまった場合でも初回は何とか支払いを免除されたケースもあるらしいですが、絶対とは限らないので、自分の身は自分で守る必要があります。
Visual Studio Code を使用して Markdown でドキュメントを作成していたのですが、プレビューしようとすると、以下のエラーメッセージが表示されました。
Visual Studio Code のバージョンは 1.12.2 です。
Running the contributed command:'markdown.showPreviewToSide' failed.
どうやらネットワーク上にあるファイルを編集しているのが原因のようです。
ファイルをローカルにコピーするとプレビューできました。
以前のバージョンではネットワーク上にあるファイルもプレビューできていたのですが、変更されたみたいですね。
私は Android 用のアプリも iOS 用のアプリも作成したことはありませんが、Xamarin を使えば C# でもモバイルアプリが作成できると知り興味があったので試してみました。
とりあえず作成したかったのは Android 用のアプリです。
Visual Studio 2017 Community
[ファイル] > [新規作成] > [プロジェクト] より新しいプロジェクトを作成します。
[インストール済み] > [テンプレート] > [Visual C#] > [Cross-Platform] > [クロスプラットフォームアプリ (Xamarin.Forms またはネイティブ)] を選択します。
以下のような「テンプレートの選択」という画面が出てきました。
UI テクノロジですが、Xamarin.Forms はクロスプラットフォームにUIを定義し、ネイティブはプラットフォームごとに UI を定義するらしいです。
他の項目はよくわかりません。とりあえず全てデフォルトのままで OK を押しました。
続いて以下の画面が表示されますが、こちらも全てデフォルトのままにしました。
以上で Xamarin のプロジェクトが作成されると思います。
この状態でビルドしてデバッグを開始すると、以下の画面が表示されました。
iPhone は持っていないのでとりあえずスルーしました。
しばらく待つと Android のエミュレーターが起動し、その中でアプリケーションが起動します。
しかしめちゃくちゃ重く、まともに使用できないなと思いました。
デバッグを行う際、以下のような画面が表示されたので、軽量なエミュレーターを使用するば改善されるかもしれません。
私は ASP.NET も .NET Core も触ったことありませんが、興味があったので試してみました。
[ファイル] > [新規作成] > [プロジェクト] より新しいプロジェクトを作成します。
[インストール済み] > [テンプレート] > [Visual C#] > [Web] > [ASP.NET Core Web アプリケーション (.NET Core)] を選択します。
これでプロジェクトが作成されました。
とりあえずこの段階で F5 を押してビルドしてみます。
すると、ブラウザに以下の画面が表示されると思います。
上述した通り、私は ASP.NET も .NET Core も初めてのため、この画面がどういう仕組みで動作しているのかさっぱりわかりませんでした。
なので、少し調べてみた結果を書いてみます。
https://codezine.jp/article/detail/9778
まずプログラムのエントリーポイントとなる Main メソッドは Program.cs にあります。
そこを見てみると以下のようなコードになっています。
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup&rt;()
.UseApplicationInsights()
.Build();
host.Run();
}
}
ASP.NET Core ではクロスプラットフォーム対応のためアプリケーション内部に Kestrel という Web サーバーを内包しており、それを起動しているそうです。
しかし、実際には Kestrel 単体では動作させず、 Windows では IIS を、Linux などでは Apache や Nginx などをリバースプロキシサーバーとして使用し、それらを経由して Kestrel にアクセスするようにするみたいです。
上記のデバッグ画面表示時も IIS Express 経由で表示されているみたいです。
さて、上記のコードに .UseStartup<Startup>() という記述があり、これが最初に表示するページを指定しているのだそうです。
ここでは Starup というクラスが指定されており、その実体は Startup.cs というファイルに記述されています。
中身については以下のサイトの解説がわかりやすかったです。
http://blog.shibayan.jp/entry/20160517/1463468762
NLog で出力したログを見るために Log2Console をインストールしようとしたのですが、.NET Framework 2.0 が必要のようでした。
Visual Studio のパッケージマネージャー NuGet を使って、Visual Studio に拡張機能をインストールする方法です。
[ツール] > [NuGetパッケージマネージャ] > [パッケージマネージャコンソール] を選択します。
[ツール] > [NuGet パッケージ マネージャー] > [パッケージ マネージャー コンソール]
パッケージをインストールするには以下のコマンドを入力します。
PM> Install-Package パッケージ名
ロックされているファイルはないか、誰がファイルをロックしているのかを調べる方法です。
Visual Studio 2015 でプログラミングをしていると、どうも文字がにじんで見えるというかぼやけて見えるところがありました。
原因はすごく単純なことで、ソースコードの表示の倍率が中途半端な値になっていることでした。
ソースコード表示画面の左下のほうに倍率の設定がありますが、ここが私の場合 99% になっていました。
会社の PC が重すぎて仕事にならないので、頑張って不要なサービスやスタートアップを無効にして高速化を図りました。
環境は Windows 7 です。
内容の保証はできませんので自己責任でお願い致します。
Adobe Reader などの自動アップデートの監視などでされてると推測しますが、不要なので無効にしました。
日本語の入力環境には Google 日本語入力を使用しているので、無効にしました。
NEC 製の PC に入っているサービスで、PC が故障した時にメーカーが見るログを記録しているようです。
無効にしました。
CD や DVD などの自動再生に関連するようですが、必要ないので無効にしました。
テプラを PC に繋いで使用したときにインストールしたのだと思われますが、滅多に使わないので無効にしました。
Logicool のマウスやキーボードに関するサービスのようです。
以前 Logicool の Web カメラを接続したことがあったので有効になっているのだと思いますが、現在は使用していないので無効にしました。
デジタルカメラやイメージスキャナなどのイメージング・デバイスを接続するときに必要となるようですが、そういったデバイスは使用しないので無効にしました。
Windows Live Messenger や Skydrive などを使用する際に必要なサービスだそうですが、会社の PC では使用しないので無効にしました。
Windows Phone デバイスでアプリをテストする際などに必要となるようです。
Windows Phone SDK インストールすると、このサービスもインストールされるようですが、Windows Phone の開発などは行っていないので無効にしました。
Git で pull や checkout を行おうとした際、以下のメッセージが表示されて実行できなかったことがありました。
fatal: Unable to create '/hoge/.git/index.lock': File exists. If no other git process is currently running, this probably means a git process crashed in this repository earlier. Make sure no other git process is running and remove the file manually to continue.
.git の中に index.lock があるので処理できないと言われています。
なので、とりあえずこれを手動で削除すれば実行できるようになるはずです。
しかし、私の場合、この現象が pull を途中で終了したことで起きるようになったせいか、中途半端にゴミのファイルが残ってしまい、いくるかのファイルの上書きができなくなって pull も checkout もできないままだったので、結局 clone し直しました。
Visual Studio 2015 で WPF のアプリケーションを開発していると、以下のメッセージが表示されてビルドがスキップされてしまうことがありました。
「プロジェクトはこのソリューション構成に対してビルドするように選択されていません。」
メニューバーから [ビルド] > [構成マネージャー] を選択します。
すると構成マネージャーの画面が表示されるので、該当のプロジェクトの「ビルド」にチェックを入れるとビルドできるようになります。
「テストコードのないコードはレガシーコードだ」というのはよく聞く話ですが、恥ずかしながら私もずっとテストコードを書く文化のない環境で働いてきたため、テストコードというものを書いたことがありません。
さすがにこのままではまずいと思い、C# で書いたコードでは MSTest でユニットテストを行う癖をつけたいと思いました。
というわけで、MSTest の導入方法です。
本当に最初の最初の導入方法について書いただけですが・・・。
まずはソリューション内にテストを行うためのプロジェクトを作成するようです。
MSDN よれば、1つのプロジェクトに対して1つのテストプロジェクトを作成するのが基本のようですね。
ソリューション内にプロジェクトが2つあれば、それぞれに対応するテストプロジェクトを作成(テストプロジェクトを2つ作成)するということですね。
テストプロジェクトの作成方法には2つの方法があるようです。
前者の「手動で新規にテストプロジェクトを作成する」方法は、
で、作成できます。
ただ、後者のメソッドから作成する方法のほうが楽なんじゃないかと思いました。
「メソッドからテストプロジェクトを作成する」方法は、
テストフレームワークは MSTest を選択します。
テストプロジェクトは「新しいテストプロジェクトを」を選択します。
既にテストプロジェクトを作成していればそのプロジェクトを選択することもできます。
とりあえずこれで作成してみます(他の項目は追々勉強していきます)。
するとテストプロジェクトとテストメソッドが作成されます。
一応注意点として、テストを作成するためにはクラスとメソッドが public でなければなりません。
(private なメソッドをテストする方法もあるみたいですが・・・。)
で、作成されたコードを見ればわかりますが、
になるようですね。
MSDN でもこの標準の名前付け規則を採用することをお勧めするとあります。
メニュバーから [テスト] を選択 > [実行] > [すべてのテスト]
で、とりあえずテストが実行でき、テスト結果がテストエクスプローラーに表示されます。
また、エディタ内で右クリック > [テストの実行] でもテストが行えます。
このとき、右クリックした位置で以下のように変わるようです。
テストコードの書き方はまた追々書きます。
Visual Studio Code の 1.9 の更新案内が来ていたのでアップデートしたら、拡張機能が全て動作しなくなりました。
拡張機能の再インストールなども試してみましたが直らず。
Visual Studio Code 自体を一度アンインストールして 1.8.1 を再インストールすれば多分直ると思うのですが、面倒です。
PlantUML やら reStructuredText のライブプレビューの拡張機能とかは動かないとかなり困るのですが、Github の Issue を確認すると報告が上がっていたので、とりあえず待つしかないですね。
Git を使用しているとどっちがどっちだかわからなくなるのでメモしておきます。
日本語 | 英語 | 説明 |
---|---|---|
マージ元ブランチ | Source Branch | マージするブランチ git merge で指定するブランチ |
マージ先ブランチ | Target Branch | マージされるブランチ 現在チェックアウトしているブランチ |
つまり、
ということなんですが、これでも覚えにくいなぁと思うのは私だけでしょうか。
enum Hoge
{
Off,
On,
}
enum Piyo
{
Off = '0',
On = '1',
}
Hoge hoge = Hoge.On;
Piyo piyo = Piyo.On;
string foo = hoge.ToString();
string bar = piyo.ToString();
// 上記はどちらも "Off" という文字列になる
string foo = ((int)hoge).ToString();
string bar = ((char)piyo).ToString();
// 上記はどちらも "1" という文字列になる
クラスを分割するには partial キーワードを class の前につけます。
尚、継承や修飾子などはどれか1つのクラスに書いておくだけでよいみたいです。
public sealed partial class Hoge : BaseClass
{
...
}
partial class Hoge
{
...
}