からめもぶろぐ。

俺たちは雰囲気で OAuth をやっている

C#

Binary Module (C#) でいい感じに Write-Verbose したい

この記事は「PowerShell Advent Calendar 2018」の参加記事です。qiita.comちなみに投稿が遅れたのではなく 16 日が埋まっていなかったので穴埋めしています。ここ重要! Write-Verbose について PowerShell では Verbose パラメーターを付けることでトレー…

PowerShell Core で Binary Module (C#) を開発するときの注意点について

この記事は「PowerShell Advent Calendar 2018」の参加記事です。qiita.comサンプルとして簡単な JSON を返すコマンドレットを持つモジュールを作成します。対象の PowerShell Core のバージョンは 6.1.0 です。 サンプル コード SampleModule.csproj <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netc</targetframework></propertygroup></project>…

Microsoft Graph で会議室の予定表を取得する

元ネタsocial.msdn.microsoft.com結構よくある話で OAuth のハマりどころの最たるものが「アプリケーションにアクセス許可を与えたのにデータが取れない」となることなのです。 上記の「Calendars.ReadWrite.Shared を付けたのに会議室の情報が取れない」と…

CSOM の WebTemplate には Path が入ってこない

どういうことかというと、以下のコードを実行します。 public static class Program { private static void Main(string[] args) { var siteUrl = "{{siteurl}}"; var userName = "{{username}}"; var rawPassword = "{{password}}"; var securePassword = n…

SharePoint Online の Excel Services (SOAP API) を叩いてみる

Excel Services を使うと SharePoint のドキュメント ライブラリに保存されている Excel ファイルを直接編集することができます。プログラムから Excel を編集というと Open XML SDK を使うか、サードパーティー製のコンポーネントを使うかという話になるの…

CSOM で実行される Web リクエストを取得する

CSOM では内部的に Web リクエストを発行していて、どういうリクエストが流れているかを見るためには Fiddler などのツールを使わないといけないのですが、とても面倒くさいので、コードから取得できるようにしてみました。ちなみに ExecutingWebRequest イ…

ASP.NET MVC の Repository パターン再考

(2018/05/22 追記) こちらの記事にまとめました。blog.karamem0.jpASP.NET MVC が出始めた頃、Repository パターンが話題になりました。その後、あまり Repository パターンについての議論がされていないようなので、改めて Repository パターンについて考え…

SharePoint Online の REST API を UWP から実行する

UWP から SharePoint Online REST API を実行するサンプルを作りました。出退勤の打刻を SharePoint リストに送るプログラムです。OAuth を使っているので認証から API 実行までの流れが確認できると思います。なお Access Token の更新には対応していません…

SharePoint Online の REST API を対話なしで実行する

SharePoint 2013 では REST API が使用できるのですが、MSDN ではプロバイダー ホスト型 SharePoint アドインから OAuth で使用する場合の説明がほとんどです。例えば、バッチ プログラムのような、特定のユーザーを指定して対話なしでアプリケーションを実…

SPWeb.AllowUnsafeUpdates は使うべきではない

SPSecurity.RunWithElevatedPrivileges メソッドを使うときに必ず一緒にお世話になる SPWeb.AllowUnsafeUpdates プロパティですが、エラー回避のために何も考えずに使っている例が多々あると思います。何も考えずに使っているこのコードが何をしているのかを…

LINQ to SharePoint の仕組みを理解する

SharePoint 2010 から LINQ to SharePoint という機能が追加されました。これまでの SPQuery によるクエリ検索をより簡単にする仕組みで、Entity Framework を使ったことのある開発者であれば、ほとんど違和感なく使うことができます。SPQuery で使われる CA…

SharePoint 2013 で ClosedXML を使って Excel へのエクスポートを実装する

SharePoint の標準機能でもリストのデータを Excel にエクスポートすることはできるのですが、プログラムからエクスポートしたいことがあります。ClosedXML を使ってリストのデータを Excel にエクスポートしたいと思います。 サンプル コード github.com El…

Windows Phone 8 以降でデバイス情報を取得する

C#

Windows Phone 7 の頃は DeviceStatus クラスで、端末名やファームウェア バージョンなどのデバイスの情報が取れていたのですが、Windows Phone 8 以降 (Windows ストア アプリ) ではどこにいったのかと思ったら、EasClientDeviceInformation クラスになった…

続・WindowStyle を None にしてカスタム ウィンドウを作ってみる

C#

前回の記事の続きです。blog.karamem0.jpWin32 API を駆使してカスタム ウィンドウの動作を制御していたのですが、実はまだ問題がありました。実は、最小化または最大化したときにアニメーションが行われないのですよね。文字だけだと伝えにくいのですが、パ…

WindowStyle を None にしてカスタム ウィンドウを作ってみる

C#

WPF でタイトル バーをカスタマイズしたいということはあるのですが、割と簡単にできそうな WindowStyle プロパティを None に指定する方法があまりに残念であることと、WindowChrome クラスもあまり精度が高くないようなので (ちょっと試した感じではリサイ…

カスタム属性の拡張メソッドが追加されている件について

C#

.NET 4.5 からカスタム属性を取得するためのジェネリックな拡張メソッドが追加されました。docs.microsoft.comこれまでは var assembly = Assembly.GetExecutingAssembly(); var attribute = assembly.GetCustomAttribute(typeof(AssemblyTitleAttribute)) a…

LINQ to Entities クイック リファレンス

C#

LINQ to Entities クイック リファレンスこの記事は「C# Advent Calendar 2012」の参加記事です。atnd.orgLINQ to Entities におけるクエリの記述方法は以下に記載があるのですが「SQL ではこうやりたいのに!」というときの逆引きリファレンスがなかったの…

UpdateModel で子エンティティも含めて更新しようとしたらうまくいかなかった

Controller の UpdateModel (または TryUpdateModel) で子エンティティも含めて更新しようと思ったらうまくいかなかったので、サンプル コードを書いて検証してみます。 サンプル コード モデル 以下のような親子関係を持つ POCO エンティティを用意します。…

knockout.js でページの再読み込みに対応する

前回の記事の続きです。blog.karamem0.jp前回の状態だと、ページを再読み込みすると、検索結果がすべて消えて初期状態に戻ってしまうという問題点がありました。それではやはり使い勝手が悪いので、対応を考えてみたいと思います。 簡単に言ってしまうと、デ…

knockout.js を使って検索をしてみる

前の記事とだいぶ時間が空いてしまいましたが、引き続き knockout.js を弄ってみます。blog.karamem0.jp今回は検索をしてみたいと思います。 サンプル コード Models/Person.cs 簡単な Model を作成します。 public class Person { public string Id { get; …

knockout.js を使ってページングを実装してみる

knockout.js がいい感じに便利で楽しいので、いろいろ試してみました。今回はページングを実装してみます。 サンプル コード Shared/_Layout.cshtml knockout.js を呼んでおくのを忘れずに。knockout.js は NuGet で入手できます。 <html> <head> <title>@ViewBag.Title</title> <script src="@Url.Content("~/Scripts/jquery-1.7.2.min.js")" type="text/javascript"></script> </head></html>

XmlSerializer と DefaultValueAttribute は一緒に使うとよくないことが起きるらしい

C#

いまさらなのですが DefaultValueAttribute 属性が付けられたフィールドを XmlSerializer でシリアライズすると、XML に値が書き込まれないらしいです。しかも、デシリアライズするときも何もしてくれないので、データが消えてしまいます。再現するコードを…

SharePoint で人の検索ボックスを使って簡易メール フォームを作ってみる

SharePoint 2010 のコントロールで飛び抜けて使い勝手がいいのは「人の検索ボックス (PeopleEditor)」と呼ばれるコントロールです。Active Directory のユーザーやグループを検索してくれる優れものです。見た目は以下のような感じで、標準でもいろいろなと…

SharePoint 2013 アプリケーション ページでアセンブリ リソース ファイルを使用する

ASP.NET Web ページでアセンブリ リソース ファイルを使用する場合、ASP.NET Web ページのリソースの概要 で説明されているように、App_GlobalResources フォルダーまたは App_LocalResources フォルダーに resx ファイルを格納します。ところが SharePoint …

DirectorySearcher の PageSize と SizeLimit をいじってみる

C#

前回の記事の続きです。blog.karamem0.jpActive Directory のすべてのユーザー オブジェクトを列挙する次のようなコードを考えてみます。 public static class Program { private static void Main(string[] args) { using (var entry = new DirectoryEntry(…

System.DirectoryServices 名前空間を使って LDAP 検索をする

C#

System.DirectoryServices.dll を参照設定すると LDAP (Lightweight Directory Access Protocol) による Active Directory 検索ができるようになります。やってみたらそれほど難しくはありませんでした。 ユーザーの検索をしてみる example.com ドメインに対…