2017年9月13日水曜日

Gitでバージョン管理、始めました

◆ Visual Studio 2017ではGitバージョン管理システムが簡単に利用できる。せっかくなので本ブログでもGitを導入しよう。そしてGitHubにアカウントを作り、自作プロジェクトを世界に公開しちゃったりするのだ。

Gitの導入にあたって、Qiitaの先人の知恵がおおいに参考になった。具体的にはこの辺り→ https://qiita.com/search?q=Visual+Studio+GitHub

◆ GitとGitHubについて簡単なまとめ。
  • Git(ギット)は無料のバージョン管理ソフトである。
  • Gitのプロジェクト管理データを「リボジトリ」と呼ぶ。
  • 個人プロジェクトの場合はローカルPCにリポジトリを置いてもよい。
  • チーム開発なら公開サーバにリポジトリを置いて共有するとよい。
  • 公開サーバの代表格がGitHub(ギットハブ)である。
  • Visual Studioには簡単にGitHubに接続する拡張機能もある。
ちょっと触った感想では、Visual Studio単体より、GitHubのWebサイトのほうが管理画面が見やすい。個人でも積極的にGitHubを使うほうがよさそうだ。

◆ まずはGitHubでユーザー登録する。
登録画面は英語だが「Username」や「Mail Address」が読めれば問題ない。月に数ドルの有料コースもあるが、最初は無料アカウントでよいと思う。

◆ 次にGitHub拡張機能をVisual Studioにインストールする。
GitHub拡張はMicrosoftとGitHubのコラボで開発されたもので、これを使うと簡単にVisual StudioからGitHubに接続できる。

◆ 拡張機能をインストールしたら、さっそくGitHubに接続してみよう。
  1. Visual Studioのメニューで[表示]→[チームエクスプローラー]を開く
  2. 左上のプルダウンメニューで[プロジェクト]→[接続の管理]
  3. さらに[接続の管理]をクリック→[Conect to GitHub]
  4. ログイン窓が開くので、GitHubにログインする
ログインに成功すると、チームエクスプローラーの接続画面に[GitHub]の選択肢が追加される。

◆ 以上でGitHub利用の基本設定が完了した。いったんここで記事を切る。次回はローカルPCで作ったプロジェクトをGitHubに公開する方法を書く予定。

2017年9月10日日曜日

C# TIPS: IDE0018はout変数のインライン化の勧め

今日のTIPSは、メッセージIDE0018の意味と回避法について。

■ Visual Studio 2017から採用されたC#7では、次のようにout変数をインライン宣言できるようになった。

  string str = "文字列";
  if (!int.TryParse(str, out int num)) {
    // intへの変換失敗処理
  }
  Console.WriteLine("num={0}", num);


同じ処理をC#6では次のように別行で変数宣言する必要があった。

  string str = "文字列";
  int num;
  if (!int.TryParse(str, out num)) {
    // intへの変換失敗処理
  }
  Console.WriteLine("num={0}", num);


もちろんC#7でも後者の書き方は有効だが、こう書くとIDE0018のメッセージが出てうるさい。



わかったよもー。インライン化すればいいんでしょ。まあ便利なことには間違いないので、これからout変数はインライン宣言するようにしたい。

■ その他いろいろC#7には新機能が盛り込まれているようだ。次のMSDN記事にまとめられているので、あとで読んでおこう。

.NET Framework - C# 7.0 の新機能
https://msdn.microsoft.com/ja-jp/magazine/mt790184.aspx

2017年9月8日金曜日

C#のSmtpClientでメール送信(2)

【前記事】の続きとして、ここではSMTPサーバー設定の実例を紹介する。

◆ その前にSMTPについて簡単にお勉強を。

一般にメールを送るとき、宛先のコンピュータに直接データを届ける必要はない。あなたは適当なメールサーバーにメール送信を依頼するだけでよい。それが世界中のサーバーと連携し、うまいことメールをリレー転送してくれる。

このときデータのやりとりは、すべてSMTPプロトコル(RFC5321)に従って行われる。C#のSmtpClientクラスも、やはりSMTPプロトコルでメールを送信する。

◆ 本来、SMTPにはユーザー認証の機能がなく、誰でも匿名でメールを送信できた。そのため以前はスパムメールの発信基地としてSMTPサーバーが悪用されることも多々あった。

そこで最近のSMTPサーバーは、ユーザー認証しないと使えないようになっている。認証方法は主に次の2種類である。

* POP before SMTP
メールの受信(POP)にユーザー認証が必須なことを利用し、いったんメールを受信させてみて、成功したユーザーだけSMTPの送信を許可する。なおC#にはメール受信用の便利なクラスがないので、今回この方式はパス。

* SMTP Auth
SMTP自体にユーザー認証を組み込んだ方式。わりと新しいが最近のSTMPサーバーならたいてい利用できる。SmtpClientクラスもこれに対応している。

◆ さてユーザー認証にはパスワードの入力が付き物だ。しかしパスワードを平文で送信すると、途中で誰かに読まれる可能性が高い。そこで最近のSMTPサーバーは、暗号化通信も利用できるようになっている。暗号化には2つの方式があるらしい。

* STARTTLS
587番ポートを使う方式。詳細はよくわからないが、今回確認したSMTPサーバーはすべて587番ポートでメール送信できたので結果オーライとする。

* SMTPS (over SSL)
465番ポートを使う方式。詳細は未調査。今回465番ポートは全滅だったので、いまいち使い方がわからない。

◆ これらの認証方式や暗号化方式を、C#のコードから直接指定する方法はないと思う。ただし、プログラマがSmtpClientにヒントを与えることはできる。それが次の2つのプロパティだ。
  • Credentialsプロパティ→ 認証させたいとき設定する
  • EnabeleSslプロパティ→ 暗号化通信してほしいときtrueにする

今回のプログラムでは、認証は必ず「あり」、暗号化の「あり/なし」はユーザーが指定可能とした。

◆ というわけで、ここからは実際にメール送信に成功したSMTP設定例を示す。まずXREAレンタルサーバーの場合。



ここでわざとパスワードを間違えてみるとメール送信に失敗するので、ユーザー認証が働いていることがわかる。

また前述のように587番ポートのSMTPは暗号化通信を行う。その証拠に、送信されたメールのヘッダを見ると次のように書かれていた。

by s269.xrea.com with AES256-GCM-SHA384 encrypted SMTP;

これはTLSv1.2形式の強度256bitの暗号を意味している。

◆ お次はGoogleが提供する無料メール、Gmailを利用する設定。



サーバー名は「smtp.gmail.com」で、あとはXREAのレンタルサーバーと同様だ。これで「ユーザー認証あり」+「暗号化あり」形式で、SMTPサーバーが利用できる。

ただしGmailのSMTPサーバーは非常に疑い深く、一般人の自作プログラムなどといった怪しげなソフトの接続はデフォルトで拒否する。これを避けるには、最初に1回だけ次の手順を取る必要がある。
  1. Gmailにログインする
  2. 「アカウントへのアクセスとセキュリティ設定の管理」を開く
    ここ→ https://myaccount.google.com/security
  3. ページの下部にある「安全性の低いアプリの許可」を有効にする
この設定を行うと、あなたのアカウントでユーザー認証したときに限り、自作プログラムからGmailのSMTPサーバーが使えるようになる。

なお、GmailのSMTPサーバーを利用する場合、1日に送信できるメールは2千通までに制限される。大規模な業務用にはちょっときついかもね。

◆ 最後にYahooメールのSMTPサーバー設定。問題はここで発生した。



サーバー名は「smtp.mail.yahoo.co.jp」、587番ポートを使うのは他のSMTPサーバーと同様。だがこのSMTPサーバーでは暗号化通信ができない。暗号化を要求するとSMTPサーバーに拒否されてしまう。暗号化なしなら普通にメール送信できる。うーむ、これってどうよ。

そこでYahooメールの公式マニュアルを見ると、SMTPサーバーには456番ポートで接続するように指定されていた。それか!

要するにYahooメールのSMTPサーバーを使う場合は「SMTPS (over SSL)」方式が必要なわけだ。困ったなそれまだプログラム作れてないんだ。まあ、もう少し勉強してから再挑戦だな。ここは撤収!

それにしても、なんでこれ587番ポートは開いてるんだろう?いまどき暗号化なしでパスワード入力なんて、こわくて使えないぞよ?

2017年9月7日木曜日

C#のSmtpClientでメール送信(1)

メール送信用のSmtpClientクラスが便利そうなので使ってみるテスト。

■ 今回作るのは短文をちょこっとメールというか、具体的にはPCから自分のモバイル端末にURLを送るだけの単純なプログラムである。次のような用途を想定している。
  1. PCのWebブラウザでネットを見ていたら興味深いサイトを発見。
  2. → サイトのURLをスマホに送りたい。
  3. → WebブラウザからこのアプリにURLをドラッグ&ドロップ。
  4. → スマホのメールにURLが送信される。

■ とりあえずC#プロジェクトを新規作成し、フォームにコントールを配置する。




■ 次のイベントハンドラを追加する。
  • フォームのLoadイベント
  • フォームのFormClosedイベント
  • フォームのDragEnterイベント
  • フォームのDragDropイベント
  • 送信ボタンのClickイベント

■ [プロジェクトのプロパティ]→[設定]で、11個の変数を登録する。


■ Form1.csにコードを書く。


■ デバッグ実行してみる。
  1. [デバッグ]→[デバッグの開始]
  2. [サーバー設定]タブで、SMTPサーバーが設定できる。

    設定は記録されるので次からは入力不要。
  3. Webブラウザから適当なURLをマウスでドラッグ&ドロップ。
  4. 上のようにメールの件名と本文が作られるので、差出人と宛先を入力して送信する。差出人と宛先は記録されるので次からは入力不要。
  5. スマホにメールが届くことを確認する。

■ 実際のSMTPサーバーの設定例などは【次回記事】にて。予定としては、
  • 自サーバー(XREAのレンタルサーバー)のSMTPを使う例
  • GmailのSMTPを利用する例
  • YahooメールのSMTPを利用する例
を書くつもりである。

■ プロジェクト一式のZIP圧縮ファイルを下記ページに置きました。

https://pilikala.net/yuima/e/006.html

ソースコードのみでEXEファイルなどのバイナリは入ってません。Visual Studio 2017 Community(無料版)で動作確認しました。

2017年8月27日日曜日

C# TIPS: IDE0017を回避する

■ Visual Studio がエラー窓に出すメッセージに、IDE0017というものがある。



たとえば次のようにWebClientを作るだけで、同メッセージが出てしまう。



何かコンストラクタ関係の助言らしいが、「オブジェクトの初期化を簡略化できます」だけじゃ意味がわからないんですよ。

■ ネットを見ると同様の疑問を持つ人が多数フォーラム等で質問しており、だいたいこんな回答をされている。
  • コードがバグってるんじゃね(いやバグってないし)
  • コンストラクタの用法が悪いと言われてるのだ(わかってるつーの)
  • 俺のコード参考にしてみ(お前のコードはWebClientじゃないだろ)
  • #pragma warning disable IDE0017」で消せるよ(いいのか?)

■ 自分でもコードをいじりつつ試行錯誤してみると、どうやら コンストラクタ呼び出しの直後にプロパティを代入する と、IDE0017が表示されることがわかった。

両者の間に空文1個でもはさめばメッセージは回避できる。たとえば次のコードならIDE0017は表示されない。



たぶんこれは、引数付きのコンストラクタを呼び出すことが推奨されているのだろう。でもWebClientには、Credentialsを指定できるコンストラクタなんかないし。いやあるのかもしれんが、このぐらい見逃してくださいよー。

■ というわけで、今後ネットでIDE0017に関する質問を見たら、「空文1個いれてみ」と答えることにしたい。

たぶん「そんな対症療法よくない」って反応が返ってくるだけだろうが(わかってるつーの)。

2017年8月24日木曜日

C# TIPS: Properties.Settingsの永続データ

小生の場合、プログラム開発時にはあれこれ調べ、さまざまなコーディング知識を得る。しかし数カ月後には、すべて忘れている。困ったものである。そこで今回は、覚えておきたい小ネタを、TIPSとして本ブログに書き残していくことにする。

まずはProperties.Settingsクラスの永続データの保存パスについて。

■ Properties.Settingsクラスはプログラムの状態を永続化する。――と言うとわかりにくいが、要するにプログラム終了時に特定の変数を記録し、次回に復元するためのライブラリだ。ウィンドウ位置の保存などにとても重宝する。

この永続データがどこにあるか調べたところ、次のパスに保存されていた。
C:\Users\ユーザー名\AppData\Local\会社名\プログラム識別記号\バージョン番号\user.config
フォルダ名に含まれる単語の意味は次の通り。

* ユーザー名
プログラム実行者のWindowsログイン名。これはつまり、ユーザーごとに別々の設定が保存可能ということだ。

* 会社名
開発会社名。プロジェクトのプロパティで設定可能である。趣味のプログラマなら適当な名前でもOKだ。自分の所有するドメイン名などにすると、他と重複せず良いんじゃなかろうか。

* プログラム識別記号
プログラムのEXEファイルの名前+何か記号。記号の意味は不明だが、デバッグビルドとリリースビルドで違うフォルダが作られることは確認した。

* バージョン番号
プログラムのアセンブリバージョン。プロジェクトのプロパティで設定可能。

■ 会社名やバージョン番号は、次の手順で設定する。
  1. メニューから、[プロジェクト]-[(プロジェクト名)のプロパティ]
  2. カテゴリは[アプリケーション]を選択
  3. [アセンブリ情報]ボタンをクリックする
  4. 会社名とバージョン番号を入力する


■ ところでVisual Studioには、アセンブリバージョンを「1.0.*」に設定しておくと、バージョン番号の末尾に自動的にビルド時刻を埋め込む便利な機能がある。

この機能を使うと毎ビルドごとにバージョン番号が更新され、設定保存パスも変わるため、「なんで設定が保存されないの?」と悩むはめになる。実体験である。

というわけで、Properties.Settingsクラスのデフォルトの保存パスを変える方法があればよいと思う。調べてみたい。

2017年8月22日火曜日

C#のWindowsフォームでマイリス更新チェック(3)

【前記事】の続き。完結編です。

■ ここまでの下準備で、データ読み込みと表示部分は完成した。また、こないだのC#コンソール版で、ネット接続とマイリスチェックの処理も作った。あとはガシガシ組み合わせていけばよい。

■ まずはusing宣言から。

開発中はいろいろなライブラリに手を出すので、あれこれusingが増えるが、結局おなじみの名前が残るんだな。

■ そして今回のメイン処理、ニコニコ動画マイリス更新チェックをコーディング。


■ このメイン処理を、開始ボタンのClickで呼び出す。


■ さらにプログラム終了時に、最新のデータをローカルPCのデータファイルに書き戻しておく。

■ テスト実行してみる。
  1. メニューから、[デバッグ]-[デバッグの開始]
  2. 開始ボタンを押し、ニコニコ動画のマイリス更新チェックがおこなわれることを確認する
  3. マイリストを更新時刻順に並べたHTMLファイルが作られ、Webサイトにアップロードされたことを確認する

うまく動いているんじゃない?
Webページのほうは・・・→ https://pilikala.net/yuima/nico.html
ふむ無事アップロード出来ている。

これでプログラム完成!

■ プロジェクト一式のZIP圧縮ファイルを下記ページに置きました。

https://pilikala.net/yuima/e/004.html

ソースコードのみでEXEファイルなどのバイナリは入ってません。Visual Studio 2017 Community(無料版)で動作確認しました。

■ データの追加/削除/編集の機能は、プログラム自体にはありません。データファイルNicoCheckGuiData.xmlを手作業で書き換えてください。

2017年8月21日月曜日

C#のWindowsフォームでマイリス更新チェック(2)

【前記事】の続き。

■ こないだ作ったPerlスクリプトでは、必要なデータを全部コード内に書いた。インタープリタ言語のいいところだ。データを追加したければスクリプト本体を書き換えればいい。

しかしC#では、データとコードは分離させる。データ形式は次の候補を考えた。
  • CSV形式: カンマ区切リテキスト、エクセルで編集できる
  • XML形式: タグ付き構造化テキスト、ライブラリが充実
  • JSON形式: ジェイソン、便利そうだが使ったことがない
そして1分間の熟慮の結果、今回はXML形式を採用することに決めた。

■ とりあえず動作確認用のXMLデータを手作業で作る。
  1. メニューから、[プロジェクト]-[コンポーネントの追加]-[ファイル]
  2. カテゴリは[Visual C# アイテム]-[データ]
  3. ファイルの種類は[XMLファイル]を選択
  4. ファイル名をNicoCheckGuiData.xmlとして、[追加]ボタン
  5. XMLエディタで、下記※のダミーデータを入力する
  6. ソリューション内のNicoCheckGuiData.xmlをクリックし、ファイルのプロパティを表示
  7. [ビルドアクション]を、"コンテンツ"にする(すでになっている)
  8. [出力ディレクトリにコピー]は、"新しい場合はコピーする" を選ぶ
※NicoCheckGuiData.xmlに入力するダミーデータがこちら


■ このXMLのitem要素を、C#コードではデータ保持用のNicoInfo型に変換して扱うことにする。

まずForm1.csのコードウィンドウにSystem.Xmlのusing宣言を追加する。


次のようなNicoInfo型の定義を追加する。


データを読み込むLoadData()と、表示用のUpdateListVewi()を記述する。


作成したメソッドは、FormのLoadイベントハンドラから呼ぶ。


■ この段階でまたテスト実行してみよう。
  1. メニューから、[デバッグ]-[デバッグの開始]
  2. データファイルの内容がListViewに反映されることをチェック


というわけで首尾よくダミーデータが表示された。めでたしめでたし。

■ 次はいよいよ実際のニコニコ動画チェックの処理である。いったんここで記事を切る。【次の記事】に続く。

2017年8月20日日曜日

C#のWindowsフォームでマイリス更新チェック(1)

本ブログでC#のGUIアプリを作るのも久しぶり。自分でもあやふやな手順が多々あるので、ちょっと細かくメモをとりながら進める。

(ブログを読んでる方は記述がうざいかもしれませんが、このへん自分への備忘メモを兼ねているのでご勘弁ください。)

■ プロジェクトは「Windowsフォームアプリ」形式で作成する。手順は次。
  • メニューから、[ファイル]-[新規作成]-[プロジェクト]
  • テンプレートは、[Visual C#]-[Windowsクラシックデスクトップ]
  • [Windows フォームアプリケーション (.Net Framework)] を選択
  • プロジェクト名をNicoCheckGuiとして、[OK]ボタン

■ フォームにコントロールを配置する。自作小物プログラムなんて、画面はたいてい単純だ。小生はよく下記構成でレイアウトする。



要するに、TabControlを1個、Buttonを1個、フォーム上に置くだけである。

■ 配置したコントロールの各種プロパティを設定する。
  • 右下プロパティウィンドウで「プロパティ」アイコンを選択、プロパティ設定モードにする。
  • コントロールを選択すると、そのプロパティ一覧が出る。
  • まずフォームのFontのサイズを変更する。デフォルトの9ptは小生には小さすぎるので12ptに変更。フォームのFontサイズはコントロールにも引き継がれるので便利だ。
  • 各コントロールのAnchorプロパティを設定し、フォームの拡大縮小に連動させる。
  • TabControlは、Anchorで上下左右の4辺を固定する。
  • Buttonは、Anchorで左辺と下辺のみ固定する。
  • 最後に、フォームのタイトル、タブページの見出し、ボタンのキャプションなどを、それぞれのTextプロパティで設定する。
  • あとはお好みで各コントロールのNameを設定するのもよろしかろう。
  • ちなみに小生は、コントロール名に必ずプリフィックス"My"を付ける。本ブログのサンプルコードもすべてその方針でいく。

■ イベントハンドラを追加する。手順は次の通り。
  • 右下プロパティウィンドウで「イベント」アイコンを選択、イベント追加モードにする。
  • コントロールを選択すると、そのイベントハンドラの一覧が出る。
  • 必要なイベントハンドラ名をダブルクリックすると、コードウィンドウにコードが追加される。最初は下記3つでよい。
  • フォームのLoadイベントを追加
  • フォームのFormClosedイベントを追加
  • 押しボタンのClickイベントを追加
  • 間違ってハンドラを追加してしまった場合は、プロパティウィンドウでハンドラ名を右クリックし、[リセット]を選ぶと削除できる。

■ 最後は個々のタブページ上にコントロールを配置する。
  • メインタブページに、ListViewを配置。
  • ログ表示タブページを開いて、RichTextBoxを配置。
  • これらのプロパティ設定は、やや煩雑なのでコードの方でおこなう。
  • もちろんコード記述ではなく、全部プロパティウィンドウで設定しても、まったく問題ない。

■ Form1.csのコードウィンドウで、次のコードを入力する。


■ アプリ終了時にフォームの位置等を保存するため、変数を登録する。
  • メニューから、[プロジェクト]-[NicoCheckGuiのプロパティ]
  • [設定]カテゴリを選択
  • 次の7個の変数を登録する


■ 設定の保存と復元のため、次のコードを入力する。


■ これでやっとGUIアプリの枠組みが完成である。デバッグ実行してみよう。
  • メニューから、[デバッグ]-[デバッグの開始]
  • タブをクリックすると、ページが切り替わることをチェック
  • プログラム終了時のウィンドウの位置やサイズが、次回に引き継がれることを確認


フォームの位置の保存とか、初めて使ってみたけど、すんごく便利だね。

■ 以上がGUIプロジェクト作成における「いつもの手順」である。どんなプロジェクトでも似たような作業なので、今後の記事では省略されるであろう。

残りは長くなるのでいったんここで記事を切る。【次の記事】に続く。

2017年8月17日木曜日

C#で書く、ニコ動マイリストの更新チェック

前回のPerlスクリプトにバグを発見し、そっちの記事を書き換えようとして、間違えてこっちを消してしまった。(2017/08/29)

もう元原稿が残ってないので、この記事はあとで書き直す。まあ、たしか3段落程度の短い記事で、たいしたこと書いてなかったし…(しくしく)

ていうかプログラムのソースも見つからないよこれ!どこいった?まあいいやプロジェクトごと作り直し。以下、記憶を頼りに書き直したもの。

■ この記事には、たしかこんなことが書いてありました。
  • PerlスクリプトをC#に焼き直したよ。
  • PerlからC#へのコンバートは思いのほか簡単だった。
  • 特にWebClientクラスが気に入った。WebのアクセスもFTPアップロードも、これ一発だ。
  • まあC#もコンソールアプリは楽なんだ。次はGUI版を作る予定なので大変かも。

■ プロジェクトの作成手順
  1. メニューから、[ファイル]-[新規作成]-[プロジェクト]
  2. テンプレートは、[Visual C#]-[Windowsクラシックデスクトップ]
  3. [コンソール アプリ (.Net Framework)] を選択
  4. プロジェクト名をNicoCheckとして、[OK]ボタン

■ Program.csにコードを入力


■ プロジェクト一式のZIP圧縮ファイルを下記ページに置きました。

https://pilikala.net/yuima/e/003.html

ソースコードのみでEXEファイルなどのバイナリは入ってません。Visual Studio 2017 Community(無料版)で動作確認しました。

2017年8月15日火曜日

ニコニコ動画のマイリストの更新チェック

■ ニコニコ動画で、よく見ている動画のシリーズがいくつかある。

その新作を追うため、最初はそれぞれのマイリストを普通にブックマークしていたのだが、お気に入りが増えてくると、ブックマークの管理も大変になってきた。

■ というわけで作ったのが、複数のニコ動マイリストをチェックし、動画の更新日を一覧表示するツールだ。

実際にツールで出力した結果がこれ。
https://pilikala.net/yuima/nico.html

更新日が新しい順にタイトルを並べただけの簡単なものだが、実用上これで十分である。

■ Perlスクリプトのソースを下記に掲載した。

※バグ発見につき3行追加(2017/08/29)

なお日本語データ処理の都合上、スクリプトは必ずUTF-8で保存すること。 とりあえずWindows 10のコマンドプロンプト+無料版ActivePerlで動作を確認した。

■ ところでこのブログの趣旨は「Visual C# のプログラミング」であった。

にもかかわらず、気が付けばブログに載せるのはPHPスクリプトとかPerlスクリプトだけ。これではいかーん。

そこで次回は、上記のPerlスクリプトをC#で書き直すことを目指す。そのつもり。まあ、あくまでも予定で。

2017年8月13日日曜日

PHPスクリプトでSSLの有無を判定

【前記事】からの流れで。

■ サーバがSSL経由でアクセスされているかどうかを調べるPHPスクリプト。

判定方法は次の通り。
  1. 環境変数HTTPSの値が"on"なら通常のSSLを使っている。
  2. プロキシss1.xrea.com:3128経由のアクセスなら共有SSLを使っている。
  3. どちらでもなければ非SSL接続である。
とりあえずXREAの自サーバで動作確認した。

■ 下記スクリプトを「chkssl.php」という名前で保存して完成。


■ 実際の使用例がこちらです。
SSLあり → https://pilikala.net/yuima/chkssl.php
共有SSL → https://ss1.xrea.com/pilikala.s269.xrea.com/yuima/chkssl.php
SSLなし → http://nossl.pilikala.net/yuima/chkssl.php

2017年8月12日土曜日

続・XREAレンサバの無料SSLについて

【前回の記事】に追補。

■ まだマニュアルを読んでる途中だが、XREAの無料SSLを利用するには、独自ドメインが必須のようである。

まあXREAのレンサバって、VALUE-DOMAINでドメイン買ったオマケ的なあれなので XREAユーザはみんな独自ドメイン持ってるんだろうな。

■ つづいて、SSLなしアクセスの動作を確認するため、「http://pilikala.net/~」を開いたら、 自動的にSSLページ「https://pilikala.net/~」に飛ばされてしまった。そういう仕様か。

ではSSLなしの動作を試したい時はどうするか。その場合は、XREAのサブドメインでアクセスすればよい。

独自ドメインとXREAサブドメイン、httpとhttps、の組み合わせをまとめるとこうなる。

独自ドメイン XREAサブドメイン
http://pilikala.net/~
 → SSLありにリダイレクト
http://pilikala.s269.xrea.com/~
 → SSLなし
https://pilikala.net/~
 → SSLあり
https://ss1.xrea.com/pilikala.s269.xrea.com/~
 → SSLあり

■ さらに考察。SSLなしアクセスの確認は、XREAのサブドメインじゃなくて、自分の持つドメインに適当なサブドメインを作って利用してもよいはずだ。

実際にやってみた。次の手順でいけました。
  1. 自ドメインを管理してるネームサーバの管理画面に接続する。
  2. 適当なサブドメイン、たとえばnossl.pilikala.netとかを登録。
  3. XREAレンタルサーバの管理画面に接続する。
  4. サブドメインnossl.pilikala.netの使用をサーバに登録。
  5. nossl.pilikala.netのWebアクセスを、メインWebと同じ場所に振る。
  6. nossl.pilikala.netのWebのSSL設定を「なし」にする。
結果こんな感じに。

 SSLあり →   https://pilikala.net/yuima/e/001.html 
 SSLなし →   http://nossl.pilikala.net/yuima/e/001.html 

XREAのレンタルサーバで無料SSLが使えるよ

■ 現在XREAで月200円だったかの格安サーバを借りていて、ちょっとしたスクリプトを動かすのに重宝している。
ちなみにサーバは自分のドメインと、xreaのサブドメイン、どちらでもアクセスできるように設定している。

自分のドメイン
http://pilikala.net/yuima/

xreaのサブドメイン
http://pilikala.s269.xrea.com/yuima/

■ さてこのサーバだが、今までSSLでアクセスするにはXREAの「共有SSL」機能を使うしかなかった。
これは次のように「https://ss1.xrea.com/」という別サーバを介して自分のWebページにアクセスするものだ。

たとえば目的のURLがこれだとする
http://pilikala.s269.xrea.com/yuima/

同じページを共有SSLでアクセスするにはこう書く
https://ss1.xrea.com/pilikala.s269.xrea.com/yuima/

いまいち美しくないが、まあ自分でSSLを契約すると結構お高いし、これでいいやー。と思ってたのだが。

■ 今月からXREAのレンタルサーバ全部で、無料のSSLが使えるようになった。
これは次のように「https://」指定で自分のドメインにアクセスするだけでよい。

たとえば目的のWebページがこれだとする
http://pilikala.net/yuima/

同じページを無料SSLでアクセスするにはこう書く
https://pilikala.net/yuima/

おー、有料のSSLみたい!かっこいい。
というわけで自サーバで簡単にSSLが使えるようになった件、忘れないようにここにメモしておく。

■参考:無料の独自SSL ご利用開始のお知らせ(VALUE-DOMAIN)
https://www.value-domain.com/info.php?action=press&no=20170808_01


【次回の記事】に続きました。

2017年3月26日日曜日

日本政府のルート証明書をFireFoxにインストール

政府系(.go.jp)のとあるWebサイトにFireFoxでアクセスしたら、証明書がないとか言われて接続を拒否されてしまった。

どうやらFireFoxに日本政府のルート証明書をインストールする必要があるらしい。とりあえず次の方法でオーケーだったのでメモ。
  1. 政府認証基盤のWebページ(http://www.gpki.go.jp/)を開く
  2. [インストール方法はこちら]を開く
  3. [Firefoxをご使用で「安全な接続ではありません」が表示される方はこちら]を開く
  4. [アプリケーション認証局2(Root)の自己署名証明書]をクリックする
  5. [OK]ボタンを押す

2017年3月14日火曜日

Google Bloggerの使い方メモ1

◎パーマリンクを変更する方法

  1. 投稿画面の右にある「パーマリンク」を開く
  2. 「カスタム パーマリンク」を選ぶ
  3. 手動でパーマリンク文字列を入力する
パーマリンクは「2017/03/14-01」のような「年/月/日-番号」形式が整理しやすそうである。できればこれを自動で設定したいところだ。なにか良い方法がないか調べてみよう。

◎フィードを要約表示する方法

  • フィードのURLの末尾をdefaultにすると全文表示になる
  • フィードのURLの末尾をsummaryにすると要約表示になる
参考サイト: BloggerのフィードURL構成とパラメタ―まとめ

2017年3月12日日曜日

さくらインターネット約款改定とサーバの仕様変更

少し前に、さくらインターネットからお知らせメールが来ていた。

◎基本約款改定のお知らせ

https://www.sakura.ad.jp/news/sakurainfo/newsentry.php?id=1550 https://www.sakura.ad.jp/agreement/20170315_taihi_kihon.pdf

目についた変更はこんな感じ。
  • さくらからの連絡は日本語を使い、日本語環境の整備はユーザの責任、と明記された。
  • 中国のユーザが作るコンテンツには、中国の法令が適用される、と明記された。
どんなゴタゴタがあり、どんなクレームが中国政府からきたか、目に見えるようである。どちらの関係者もご苦労様である。

いまはTorとか通して活動してもすぐ身元がバレちゃうんだろうなあ。こわいこわい。ウン十年前の日本では公衆電話からハッキングとかしたらしいけど。 もう世界中に公衆電話なくなってんじゃないかね。

◎サーバの仕様変更


約款改定とは別に、レンタルサーバの仕様について若干の変更も。
  • index.htmlの存在しないディレクトリは、デフォルトで表示禁止に
  • .htaccessファイルでのOptions命令が解禁された
いままでは何もしないとディレクトリが丸見えだったんだよなー。なので .htaccessで「Options -Indexes」を設定しようとすると、今度はOptionsが使用禁止でハマる。まあ別の方法はあるんだが、普通じゃない変なテクが必要だった。

この仕様変更は良い変更である。ていうか最初からそうしとけと言いたい。

Google Bloggerのカスタマイズ

あとで読む
Google Blogger をフルカスタマイズする時にとても勉強になった記事まとめ on @Qiita
http://qiita.com/motio/items/68173c996981ee482f94

2017年3月11日土曜日

Visual Studio 2017 のインストール

下記のMicrosoftのダウンロードページから、Visual Studio 2017が落とせる。

https://www.visualstudio.com/downloads/

以前の、2015までのVisual Studioは、無料版が次の2種類あった。

Express : C#専用/VB専用など、単独の言語しか使えないが軽い開発環境
Community : すべての言語が使える統合開発環境

しかし2017ではExpress版が存在しないようなので、Community版をインストールする。まあ前回2015ををインストールした時と違い、うちのネットも光ケーブルになったことだし、多少サイズがでかくても問題なかろう。

まずは上記ダウンロードサイトから、インストーラをダウンロードし、起動すべし。
リリースノートのページに簡単な説明がある。

https://www.visualstudio.com/ja-jp/news/releasenotes/vs2017-relnotes 

使ってみたら、このインストーラ結構いいじゃないですか。
以前に比べてインストール対象をかなり自由に取捨選択できる。
昔のCommunity版は不要な機能がごちゃまんとついてきた記憶がある。
今回のCommunity版なら、容量削減のためにExpress版を選ぶ必要はないな。

とりあえず、パッケージは次の3つを入れてみた。
  • Windows / .NET デスクトップ開発
  • Web & クラウド / Node.js 開発
  • モバイル & ゲーム / .NETによるモバイル開発 
この3つ合計でサイズは35GBくらいだったかな?
nide.js に関しては、うちのPCにはインストール済みだったが、それも新規ダウンロードするなら多少サイズが増えるかもしれない。

寝る前にインストールを開始。朝起きたら何の問題もなくインストールは完了していた。
ちなみに使っているOSは Windows 10 Home である。
Windows 10 Pro なんてプログラミングに必要ないよ!(まけおしみ)

2017年3月10日金曜日

再起動

うわーたいへんだ。15カ月ほど寝ていたら、VisualStudioが2017にバージョンアップしてしまった。

https://www.visualstudio.com/ja-jp/news/releasenotes/vs2017-relnotes

しかたないね。ここまでの記事はなかったことにして、最初からやりなおしだ。本ブログは、Visual Studio 2017でプログラミングを楽しむブログとして、再出発します!

2年前はC#でWindowsデスクトップのプログラムしか作る予定なかったけど、こんどはせっかくだからスマホのアプリとか、node.jsでサーバサイドのJavaScriptとかにも手を出してみたいのだ。