サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
blog.okazuki.jp
ただの小ネタです。 Azure Pipelines でリポジトリに含めたくない秘密の値を入れるための Variables に変数を追加します。 そして Variable Group でも template でもいいのですが 2 セット変数の定義を作ります。 vartemplate-for-production.yml variables: message: $(messageForProduction) vartemplate-for-staging.yml variables: message: $(messageForStaging) 適当なタスクも作っておきます。 some-tasks.yml parameters: - name: vartemplatename type: string default: '' jobs: - job: job1 variables: - temp
http://www.ikvm.net/ なんというかJavaと.NETの垣根がなくなりそう…。 IKVM.NETのWikipediaから抜粋しますが、こんなものらしい。 IKVM.NETとは、オープンソースにより開発が行われているMono及び.NET Framework上で 実装された、Java仮想マシンを含むJavaの実装である。 また、Java仮想マシンの実装の他にも、独自のJavaクラスライブラリの実装や、JARファイルを DLLファイルに変換するツールなど、Javaと.NETの相互運用のための各種ツール群を含む。System.IOの名前空間のクラスをJavaから使うためのスタブ作ったりとか、かなりはっちゃけた感じです。最後のリリースも2012年7月と最近も活動してるプロダクトみたいです。
過去記事 blog.okazuki.jp blog.okazuki.jp 本文 前回、認証だけはやりました。今回はユーザーの権限とかを見て何かしたいとか、この API は呼べる、呼べないを構成していきたいと思います。 Azure AD のグループ機能で認可してみよう Azure AD のグループでユーザーをグループに所属させることが出来ます。私の環境ではグループ作る時にセキュリティと Office 365 が選択出来ますが今回はセキュリティの方で適当にグループを作ります。 グループを作って適当にユーザーを所属させます。そしてグループを識別するためのオブジェクト IDを控えておきます。以下のようにグループの一覧にもちらっとオブジェクト IDが表示されますが グループを選択するとオブジェクト IDがコピーできます。 グループが出来たので、次に Azure AD に登録したアプリをいじっていきま
LINQってメソッド構文とクエリ式の構文の2つがあります。どっち使います?という話ですが個人的な見解として、メソッド構文がLINQの全機能にフルアクセスできるという点でメソッド構文を使用しています。 LINQのメソッド構文とクエリ式の構文の対応は以下のページにまとまっています。 Query Expression Syntax for Standard Query Operators ちなみにクエリ式の構文のメリットとしては多段SelectManyが見やすいという点があります。 var a = from h in hoge from f in fuga from b in bar select new { h, f, b }; メソッド構文だとこういう感じになる。 var a = hoge.SelectMany(_ => fuga, (h, f) => new { h, f }) .Sele
Prism.Formsでは、IPageDialogServiceというインターフェースが提供されていて、ダイアログの表示もばっちりViewModelで出来るようになっています。 IPageDialogServiceには、DisplayAlertメソッドと、DisplayActionSheetメソッドが定義されています。DisplayAlertメソッドは単純なアラートダイアログを出して、DisplayActionSheetメソッドは選択肢を提供するメソッドになります。 DisplayActionSheetメソッドは、キャンセルのメッセージ、破棄のメッセージ、その他のメッセージの可変長引数という形になっています。さくっと使ってみましょう。 public class MainPageViewModel : BindableBase, INavigationAware { private stri
デザイナーがエラーになるだけならいいんですが、たまにデザイナー自体無いケースがあります。 上の画像では UWP プロジェクトを選択している状態で MainPage.xaml を開いているのにデザイナーが出ません。 一度ファイルを閉じて UWP プロジェクトをビルドして再度開いたり、Visual Studio を再起動したりするとうまくいくこともあるっぽいのですが、まぁ世の中上手くいきませんよね。 緑の波線が出てインテリセンスが効くようになったらもう一歩です。MainPage.xaml を閉じて MainPage.xaml の右クリックメニューから「ファイルを開くアプリケーションの選択」で 下記のように「XAMLデザイナー」を選択します。 XAML デザイナーで開くと、先ほどまではなかった App20.Droid というプロジェクト名の選択のドロップダウンがあります。 これを UWP のプロ
かずきのBlog@hatena すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。
C++/WinRT っていうのが追加されてたんですね。知らなかったのですが。 docs.microsoft.com これを使うと C++/CX とかみたいな魔改造言語じゃなくて C++ で UWP の開発が出来ますし、UWP の API を呼ぶのもお手軽です。 ちょっとやってみましょう。 環境設定 厳密にこれだけが必要という最小要件はちょっと確認できてないのですが私は以下の環境です。 Windows 10 October 2018 Update Visual Studio 2017 15.8 (UWP アプリの開発と C++ 開発あたりのチェックが入っていて Windows 10 SDK 全部入り) + C++/WinRT 拡張 C++/WinRT 拡張 多分、C++ 開発機能と最新の Windows 10 SDK と UWP 開発があれば行けると思います。 やってみよう 以下のプロジェク
ARFoundation を使うと Unity で iOS/Android 両対応の AR アプリが簡単に作れるということで注目が高そうな機能です。 docs.unity3d.com AR の世界をタップしたとき何か当たったかどうかを判定するためには ARRaycastManager で Raycast すれば OK です。こんな感じです。タップした場所に適当な大きさのキューブと綺麗に削除する機能を用意してます。 public class ARTapHandler : MonoBehaviour { public ARRaycastManager raycastManager; private readonly List<GameObject> _cubes = new List<GameObject>(); // Update is called once per frame void
デフォルトだと UIWidgets が全てかっさらってしまって、例えば Cube に EventTrigger をしかけて、UIWidgets に全面透明な画面とかを置いてもクリックが反応しないみたいです。 解決策として、以下の Issue にコードが載ってます。 github.com 一応念のためコードだけここにも複製。 using Unity.UIWidgets.engine; using UnityEngine; using UnityEngine.UI; [DisallowMultipleComponent] [RequireComponent(typeof(UIWidgetsPanel))] public class UIWidgetsRaycastFilter : MonoBehaviour, ICanvasRaycastFilter { public bool reverse
先日、ヤマダ電機のオンライン ショップのサイトを覗いたら Surface Laptop Studio の上から 2 番目のモデルが 24 時間以内に発送というステータスになっていたのでポチってしまいました。通常は、注文してから取り寄せになるので納品まで数週間かかるという状態なので欲しいけど、数週間も待つのはなぁ…と思ってたところなのでやられました。 買い替え動機 デスクトップ PC を普段使っているのですが先日 3 時間で 3 回急に電源が落ちたという事件があったのと、その時に代替 PC として使ったサブのノート PC が熱がやばくて性能が満足に出なかったため替わりの PC が欲しいと思っていたところで上記のような事件があったので買い換えてしまいました。 買い替え前のノート PC 2019 年の Dell XPS 13 2-in-1 でした。買ったときの記事は以下になります。 blog.o
Vistaで追加された4バイト文字「飛魚」(←これが一文字になる) XPで見てる人もいると思うので、とりあえず出しません。 こいつらが結構厄介なんですよ。とりあえず↓のコードを見てください。 C# Java <追記> うは!JavaとC#で出力結果が微妙に違うわ。画像じゃけぇ直すのめんどいけぇ放置! </追記>これを実行すると↓になります。 トビウオの文字数は2文字です4バイト文字は2文字としてカウントしてくれます。 結構嫌だなぁ… たとえば入力文字数制限とか… 文字数を奇数で制限してるとゴミだけ入ったりしそうな予感。 ということで、正しい文字数を得るためにはこうするみたいです。 C# Java 実行すると今度は期待通り!!! トビウオの文字数は1ですということで4バイト文字の正しい文字数を求める方法をまとめると。 C# System.Globalization.StringInfoのLe
かなり前の記事になりますが以下のようなListBoxでの選択項目と、ContentControlに表示される項目の同期をとるようなプログラムを書きました。 DataTemplateを使ってデータを表示してみようぜ その2 もうすぐ、3年になるんですね上の記事を書いてから。時間ってたつの早いですねぇ。とまぁ、この記事を見てTwitterで質問が飛んできました。 @okazukiさん、URL の最後のContentControlがただBindingで通っているのがきもい。CollectionViewSourceのせい?仕様?バグ? @xin9le 2011-01-28 01:37:21 via Solar to @okazuki 因みにコードはこんな感じです。 using System.Linq; using System.Windows; namespace WpfTemplate { pu
ということで、MSDNのT4テンプレートのドキュメントを見たのは、ちょろっと使おうと思ったからです。 コード生成とテキスト テンプレート (T4) 単調な繰り返しを伴うコードを書くのは苦痛でしかありません。私が尊敬する上司の人は、これを田植えと言ってました。確かに。大事なお仕事ではあるんだけど、めんどくさいことは否めない。そんなときにT4 テンプレートが使えないかどうか、ちょっと考えてみるといいかも?というのが今回の趣旨です。 使ってみよう 実際に今から、T4 テンプレートを使ってコードを生成してみようと思います。今回はMicrosoft.Win32.OpenFileDialogをラップする感じのTriggerActionを作りたいのですが、OpenFileDialogが持つプロパティをチェックすると・・・ OpenFileDialog メンバ こんなにある!!まぁ手書きでもいけないことは
このお題で2個より多い時って言われて悩んだ結果です。 blog.okazuki.jp サイズを*で指定すれば、GridSplitterは画面のサイズを超えてリサイズされないという特性をもちます。これでOK。じゃぁあとは保存と復元をどうやるかですが、こんな感じでいけます。 private void Button_Click(object sender, RoutedEventArgs e) { this.StoreWidths = this.LayoutRoot.ColumnDefinitions.Select(x => x.ActualWidth).ToArray(); } private void Button_Click_1(object sender, RoutedEventArgs e) { for (int i = 0; i < this.StoreWidths.Length;
ネタ元:http://d.hatena.ne.jp/okazuki/20100308/1268061755 なんとなく条件がわかってきた。 DataGridにバインドするクラスがプロパティで値のバリデーションをしていて例外を投げることがある。 DataGridのセルのバインドにValidatesOnException=Trueが指定してある DataGridの行エラーを表示するアイコン?が表示されるタイミングでDataGridの高さが小さい 要は using System.ComponentModel; using System.ComponentModel.DataAnnotations; namespace DataGridBug { public partial class PersonViewModel : INotifyPropertyChanged, IEditableObje
先日、こんな質問を頂きました。 @okazuki かずきさん、相談に乗ってください。以下のコードを実行してみたところ、初回起動時においては、TestCommandが実行可能になってしまいます。46行目の★だと、正しく実行不可な状態で立ち上がってきます。何が理由かわかりますか?RPは、6.2.0の最新です。 pic.twitter.com/FO58CfvZXP— adonis (@adonis31726124) 2020年1月17日 とりあえず値が来てないシーケンスで作ってそうに見えたので回答したのですが、確かに慣れてないと理解に時間がかかるなぁと思ったので、ついでにブログネタにしてしまおうという魂胆です。 単純化してみよう ということで、ReactiveProperty や ReactiveCommand は IObservable<T> から ToReactiveProperty や T
TabControlは、以下のようなタブで切り替えて複数のコンテンツを表示するUIを提供するためのコントロールです。 TabControlは、ItemsプロパティにTabItemコントロールを指定してタブを作成します。TabItemコントロールは、Headerプロパティにタブのヘッダーに表示するコンテンツを設定して、Contentプロパティにタブの中に表示するコンテンツを設定します。上記の画面のXAMLを以下に示します。 <TabControl> <TabItem Header="TabItem1"> <TextBlock Text="TabItem1 Content" /> </TabItem> <TabItem Header="TabItem2"> <TextBlock Text="TabItem2 Content" /> </TabItem> <TabItem Header="Tab
blog.okazuki.jp 1つ前の記事でWPFContentControlなるものをこさえてまでやった方法ですが、Friendly作者の石川さんに聞いたらさくっともっといい方法を教えてもらえました。 AppVar型にもLogicalTreeメソッドはあるのじゃよ 個人的にWPFContentControlを作…
Xamarin.Forms にも標準で DependencyService という機能があるんですが、こいつよりも柔軟な素敵な機能が Prism.Forms には提供されています。 IPlatformInitializer それは IPlatformInitializer です!これは、Prism.Forms のDIコンテナへのインスタンスの登録処理をプラットフォーム固有プロジェクトで実行する箇所を提供するという仕組みになります。 これによって、インターフェースをPCLプロジェクトに定義して、プラットフォーム固有処理をDroidとiOSとUWPプロジェクトに実装したものをDIコンテナに登録するといったことが出来るようになってます。 使ってみよう ということで使ってみようと思います。Visual Studio 2017でPrism Template Packを入れてプロジェクトを新規作成する
Azure Functions で1つの処理をキックしたとします。 処理をキックしたあとに後続に処理結果を渡して続きの処理をしてほしいとします。 後続が1つなら Storage Account の Queue に Message を投げ込んでおけば、後続の処理は QueueTrigger でキックされる関数で作ればOKですね。 後続が2つなら…?3つなら…? 例えば後続の処理は HttpTrigger で作っておいて以下のようにコードからキックするという手が思いつきます。 こんな関数を用意しておいて var http = require("http"); function invokeFunction(appName, functionName, code, callback) { var req = http.request({ host: `${appName}.azurewebsit
Marp でスライド作るのを色々試してるのですが、全体的にコンテンツを上下方向で中央寄せになってるのが気になりました。 なんとなく上からコンテンツを詰めていくようにしてほしい。ということで section タグに以下のようなスタイルを当てることでパワポのように上からコンテンツを配置するようになりました。 section { justify-content: start; } 元のように中央寄せにしたい場合は justify-content: center; にすれば OK です。
さて、かなり前に書いた記事があります。 PropertyChangedイベントの処理方法 - かずきのBlog@hatena こいつの欠点は購読したあと解除方法がないことですね。辛い。 今ならどうする? ということで今ならReactive Extensionsという素敵なものがあります。例えばこんなINotifyPropetyChangedを実装したクラスがあるとします。 public class Person : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged([CallerMemberName] string propertyName = null) { var h = this.PropertyChange
1TB のディスクを付けているはずなのに気づいたら残り 318 GB になってました。 昔は 256 GB のディスクでやりとりしていたはずなのに… ということで、Windows XP や Windows 7 の頃はディスクの使用状況をグラフ化してくれるフリーソフトとかを使った記憶があったのですが、Windows 10 では設定アプリの中のシステム→記憶域からディスクの使用状況が確認できます。実際に私のマシンで開いていました。 アプリと機能が一番食ってるので、そこを選択してみると…こんな感じで表示されます。Epic Games Launcher は入れるだけ入れて使ってなかったので今回は消しておこうと思います。 その他を選ぶと、フォルダーごとに使用してる量を表示してくれます。 C:\Users\Public\Documents を開いてみると、その下にVM のディスクイメージがありました。
テクニックというほどのものではないのですが、よく使ってる機能の画面切り替えの「変形」について紹介したいと思います。 最近は Qiita だけどプログラミングの話題じゃないのでブログのほうに書いてます。 変形を使うとどうなるの? こういう感じのアニメーションを簡単に作れます。 使い方 アニメーション前の見た目のスライドを作ります アニメーション前のスライドをコピーして複製します 複製したページのオブジェクトを動かしてアニメーション後の状態にします 複製したページの「画面の切り替え」タブで「変形」を選択します 完成!!簡単!!こんな感じです。 メリット メリットとしてはアニメーション前とアニメーション後を作って変形を設定するだけなので簡単なのと、変形前と変形後が別スライドになるので印刷や PDF にしても破綻しないスライドになるのがいい感じです。 まとめ 変形簡単で、いい雰囲気のアニメーション
はじめに この横浜さんの記事の焼き直しというか自分用メモてきな感じになってます。 blog.beachside.dev blog.beachside.dev 本文 Azure Pipeline についてちょっと見てみましょう。最近は、YAML で書けるので雰囲気としては GitHub Actions と同じ感じでいけます。というか同じチームで作ってるみたいなので、当然ですよね。 というわけで Pipeline を作っていきます。まずはハローワールドから。Azure Pipeline の画面を開くと最初は何もないのでパイプライン作らないか?って聞かれます。こんな感じで 次にリポジトリーを選択するような画面になるのでお好みのリポジトリーを選択。このリポジトリーがデフォルトで clone されてきます。 そうすると、いきなりこんな感じの YAML が生成されます。 # Starter pipel
三宅さんに教えてもらったものを使ってみました。 https://t.co/G5w8TNlpEi ですね— k-miyake (@kazuyukimiyake) July 21, 2019 Marp というものですが、調べてて気を付けないといけないなと思ったのは最近作り直されたみたいなので、何か調べるときは新しいほうを当たるようにしたほうがよさそうです。 各種機能はこちらから。 marpit.marp.app ちょっと見た目カスタマイズしたい! テーマ作ることも出来るみたいなのですが、まだ VSCode の拡張機能のテーマ対応は絶賛作り中みたいです。なので、今回は style で指定する方法でやってみました。 スライド作ってると、表紙・セクションタイトル・普通のスライド・背表紙とか何個かあると思います。私が普段仕事で使ってるスライドは、以下のような見た目です。 こんな感じのスライドを mar
そんなプラグイン作りたい時もありますよね? ということでやり方。 importでchild_processを読み込んで、それのexecを呼ぶだけです。yo codeで作成したTypeScriptのプロジェクトだと以下のような感じ。java -versionを出力ウィンドウに出しています。 'use strict'; // The module 'vscode' contains the VS Code extensibility API // Import the module and reference it with the alias vscode in your code below import * as vscode from 'vscode'; import * as child_process from 'child_process'; // this method is
ログイン画面とかユーザー管理画面とかをそんなに求められてないシステムならお手軽なのでお勧めです。 基本的にここに書いてある内容にそっていきます。 azure.microsoft.com ASP.NET Webアプリケーションを作る 空のアプリを作ります。ここではokazukiadappという名前にしました。一応MVCにチェックを入れておきます。 そして、HomeControllerとIndex.cshtmlを作って実行したら最低限何か表示されるようにしておきます。 Azure側の設定をする Web appの作成 ポータルでWeb appを作ります。okazukiadappという名前で作成しました。 配備の確認 発行プロファイルをダウンロードして、Visual Studioで発行をしてインポートしてとりあえずデプロイできるようにしておきます。 最後にControllerにAuthorize属
次のページ
このページを最初にブックマークしてみませんか?
『かずきのBlog@hatena』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く