C#でランダムに色を生成する方法

 

ランダムに色を生成

public class ExchangeUtil : PublicWebApiUtil {
    /// 
    /// ランダムカラー取得
    /// 
    /// シードとなる疑似乱数ジェネレータ
    /// 
    public Color GetRandomColor(Random r) {
        int red = r.Next(256);
        int green = r.Next(256);
        int blue = r.Next(256);

        return Color.FromArgb(red, green, blue);
    }
}

淡い色だけ生成

public class ExchangeUtil : PublicWebApiUtil {

    /// 淡いランダムカラー取得
    /// 
    /// シードとなる疑似乱数ジェネレータ
    /// 
    public Color GetPaleRandomColor(Random r) {
        int red = r.Next(100, 256);
        int green = r.Next(100, 256);
        int blue = r.Next(100, 256);

        return Color.FromArgb(red, green, blue);
    }
}

C#でメール送信


メール送信サンプル

public class ExchangeUtil : PublicWebApiUtil {
    /// <summary>
    /// メール送信
    /// </summary>
    /// <param name="fromAddress">送信元アドレス</param>
    /// <param name="toAddress">送信先アドレス</param>
    /// <param name="subject">件名</param>
    /// <param name="body">メール本文</param>
    public void SendMail(string fromAddress, string toAddress, string subject, string body) {
        MailMessage msg = new MailMessage();
        SmtpClient sc = new SmtpClient();
        try {
            msg.From = new MailAddress(fromAddress, "表示名");
            msg.To.Add(new MailAddress(toAddress, ""));
            //件名
            msg.Subject = subject;
            //本文
            msg.Body = body;

            //SMTPサーバーなどを設定する
            sc.Host = this.SmtpAddress;
            sc.Port = this.SmtpPort;
            sc.DeliveryMethod = SmtpDeliveryMethod.Network;
            //メッセージを送信する
            sc.Send(msg);
        } finally {
            msg.Dispose();
            sc.Dispose();
        }
    }
}

PowerShellを使ってポートの疎通確認をする方法

 PowerShellを使ってポートの疎通確認をする機会があったので、その時の方法をメモ。

疎通できている場合、TcpTestSucceededがTrueで表示されます。

・「Windowsキー + R」で以下を入力してPowerShellを起動。

powershell

・以下のコマンドを実行。

Test-NetConnection -ComputerName 192.168.10.66 -Port 475

ComputerName           : 192.168.10.66
RemoteAddress          : 192.168.10.66
RemotePort             : 475
InterfaceAlias         : イーサネット 4
SourceAddress          : 192.168.10.65
PingSucceeded          : True
PingReplyDetails (RTT) : 2 ms
TcpTestSucceeded       : True

C#で外為オンラインから為替レートを取得してみた

 為替レートを取得するサンプルです。

「Yahoo Finance」、「Google Finance」が廃止となったので、外為オンラインから取得してみました。


為替レート取得クラス

public class ExchangeUtil : PublicWebApiUtil {
    public enum CurrencyPairCode : int {
        //英ポンド/NZドル
        GBPNZD = 1,
        //カナダドル/NZドル
        CADJPY,
        //英ポンド/AUドル
        GBPAUD,
        //AUドル/円
        AUDJPY,
        //AUドル/NZドル
        AUDNZD,
        //ユーロ/カナダドル
        EURCAD,
        //ユーロ/米ドル
        EURUSD,
        //NZドル/円(jsonString);

        return ds.Tables[0];
    }

    // 指定した貨幣コードの始値を取得
    public Decimal GetOpenPrice(CurrencyPairCode currencyPairCode) {
        Decimal price = -1;

        DataTable exchangeTbl = GetExchangeRateTable();
        DataRow[] rows = (
            from row in exchangeTbl.AsEnumerable()
            let qOpenPrice = row.Field(EnumUtil.GetLabel(RateTableColIdx.Open))
            let qCurrencyPairCode = row.Field(EnumUtil.GetLabel(RateTableColIdx.CurrencyPairCode))
            where qCurrencyPairCode == EnumUtil.GetName(currencyPairCode)
            select row).ToArray();

        price = Decimal.Parse(rows[0][(int)RateTableColIdx.Open].ToString());

        return price;
    }

}

親クラス

public class PublicWebApiUtil {
    public PublicWebApiUtil() {
    }
    /// WebAPI呼び出し
    protected string GetResponseString(string url) {
        HttpWebRequest req = null;
        HttpWebResponse res = null;
        StreamReader sr = null;
        string jsonString = "";
        try {
            //サーバーからデータを受信する
            req = (HttpWebRequest)WebRequest.Create(url);
            res = (HttpWebResponse)req.GetResponse();
            sr = new StreamReader(res.GetResponseStream());
            //すべてのデータを受信する
            jsonString = sr.ReadToEnd();
        } finally {
            sr.Close();
            res.Close();
        }
        return jsonString;
    }
}

使い方

     public void GetPriceRate() {
         ExchangeUtil eu = new ExchangeUtil();
         //始値のレートを取得
         Decimal d = eu.GetOpenPrice(ExchangeUtil.CurrencyPairCode.USDJPY);
     }

厳選 Excelショートカット集

 

改ページプレビュー切替

操作ショートカットキー
改ページプレビュー「Alt」,「w」, 「i」
ページレイアウト「Alt」,「w」, 「p」
標準「Alt」,「w」, 「l」

ジャンプ

操作ショートカットキー
先頭にジャンプ「Ctrl + Home」(「Ctrl + Fn + Home」)
末尾にジャンプ「Ctrl + End」(「Ctrl + Fn + End」)
任意のセルをジャンプ「F5」

日付/時刻の入力

操作ショートカットキー
現在日付「Ctrl + ;」
現在時刻「Ctrl + :」
現在日時「Ctrl + ;」 + ' ' + 「Ctrl + :」

罫線

操作ショートカットキー
外枠罫線「Ctrl + &」(「Ctrl + Shift + 6」)
罫線解除「Ctrl + _」(「Ctrl + Shift + \」)

書式だけ貼り付け/値だけ貼り付け

右クリックとの合わせ技です。 または、右クリックの代わりに「Ctrl + Alt + v」でも同様の操作になります。

操作ショートカットキー
書式だけ貼り付け右クリック + 「s」 + 「t」
値だけ貼り付け右クリック + 「s」 + 「v」

行選択/列選択

操作ショートカットキー
行選択「Shift + Space」
列選択「Ctrl + Space」

フォント関連

操作ショートカットキー
打消し線のON/OFF「Ctrl + 5」
太字のON/OFF「Ctrl + b」
斜体のON/OFF「Ctrl + i」

シート操作関連

操作ショートカットキー
新しいワークシートを追加「Shift + F11」
次のワークシートへ移動「Ctrl + PageDown」
前のワークシートへ移動「Ctrl + PageUp」

ファンクションキー

ファンクションキー動作代替キー
「F2」アクティブセルを編集状態にする。
「F4」直前の動作を繰り返す。
「F4」(数式編集中)絶対参照と相対参照の切替える。
「F5」ジャンプダイアログボックスを表示。「Ctrl + g」
「F7」スペルチェック。(デフォルトでは英語のみ)
「F8」拡張選択モードの切替え。
「F9」開いているブックの全ワークシートを再計算する。
「F10」キーヒントの表示切替え。「Alt」
「F11」現在の選択範囲でグラフを作成。
「F12」「名前を付けて保存」ダイアログを表示。

無料版のMicrosoft TeamsでゲストユーザとWeb会議をする方法

 


Web会議開始までの流れ

大きく以下の流れで進めていきます。

  • 1.ホスト側でゲスト招待用のプライベートチームを作成
  • 2.ホスト側からゲストユーザを会議に招待
  • 3.ゲスト側が招待リンクをクリックして会議に参加
  • 4.ホスト側が参加を許可
  • 5.会議を開始

詳細手順


1.ホスト側でゲスト招待用のプライベートチームを作成

  • 新規チームを作成。
  • 「初めからチームを作成する」をクリック。
  • 「プライベート」をクリック。
  • チーム名を入力し、「作成」ボタンをクリック。
  • 「スキップ」ボタンをクリック。

2.ホスト側からゲストユーザを会議に招待

  • 「チーム」をクリック
  • 先程、作成した「ゲスト用チーム」を選択。
  • 「今すぐ会議」ボタンをクリック。
  • 打合せのタイトルを入力。
  • 「今すぐ会議」ボタンをクリック。
  • 「参加情報をコピー」ボタンをクリック。

3.ゲスト側が招待リンクをクリックして会議に参加

  • クリップボードに招待用のリンクがコピーされるので、HTMLメール等でゲストユーザにリンクを送付。
  • ゲストユーザがリンクをクリックすると、Teamsが起動します。
  • ブラウザ起動か、アプリ起動かを選択。

※アプリで起動すると、リモート操作が可能になります。

※リンクをクリックしても下記の起動画面が表示されない場合は、こちらを参考にして下さい。

  • ゲストユーザ名を入力
  • 「今すぐ参加」ボタンをクリック。

4.ホスト側が参加を許可

  • ゲストからの参加依頼が表示されますので、許可して下さい。

5.会議を開始

  • これでゲストユーザとWeb会議を開始できます。

ViEmuでCtrl+[でノーマルモードに移行できるようにした

 ViEmuをデフォルトのまま日本語キーボードで使うと「Ctrl+[」でノーマルモードに移行しない。

そこで、解決方法を見つけたので、備忘録として記録。


設定手順

  • 「C:\Users\(対象ユーザフォルダ)\」に「_viemurc」ファイルを作成。
  • 「_viemurc」ファイルを以下のように編集。
"<C-[><Esc>のように
nnoremap <C-[> :noh<CR>
  • 「拡張機能」-「ViEmu」-「Set Keybindings...」を実行

C#でMP3, MP4のメタデータを取得/編集する方法

NuGetにtaglibという便利なライブラリがあるので、早速、インストールしてみた。
使い方は、以下のような感じ。
ジャケットイメージも付けれるので、貯まったメディアファイルの整理に役立ちそう。

private void SaveTag() {
    var f = TagLib.File.Create(@"C:\Temp\対象.mp3");

    //タイトル
    f.Tag.Title = "タイトル";
    //アーティスト
    f.Tag.Performers = new string[] { "タイトル名" };
    //ジャンル
    f.Tag.Genres = new string[] { "洋楽" };
    //歌詞
    f.Tag.Lyrics = "歌詞";
    //コメント
    f.Tag.Comment = "コメント";

    //画像
    string imgPath = @"C:\Temp\カバー画像.jpeg";
    var ic = new System.Drawing.ImageConverter();
    var ba = (byte[])ic.ConvertTo(Image.FromFile(imgPath), typeof(byte[]));
    var byteVector = new TagLib.ByteVector(ba);
    var pic = new TagLib.Picture(byteVector);
    pic.Type = TagLib.PictureType.FrontCover;
    pic.Description = "Cover";
    pic.MimeType = System.Net.Mime.MediaTypeNames.Image.Jpeg;
    f.Tag.Pictures = new TagLib.IPicture[] { pic };

    f.Save();
}

将来構想

貯まったMP3,MP4に対する情報を、Webから収集し、メタデータとして自動付与するツールを作成。
後は、全文検索ツールのPokuda Searchを使って、
見たいファイルにすぐにアクセスといったことを考え中。

これで、ファイル整理の手間も省けるかも。。。

【プレミア本】Human Interface Guidelines:The Apple Desktop Interface(日本語版)

 

どんな本?


今日のパーソナルコンピュータのGUI(グラフィカルユーザインタフェース)の手本となった、 アップル社のマン・マシンインタフェース設計基準を解説した本です。 GUIの設計思想を含め、多くのデザイナーにとって重要な本として今でも様々な書物で、参照されている名著です。 現在は絶版となっており、またその内容は20年を経た今も色あせておらず。プレミア価格が付いております。

出版社出版日
新紀元社2004/07

Amazonでの価格



メルカリでの取引実績


ポイント

ヒューマンインタフェースデザイン原則

  • 隠喩

    • アプリケーションの機能と概念を伝えるために、現実世界に例えて表現すること。
      • 「ファイル」と「フォルダ」の関係
      • 押せることを表す「ボタン」
      • 「ゴミ箱」
  • ユーザの心のモデルを反映せよ

    • 親しみやすさ
    • 単純さ
    • 利用しやすさ
    • 発見可能性
  • 明示的な動作と暗黙の動作

    • 明示的な動作
      • 実行したいコマンドのメニューを選択する。
    • 暗黙の動作
      • ファイルをゴミ箱にドラッグドロップする。(ファイルを削除)
  • 直接的な操作

    • ドラッグ、ドロップ操作
  • ユーザによる制御

  • 反応と伝達

    • 時間のかかる操作を伝える。
  • 一貫性

  • WYSIWYG

    • 見た目通り印刷できる。
  • 寛容性

    • アンドゥ、リドゥ
  • 認識の安定感

    • チェックボックス、ボタンなどユーザがすぐに認識できるUI
  • 美観の完成

    • アイコン
    • フォントの大きさ、TrueTypeフォント
  • モードの排除

    • 出来る限りユーザの望む操作をいつでも行えるようにする。
  • あなたのソフトフェアでの複雑さを管理する

    • 出来る限りデザインを単純に保つ

最新OSのガイドラインはWeb(英語)でも確認できます。

厳選 Visual Studioの便利なショートカット

  エラー箇所にジャンプ 「Ctrl + Shift + F12」 ブレークポイント 設定/解除 「F9」 有効化/無効化 「Ctrl + F9」 ViEmu特有 「:ls」:バッファナンバーのリストを表示。 「:b2」:バッファ2のファイルを開く。 「:n」:次のバッファのファ...