読者です 読者をやめる 読者になる 読者になる

Xamarin.Forms for Visual studioで作ったプロジェクトでもiOS実機に突っ込む

すぐ忘れるからメモしておきます。

やりたいこと

Visual studioで作ったxamarin.FormsのiOSを実機に入れる。

環境

Mac book

VM(パラレル)

Visual studio2017

1.Xcodeでプロジェクトを作る

作成されたBundle IdentifierをVisual Studioで作るプロジェクト名にする。

一度実機にビルドする。

f:id:nooootion:20170424230326p:plain

2.Visual studioでプロジェクトを作る

f:id:nooootion:20170424230620p:plain

3.Xamarin studioの設定

iOSのプロジェクト内にあるInfo.plistのハンドル識別子を1 のBundle Identifierと同じにします。

f:id:nooootion:20170424231528p:plain

4.プロビジョニングプロファイルの設定

iOSプロジェクトを右クリックでオプション選択。

iOS Bundle SigningのプロビジョニングプロファイルでXcodeで発行したプロファイルを選択します。

5.実機に繋いでビルド

以上で実機でデバックができるようになります。

【映画】エクス・マキナ鑑賞

以前から観たいと思い、やっと観ることができました。

トーリーは女性型ロボット"エヴァ"に対して主人公がチューリング・テストを実施して人工知能のテストをする。

見た目には内部機器が露出したロボットではあるが、その受け答えは人を思わせるものがあり、視覚的な情報が無ければ人間と間違えてしまう程の完成度であった。

テストが進むにつれて予想外の事態が起こり、そして思わぬ結末が。。。

見る前はAIと人との恋愛が主題かと思いましたが、ジャンル的にはSFミステリーといったところでしょうか。途中予想を裏切る展開にハラハラしてしまいました。

最近はAIという単語を良く聞くようになりましたが、

果たして人間にとって最強の味方になるのか、最大の敵となるのか思いを馳せるには面白い題材ではないでしょうか。

exmachina-movie.jp

ASP.NETのクロスサイト スクリプト対策

ASP.NETのクロスサイトスクリプト対策について最近始めて知ったのでメモ。

業務アプリケーションでASP.NETを使用しており、ユーザからエラーになって使用できないと連絡があった。

調べて見るとテキストボックスに<>を使用していることが分かり、それが原因なのは間違いなかったが、どこで検証してエラーになっているのか知りたくて調べてみた。

エラーとしてはHttpRequestValidationExceptionが発生します。

https://msdn.microsoft.com/ja-jp/library/system.web.httprequestvalidationexception(v=vs.110).aspx

どうもASP.NETのデフォルト(Loadされる前のイベントで検証されているらしい)でエラーとしているようです。

半角で<script>や<!、<?はNGとなります。MSDNに一部禁止例がのっていましたが、セキュリティの関係上どのような組み合わせをエラーとしているかは公開していないようです。

https://msdn.microsoft.com/ja-jp/library/ff649310.aspx

Xamarin.Formsでcsvファイル読み書き

Xamarin.Formsでデータの保存をしたいと考えた時に、初心者でDBを突っ込むのもいろいろ手間が掛かって面倒くさいと思ってcsvファイルを使うことにしました。

csvファイルなら業務で使用しているし簡単簡単と思ったら。。。。

調べて見たら以外に面倒くさい。iOSandroidwindows Phoneとハードが違うから当然なのか。

もう少し調べてみたらもっと簡単な方法があるらしいとのことでこちらで実装しました。OSSもあって使いやすくて助かりました。いろいろいじってみます。

www.buildinsider.net

GitHub - dsplaisted/PCLStorage: PCL Storage - Portable Storage APIs

ASP.NETでExcelのサーバサイドオートメーションに遭遇したんですが。。。。

社内業務システムでASP.NETを使用していますが、ついでに良くあるのがExcel入出力です。

ネットで検索すると実装の仕方は結構出てきますが、安易に真似すると痛い目に会います。今回自分が遭遇したのはMicrosoft.Office.Interop.Excelでした。

(因みに自分が実装したわけではなく、昔々に誰かさんが作ったもの)

https://support.microsoft.com/ja-jp/help/257757/considerations-for-server-side-automation-of-office

ちょっと詳しく検索するとMSが推奨していないことが分かりますが、あながち陥りやすい問題ではあります。

実際現場でも過去に問題になったそうで、一斉にClosedXmlに切り替えたようですが何故か対応が漏れていたようです。

お陰で、本番環境では使用できるのに検証環境ではExcelを開く際にエラーとなって落ちる現症に時間を取られてしまいました。

過去障害の事例集みたいなものを作った方が良いのでは無いかと今ふと思った今日この頃です。

Xamarinで作ったUWPアプリを実機で動かす。

やりたいこと

Windows Phone10の実機でXamarinで作ったアプリを動かす。

実行環境

やり方

PCとMobileを設定から開発者モードに変更。

MobileをPCに接続してエクスプローラーに認識されているこを確認。

Windows Phone SDK内にあるWindows Phone Developer Registorationをすぺてのプログラムから探して実行。Mobileのロックを解除しておく必要があります。

ない場合は以下からインストールします。

https://www.microsoft.com/ja-jp/download/details.aspx?id=35471

電話のロックが解除されたと表示されればOK です。

ツールバー>デバッグ>構成マネージャー

DebugでUWPのビルドと配置にチェックを入れます。

Any CPUをARM、端末をDeviceにして実行すれば実機に転送できます。

このときもMobileのロックは解除しておきます。

まとめ

以上。できればなんてことはないですが。最初はちょっとはまってしまいました。

ASP.NETで特定のページをForms認証外にする方法

やりたいこと

ASP.NETで登録済みのユーザはForms認証を使ってログインページからログインをしますが、新規登録ユーザには別途新規登録用画面へ遷移できるようにする方法です。

通常web.configにForms認証を指定した場合、認証済みでない場合はログイン画面へ遷移されてしまうため、ログイン画面に新規登録画面へ遷移するリンクを貼ってもリダイレクトされて遷移できません。

f:id:nooootion:20170225223821p:plain

やり方

そこで特定のページ(もしくはディレクトリ)に対してのみ特別な設定をしたい場合は

locationタグ内に記載します。

f:id:nooootion:20170225224537p:plain

まとめ

今回はプロジェクト直下に.aspx、web.configを配置していますが、

Forms認証対象画面とそれ以外の画面でフォルダを分けて管理した方が分かりやすい気がします。