2024年3月30日土曜日

UWP datagrid 入門

やりたいこと
Microsoftのこちらのページの通りにコードを書いて、
下図のようなdatagridが表示されるまでをやってみます。

「How to: Add a DataGrid control to a page」
https://learn.microsoft.com/ja-jp/windows/communitytoolkit/controls/datagrid_guidance/datagrid_basics







自分がよくわかっていないだけだと思うのですが、
Microsoftのページの記載だけだと、途中で一回行き詰りました。
つまずいたあたりを中心に忘れないように整理しておきます。
環境
Win11 23H2
Visual Studio 2022 community
Step1.プロジェクト作成
Visual Studioで「空白のアプリ(ユニバーサルWindows)」のプロジェクトを作成する。
プロジェクト名や、ターゲットバージョンは適当に設定します。
Step2.datagridのパッケージを追加
プロジェクトメニュー > NuGetパッケージの管理...を選択。
参照を選択
datagridで検索
「Microsoft.Toolkit.UWP.UI.Controls.DataGrid」をインストールする。


Step3.xamlの編集
MainPage.xamlに下記の行を追加します。



Step4.datagridに値を入れるクラスを準備する (ここでつまずいた)
ソリューションエクスプローラー > 追加 > 新しい項目 > クラス
MyViewModelというクラスを追加する。
MyViewModelの中で、参考にしたサイトにあるCustomerクラスを呼び出すようにします。
MyViewModelのクラスとCustomerクラスがこうなります。
Customerクラスは参考サイトのままです。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace App11
{
    public class MyViewModel
    {
        private List _customers = new List();

        public MyViewModel()
        {
            _customers = Customer.Customers();
        }

        public List customers
        {
            get { return _customers; }
        }
    }

    public class Customer
    {
        public String FirstName { get; set; }
        public String LastName { get; set; }
        public String Address { get; set; }
        public Boolean IsNew { get; set; }

        public Customer(String firstName, String lastName,
            String address, Boolean isNew)
        {
            this.FirstName = firstName;
            this.LastName = lastName;
            this.Address = address;
            this.IsNew = isNew;
        }

        public static List Customers()
        {
            return new List(new Customer[4] {
            new Customer("A.", "Zero",
                "12 North Third Street, Apartment 45",
                false),
            new Customer("B.", "One",
                "34 West Fifth Street, Apartment 67",
                false),
            new Customer("C.", "Two",
                "56 East Seventh Street, Apartment 89",
                true),
            new Customer("D.", "Three",
                "78 South Ninth Street, Apartment 10",
                true)
        });
        }
    }
}

MainPage.xaml.cs側でMyviewModelをnewします。
namespace App11
{
    /// 
    /// それ自体で使用できる空白ページまたはフレーム内に移動できる空白ページ。
    /// 
    public sealed partial class MainPage : Page
    {
        public MyViewModel mv = new MyViewModel();

        public MainPage()
        {
            this.InitializeComponent();
        }
    }
}

Step5.xamlの編集(2)
MainPage.xamlに下記のように更新します


結果
実行するとデータグリッドビューが表示されます。
よかった。
苦労した点
msのサイトに記載のcustomerクラスをどうやってつかったらよいのかわからず。
途中で行き詰ってしまいました。

2024年3月20日水曜日

UWP データバインディングの勉強

 こちらのページで勉強する予定。


https://learn.microsoft.com/ja-jp/training/modules/implement-data-binding-in-windows-10-app/?source=recommendations


UWPでデータグリッドを使おうと思って↓のページを参考に進めてたのですが、Viewmodelがでてきたところで挫折してしまいました。

なので、まずは↑のページでデータバインディングを勉強しようと思ってます。


https://learn.microsoft.com/ja-jp/windows/communitytoolkit/controls/datagrid_guidance/datagrid_basics


MVVMよくわらかない...

2023年9月22日金曜日

巨大な数字の計算

巨大な数字の計算に興味があったので、ググってみたらこちらに

たどり着きました。

あとでじっくり読んでみよ。


https://qiita.com/square1001/items/1aa12e04934b6e749962

2023年9月10日日曜日

CUDA 1

やりたいこと
CUDAでプログラミングして、高速な処理ができたらいいなと思い、CUDAに入門することにしました。
そのメモになります。
環境
OS : Windows11 22H2
IDE : Visual Studio 2019
GPU : GTX1660 super
CUDA : cuda_12.2.2_537.13_windows
0.参考資料
こちらのサイトを参考にCUDAのトライアルをすすめました。
https://developer.nvidia.com/how-to-cuda-c-cpp
CUDA Toolkitのページ → Training → C/C++ using CUDA C をたどりました。
基本的にはここの動画を参考に進めていくことにしました。
1.ダウンロード
こちらからダウンロードしました。
https://developer.nvidia.com/cuda-toolkit
2.サンプルを起動するまで
ここからサンプルをダウンロードしました。
トライアルの動画だと、toolkitをダウンロードすると勝手にサンプルも入ることになってますが、
どこかのバージョンからtoolkitには同梱されなくなったそうなので、こちらからダウンロードする必要がありました。
https://github.com/nvidia/cuda-samples



ダウンロードしたファイルの中のmatrixMulというものを実行する。
参考にした動画でmatrixMulを実行していたので、そうしました。



実行結果


succesと表示され、成功しました。
ひきつづき、2個目の動画もみてみます。

2023年9月3日日曜日

C# Parallel 入門 2

やりたいこと
以前の記事がこちらになります。
C# Parallel 入門

前回の方法では、for文の中の計算結果を足し合わせるということをしていたのですが、
もう少し複雑なことがしたくなりました。

1からNまで順番に数字を調べていって、それが目当ての数字だったら、
Listに登録することが目的です。

コード
// 並列化
object obj = new object();
Parallel.For>(1, endNum, () => new List(), (Int64 num, ParallelLoopState state, List partial) =>
{
    // もとめたい数字がきたらListに登録する
    if (num == XXX)
    {
        partial.Add(num);
    }

    return partial;
},
    partial =>
    {

        foreach (var val in partial)
        {
            lock (obj) motometeruList.Add(val);
        }
    });

コードの説明
結果
for文でループさせる回数や中身の計算にもよると思いますが、
自分がやりたかった計算では、「40000000」までループさせる計算で、
Parallel使う前は1500秒だったものが、Parallelに変更すると、
300秒ぐらいで終わるようになりました。

2023年3月24日金曜日

2023年2月22日水曜日

Enumchar V3.2.1.0 リリース

EnumChar V3.2.1.0をリリースしました。
http://www.vector.co.jp/soft/winnt/writing/se483244.html
変更点
[機能追加]Unicode領域を追加
[機能追加]空白文字を除外するチェックボックス追加
新規に追加したコード領域
{"U+0870", "U+089F", "Arabic Extended-B"}, // 2023.02.11 add
{"U+1C90", "U+1CBF", "Georgian Extended"}, // 2023.02.11 add
{"U+10570", "U+105BF", "Vithkuqi"}, // 2023.02.11 add
{"U+10780", "U+107BF", "Latin Extended-F"}, // 2023.02.11 add
{"U+10D00", "U+10D3F", "Hanifi Rohingya"}, // 2023.02.11 add
{"U+10E80", "U+10EBF", "Yezidi"}, // 2023.02.11 add
{"U+10EC0", "U+10EFF", "Arabic Extended-C"}, // 2023.02.11 add
{"U+10F00", "U+10F2F", "Old Sogdian"}, // 2023.02.11 add
{"U+10F30", "U+10F6F", "Sogdian"}, // 2023.02.11 add
{"U+10F70", "U+10FAF", "Old Uyghur"}, // 2023.02.11 add
{"U+10FB0", "U+10FDF", "Chorasmian"}, // 2023.02.11 add
{"U+10FE0", "U+10FFF", "Elymaic"}, // 2023.02.11 add
{"U+11800", "U+1184F", "Dogra"}, // 2023.02.11 add
{"U+11900", "U+1195F", "Dives Akuru"}, // 2023.02.11 add
{"U+119A0", "U+119FF", "Nandinagari"}, // 2023.02.11 add
{"U+11AB0", "U+11ABF", "Unified Canadian Aboriginal Syllabics Extended-A"}, // 2023.02.11 add
{"U+11B00", "U+11B5F", "Devanagari Extended-A"}, // 2023.02.11 add
{"U+11D60", "U+11DAF", "Gunjala Gondi"}, // 2023.02.11 add
{"U+11EE0", "U+11EFF", "Makasar"}, // 2023.02.11 add
{"U+11F00", "U+11F5F", "Kawi"}, // 2023.02.11 add
{"U+11FB0", "U+11FBF", "Lisu Supplement"}, // 2023.02.11 add
{"U+11FC0", "U+11FFF", "Tamil Supplement"}, // 2023.02.11 add
{"U+12F90", "U+12FFF", "Cypro-Minoan"}, // 2023.02.11 add
{"U+13430", "U+1345F", "Egyptian Hieroglyph Format Controls"}, // 2023.02.11 add
{"U+16A70", "U+16ACF", "Tangsa"}, // 2023.02.11 add
{"U+16E40", "U+16E9F", "Medefaidrin"}, // 2023.02.11 add
{"U+18B00", "U+18CFF", "Khitan Small Script"}, // 2023.02.11 add
{"U+18D00", "U+18D7F", "Tangut Supplement"}, // 2023.02.11 add
{"U+1AFF0", "U+1AFFF", "Kana Extended-B"}, // 2023.02.11 add
{"U+1B130", "U+1B16F", "Small Kana Extension"}, // 2023.02.11 add
{"U+1CF00", "U+1CFCF", "Znamenny Musical Notation"}, // 2023.02.11 add
{"U+1D2C0", "U+1D2DF", "Kaktovik Numerals"}, // 2023.02.11 add
{"U+1D2E0", "U+1D2FF", "Mayan Numerals"}, // 2023.02.11 add
{"U+1DF00", "U+1DFFF", "Latin Extended-G"}, // 2023.02.11 add
{"U+1E030", "U+1E08F", "Cyrillic Extended-D"}, // 2023.02.11 add
{"U+1E100", "U+1E14F", "Nyiakeng Puachue Hmong"}, // 2023.02.11 add
{"U+1E290", "U+1E2BF", "Toto"}, // 2023.02.11 add
{"U+1E2C0", "U+1E2FF", "Wancho"}, // 2023.02.11 add
{"U+1E4D0", "U+1E4FF", "Nag Mundari"}, // 2023.02.11 add
{"U+1E7E0", "U+1E7FF", "Ethiopic Extended-B"}, // 2023.02.11 add
{"U+1EC70", "U+1ECBF", "Indic Siyaq Numbers"}, // 2023.02.11 add
{"U+1ED00", "U+1ED4F", "Ottoman Siyaq Numbers"}, // 2023.02.11 add
{"U+1FA00", "U+1FA6F", "Chess Symbols"}, // 2023.02.11 add
{"U+1FA70", "U+1FAFF", "Symbols and Pictographs Extended-A"}, // 2023.02.11 add
{"U+1FB00", "U+1FBFF", "Symbols for Legacy Computing"}, // 2023.02.11 add
{"U+30000", "U+3134F", "CJK Unified Ideographs Extension G"}, // 2023.02.11 add
{"U+31350", "U+323AF", "CJK Unified Ideographs Extension H"}, // 2023.02.11 add