タグ

ブックマーク / zenn.dev/nuits_jp (12)

  • C#でDPAPIを使用して機密データを安全に暗号化する方法

    解法 C#でデータ保護API(DPAPI)を使用して機密データ(パスワードやAPIキーなど)を安全に暗号化・復号化する方法を紹介します。DPAPIを使用することで、Windowsの組み込み機能を利用して簡単かつ安全にデータを保護できます。 以下に具体的なコード例を示します: using System; using System.Text; using System.Security.Cryptography; // 暗号化関数 static string EncryptSensitiveData(string sensitiveData) { byte[] dataBytes = Encoding.UTF8.GetBytes(sensitiveData); byte[] encryptedBytes = ProtectedData.Protect(dataBytes, null, Data

    C#でDPAPIを使用して機密データを安全に暗号化する方法
  • Windows認証情報マネージャーを使用したアプリケーショントークンの安全な管理

    解法 アプリケーションのトークン(アクセストークンやパスワードなど)を安全に管理するために、Windows認証情報マネージャーを使用する方法を紹介します。 以下のコードは、C#を使用してWindows認証情報マネージャーでトークンを管理する基的な実装を示しています: using System; using System.Threading.Tasks; using CredentialManagement; // アプリケーション名とトークンを識別するための一意の文字列 // 注意: この値は秘密にし、推測しにくいものにすることが重要です const string CredentialTarget = "YourAppName:ServiceToken:6789ABCD-EF01-2345-6789-ABCDEF012345"; // 保存されているトークンを取得 string acce

    Windows認証情報マネージャーを使用したアプリケーショントークンの安全な管理
  • Octokit.NETを利用し、デバイスフロー認証を使用して、任意のリポジトリに直接ファイルを追加する

    解法 Octokit.NETライブラリとデバイスフロー認証を使用して、GitHubの任意のリポジトリにファイルを追加する手順は以下の通りです: GitHub OAuth Appを作成する Octokit.NETライブラリをプロジェクトに追加する デバイスフロー認証を実装してアクセストークンを取得する GitHubクライアントを初期化し、認証する リポジトリにファイルを追加する 解説 1. GitHub OAuth Appの作成 GitHubの"Settings" > "Developer settings" > "OAuth Apps"に移動 "New OAuth App"をクリックし、必要な情報を入力 重要: Authorization callback URLにはhttp://localhostを入力 注意: アプリケーションの設定で「Enable Device Flow」オプションを

    Octokit.NETを利用し、デバイスフロー認証を使用して、任意のリポジトリに直接ファイルを追加する
  • LibGit2Sharpを使用してGitリポジトリを操作する方法

    解法 LibGit2Sharpを使用してGitリポジトリを操作する基的な方法を紹介します。以下のC#コードは、ファイルの作成、追加、コミット、そしてリモートリポジトリへのプッシュを行います。 using LibGit2Sharp; using System; using System.IO; // トークンを第一引数から取得 string token = args[0]; // リポジトリとファイルの設定 string repoPath = @"D:\NuitsLabo"; string fileName = "example.txt"; string filePath = Path.Combine(repoPath, fileName); string fileContent = "Hello, LibGit2Sharp"; string commitMessage = "Add ex

    LibGit2Sharpを使用してGitリポジトリを操作する方法
  • なぜDependency Injectionなのか? ~関心の分離と疎結合~

    稿は「アーキテクチャを突き詰める Online Conference」における発表「なぜDependency Injectionなのか? ~関心の分離と疎結合~」の登壇原稿となります。 発表時の動画アーカイブは後日公開されたタイミングでリンクを追加いたします。 また、稿のサンプルコードとPower PointはGitHubで公開しています。 「CC BY-SA 4.0」で公開していますので、気に入っていただけたら営利目的含め、ライセンスの範囲で自由に利用していただいて問題ありません。 https://github.com/nuitsjp/WhyDependencyInjection というわけで、稿の目指すゴールはこちら。 今日は、この場にいる皆さんが「なぜDependency Injectionを利用するのか?」ということを、理解いただくのが日のゴールとなります。 というわけで

    なぜDependency Injectionなのか? ~関心の分離と疎結合~
    s_ryuuki
    s_ryuuki 2024/06/07
  • Magick.NETとImageSharpとSystem.Drawingの性能評価してみた

    はじめに WebPのデコード処理と、画像加工に特化したベンチマークを取得してみました。 使い方としてかなり特殊で、特にSystem.Drawingを利用した実装はunsafeコードもゴリゴリ利用しているので、それぞれのライブラリの性能差というよりは、ゴリゴリ実装しないライブラリ任せで充分な性能が出るかどうかを見る意図だと考えてください。 また特にSystem.DrawingはWindows以外で利用しにくいので、クラウド環境であれば最初からImageMagickやImageSharpを利用する想定にしておいた方がいいと思います。 環境 BenchmarkDotNet v0.13.10, Windows 11 (10.0.22621.2715/22H2/2022Update/SunValley2) 13th Gen Intel Core i9-13900H, 1 CPU, 20 logica

    Magick.NETとImageSharpとSystem.Drawingの性能評価してみた
  • 見積・提案書に書いておくと不幸を減らせる前提条件

    はじめに ちょっとつぶやいたら思いのほか需要がありそうだったので、簡単にまとめておきます。 おことわり これを書いておけば、すべての不幸を避けられるというものではありません 提出先との関係性次第では、書かないほうがいいこともあるかも 私自身が普段提案している内容が、すべて記載されているわけでもありません(うろ覚えで書いてたり、大人の事情) これを流用しておこったすべての事項について、何らかの責任をとることはできません 稿では請負による開発を想定しています でも共有することで、この業界の不幸が減ればいいなということでつらつら書いてみます。 他にもあるようなら、Twitterなりコメントなりで提案してもらえると嬉しいです。 前提条件を書く目的 見積・提案書通りに、実施するために必要な条件を明確にする 条件を逸脱したときに、どうなるのかハッキリさせる 上記は概ねつぎのとおり 実現が不可能になる

    見積・提案書に書いておくと不幸を減らせる前提条件
  • Friendlyで作ったWPFの自動テストをGithub Actions上でテストする(.NET Framework編)

    WPFで作成されたアプリケーションのUIを自動化したいというのは、誰もが夢見つつ、実際に実現するのはなかなかにハードルが高い目標だと思います。 何しろ価値のあるレベルのテストを維持すること自体が、死ぬほど大変なので、できている方々には尊敬の念しかありません。 さて稿では、WPFアプリケーションの為のテストをFriendlyで作った場合に、それをGitHub Actionsで動作させるための方法について整理します。 Friendly自体の使い方は範囲に含めておりませんので、公式のドキュメントなどをご覧ください。 稿のコードなどはこちらに公開しています。 https://github.com/nuitsjp/WpfActionsStudy 前提 Friendlyで実装された .NET FrameworkベースのWPFアプリケーション向けテストが実装されている .NET6.0などで実装されて

    Friendlyで作ったWPFの自動テストをGithub Actions上でテストする(.NET Framework編)
  • DDDのValueObjectをCSVから一括生成する「UnitGeneratorTemplate」をリリースしました

    私はValueObject好きなんですが、でも実装って案外面倒ですよね。 recordが登場してだいぶ楽になりましたが、それでも不十分な側面が多くあります。 それらの課題を解決してくれるライブラリーとしてUnitGeneratorがあります。 非常によくできていて痒い所に手が届くのですが、それで大量に作ると大変です・・・ というわけで、CSVに設定を定義すると一括生成してくれるテンプレートライブラリー「UnitGeneratorTemplate」をリリースしました! Github NuGet UnitGenerator UnitGeneratorTemplateはCSVに設定を記載することで、UnitGeneratorを利用したValue Objectを一括で自動生成するためのテンプレートパッケージです。 T4テンプレートとCSVを利用して、任意のUnitを一括で作成できます。 Getti

    DDDのValueObjectをCSVから一括生成する「UnitGeneratorTemplate」をリリースしました
  • LINQ to Objectsを使う前におさえておくべき3つのこと

    はじめに LINQ to Objects(以後LINQ)は、Listや配列など、コレクションに対するフィルターやグルーピング・加工処理を宣言的に記述する仕組みです。 従来の手続き的な手法に比較して、宣言的に記述することで生産性と品質の双方を向上できます。 実際に「intの配列から偶数を取り出し、小さい順に並べ替えられたListへ変換する」コードで比較してみましょう。 下記が従来の手続き的に記述されたコードです。 int[] numbers = { 5, 10, 8, 3, 6, 12 }; List<int> evenNumbers = new(); foreach (var number in numbers) { if (number % 2 == 0) { evenNumberList.Add(number); } } evenNumbers.Sort((x, y) => x - y

    LINQ to Objectsを使う前におさえておくべき3つのこと
    s_ryuuki
    s_ryuuki 2022/03/29
  • WPFをGeneric Host上で実行するためのライブラリ「Wpf.Extensions.Hosting」をリリースしました

    現在新しくリリースされる.NET向けの素晴らしいライブラリの多くは、Generic Hostを前提として提供されるようになってきていると思います。そしてWPFアプリケーションからそれらを利用するためには、WPFアプリケーションもGeneric Host上で動作させる必要があります。 WPFアプリケーションをGeneric Hostで動かすことは、基的な動作であればそれほど難しいわけではありません。しかしGeneric Hostのすべてを享受するためには、それなりに工夫が必要です。 そこでWpf.Extensions.Hostingをリリースしました。 Github NuGet Wpf.Extensions.Hostingは、WPFアプリケーションをGeneric Host上で動作させるためのライブラリです。 Wpf.Extensions.Hostingでは、.NET6ライクにGeneri

    WPFをGeneric Host上で実行するためのライブラリ「Wpf.Extensions.Hosting」をリリースしました
  • C#メタプログラミング概略 in 2021

    稿はC# Tokyo オンライン LT 大会 2021/01にて発表した「C#メタプログラミング概略 in 2021」の発表内容を文書化したものです。 発表時のスライドは以下に公開しています。 C#メタプログラミング概略 in 2021 またサンプルコードは以下にすべて公開しています。 https://github.com/nuitsjp/MetaprogrammingOverviewIn2021 Introduction さてC#9.0のリリースとあわせて、Source Generatorがリリースされましたね。昨今、一部でメタプログラミングが活性化しているように、個人的には感じています。 そこで項では、C#で利用可能な代表的なメタプログラミング手法について どういったものが存在し どういうときに何をつかえばいいのか? その大枠を整理してみました。 Attention! 稿は、可能

    C#メタプログラミング概略 in 2021
    s_ryuuki
    s_ryuuki 2021/01/31
  • 1