OITA: Oika's Information Technological Activities

@oika 情報技術的活動日誌。

IFTTT 自作アプリからHTTPリクエストでスマホへプッシュ通知

IFTTT(イフト)はいろんなWebサービス同士を連携させるためのWebサービスでございます。

IF This Then That 」という名前の表すとおり、Thisをトリガとして、Thatのアクションを起こす
(例:Instagramでいいねをつけたら、Evernoteに自動保存する)
という形で連携を定義する。

この「This」のトリガ部分に、既存のサービスだけでなく、自前のアプリからのHttpリクエストを使うこともできる。
のだけど、このイフトは何回かUIや用語に大きな変更があって、調べながらやろうとしたらけっこう苦戦した。
(もう「レシピ」とか呼ばないのよ)

なので、2017年9月現在の、自前トリガからスマホへのプッシュ通知を実現する手順をまとめておきます。
Web画面ベースで説明するけど、スマホアプリからでもほぼ同様。

続きを読む

C# プロパティで配列の代わりにIReadOnlyList<T>を公開する

FxCop、あるいはVisualStudio付属のコード分析で、厳しめの規則セットを使うと、以下のようなコードに対して警告が出る。

public class Person  
{  
    public string[] Nicknames { get; private set; }  

    ...  
}  
CA1819 コレクションを返すために、またはメソッドに設定するために、'Person.Nicknames' を変更してください。

続きを読む

C# イベントを一時変数に入れてスレッドセーフにnullチェックするあれ

C#で、自前でイベントを発火させる際、
ハンドラが1つも登録されていない状態でInvokeしようとすると
NullReferenceExceptionになっちゃうんで、
Nullでないことを確認してから呼び出す必要があります。

public event PropertyChangedEventHandler PropertyChanged;  

protected void RaisePropertyChanged(string propertyName)  
{  
    //nullでないことを確認してから  
    if (PropertyChanged != null)  
    {  
        //発火  
        PropertyChanged(this, new PropertyChangedEventArgs(propertyName));  
    }  
}  

シングルスレッドで動くことがわかってる場合は
上のような書き方でも問題ないんだけども、
マルチスレッドで動く場合はちょいとまずい。

続きを読む