ASP.NET vNext(Project K/KVM/KPM/KRE/KLR) VS14 CTP3もろもろ

[2014年10月追記]CPT4

  • CTP4についてメモ
    • KPM
      • ProgramFileやキャッシュを使って、毎回MyGetからとりにいかなくなりました。
      • 少しずつパフォーマンス改善されてます。
      • System.*はKPMではなく、KREからとるようにかわりました。
      • C:\Program Files (x86)\Microsoft Web Tools\Kpm
      • C:\Program Files (x86)\Microsoft Web Tools\Kre
    • パッケージ
      • 従来のパッケージ(EntityFramework6)
      • C:\Program Files (x86)\Microsoft Web Tools\Packages
      • KPM用パッケージ(EntityFramework7)
      • C:\Program Files (x86)\Microsoft Web Tools\Kpm
    • KREのパッケージ構造

C:\Program Files (x86)\Microsoft Web Tools\Kre>tree
Folder PATH listing
C:.
├───KRE-CLR-amd64.1.0.0-alpha4
│ └───bin
│ └───lib
│ ├───Microsoft.Framework.DesignTimeHost
│ ├───Microsoft.Framework.PackageManager
│ └───Microsoft.Framework.Project
├───KRE-CLR-x86.1.0.0-alpha4
│ └───bin
│ └───lib
│ ├───Microsoft.Framework.DesignTimeHost
│ ├───Microsoft.Framework.PackageManager
│ └───Microsoft.Framework.Project
├───KRE-CoreCLR-amd64.1.0.0-alpha4
│ └───bin
│ └───lib
│ ├───Microsoft.Framework.DesignTimeHost
│ ├───Microsoft.Framework.PackageManager
│ └───Microsoft.Framework.Project
├───KRE-CoreCLR-x86.1.0.0-alpha4
│ └───bin
│ └───lib
│ ├───Microsoft.Framework.DesignTimeHost
│ ├───Microsoft.Framework.PackageManager
│ └───Microsoft.Framework.Project
└───KRE-Mono.1.0.0-alpha4
└───bin
└───lib
├───Microsoft.Framework.DesignTimeHost
├───Microsoft.Framework.PackageManager
└───Microsoft.Framework.Project

    • Frameworkの名前
      • K10はaspnetcore50に、.NET45はaspnet50に変更。
      • サンプルを見ていると、.NET45と共存している場所もあったので、asp.net系のDLLのサブセットという意味合いになったよう。
  • 以下はついでメモ
    • DI
      • なんとなく見ていたら、DIを独自実装ではなく、UnityやNinjectといったライブラリを使う仕組みのようです。
    • xUnit.NET
      • K.Runner部分はASP.NETGitHubで作っている。k testという形で呼び出す。
    • ローカルIISやAzureへのデプロイは、
      • kpm pack --runtime KRE-CoreCLR-x86.1.0.0-beta1-10577
      • kpm pack --runtime KRE-CLR-x86.1.0.0-alpah4
      • IISでは、wwwrootを物理フォルダに設定
    • KPMのキャッシュの場所
      • C:\Users\aoki\AppData\Local\kpm\cache
    • VS14の設定
      • C:\Users\aoki\AppData\Local\Microsoft\VisualStudio\14.0
      • KRuntimeは「KRuntime.sdf」がある

以下元ブログ記事


以前会社の勉強会ASP.NET vNextについて発表した時の資料です。

CTP3の時に書いたメモ

この時はVisual Studio 14 CTP2でしたが、現在はCTP3が出ています。


ちらっとのぞいてみたところ、CTP2の時は各プロジェクトのPackagesフォルダにアセンブリが配置されていましたが、CTP3では、プロジェクト配下のPackagesフォルダが無くなり、%HOMEPATH%.KPM に集約されてすっきりしてました。


以下は気になったことの自分メモです

  • ちなみに、対象とするフレームワークの設定で、Core(K)を選んだときに保存される場所は、*.kprojではなく、*.kproj.userファイル(以下のイメージ)。実行時にどちらでも動くから「開発者の環境に依存するもの」という位置づけなんですかね。ちょっと違和感あり。
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <ActiveTargetFramework>K,Version=v1.0</ActiveTargetFramework>
  </PropertyGroup>
</Project>
  • *.kprojも変更あり。
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">12.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  </PropertyGroup>
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
  </PropertyGroup>
  <Import Project="$(VSToolsPath)\AspNet\Microsoft.Web.AspNet.Props" Condition="'$(VSToolsPath)' != ''" />
  <PropertyGroup Label="Globals">
    <ProjectGuid>5613d12f-75e6-49d1-8a94-e1fed866c926</ProjectGuid>
    <OutputType>Web</OutputType>
    <RootNamespace>WebApplication2</RootNamespace>
  </PropertyGroup>
  <PropertyGroup Condition="$(OutputType) == 'Console'">
    <DebuggerFlavor>ConsoleDebugger</DebuggerFlavor>
  </PropertyGroup>
  <PropertyGroup Condition="$(OutputType) == 'Web'">
    <DebuggerFlavor>WebDebugger</DebuggerFlavor>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'" Label="Configuration">
  </PropertyGroup>
  <PropertyGroup>
    <SchemaVersion>2.0</SchemaVersion>
    <DevelopmentServerPort>49214</DevelopmentServerPort>
  </PropertyGroup>
  <Import Project="$(VSToolsPath)\AspNet\Microsoft.Web.AspNet.targets" Condition="'$(VSToolsPath)' != ''" />
</Project>
  • project.jsonの中身
    • プロジェクトファイルの代わりにproject.jsonに含めるコードを書けるようになった。
      • 含めるコードは「"code": "**\\*.cs;..\\Shared\\*.cs"」、除外コード「"exclude": "buggy/**/*.cs"」、リソースファイル「 "resources": "embed/**/*.*"」のイメージ
    • configurationsで、コンパイラに与える指示でDebug、Release以外の指定が可能に。(デフォルトでこの2つは指定済み)
      • ちなみにRoslynに与える指示は"compilationOptions"で指定
    • ビルドイベントを「scripts」で設定できるように。ビルド前後、パッケージング前後、パッケージ展開前後のアクションを記載
      • プロジェクトディレクトリ「%project:Directory% 」、プロジェクト名「%project:Name%」、プロジェクトバージョン「%project:Version%」の変数を指定可能
    • アセンブリやプロジェクトの参照は、dependenciesに記載。
      • フレームワークによって依存する内容やバージョンが違う場合は、"frameworks" で指定
    • frameworksの指定は、net45かk10
{
  "version": "0.1-alpha-*",
  "compilationOptions": {
    "warningsAsErrors": true
  },
  "dependencies": {
    "Microsoft.Bcl.Immutable": "1.1.18-beta-*",
    "Microsoft.AspNet.ConfigurationModel": "0.1-alpha-*",
    "Microsoft.AspNet.DependencyInjection": "0.1-alpha-*",
    "Microsoft.AspNet.Logging": "0.1-alpha-*",
    "System.Data.Common": "0.1-alpha-*"
  },
    "scripts": {
        "prebuild": "echo before building",
        "postbuild": "echo after building",
        "prepack": "echo before packing",
        "postpack": "echo after packing",
        "prerestore": "echo before restoring packages",
        "postrestore": "echo after restoring packages"
    },
  "code": "**\\*.cs;..\\Shared\\*.cs",
  "configurations": {
    "Debug": {
      "compilationOptions": {
        "define": ["DEBUG", "TRACE"],
        "debugSymbols": "full"
      }
    },
    "Release": {
      "compilationOptions": {
        "define": ["RELEASE", "TRACE"],
        "optimize": true,
        "debugSymbols": "pdbOnly"
      }
    }
  },
  "frameworks": {
    "net45": {
      "dependencies": {
        "System.Runtime": "",
        "System.Collections": ""
      }
    },
    "k10": {
      "dependencies": {
        "System.Collections": "4.0.0.0",
        "System.Collections.Concurrent": "4.0.0.0",
        "System.ComponentModel": "4.0.0.0",
        "System.Console": "4.0.0.0",
        "System.Diagnostics.Contracts": "4.0.0.0",
        "System.Diagnostics.Debug": "4.0.10.0",
        "System.Globalization": "4.0.10.0",
        "System.Linq": "4.0.0.0",
        "System.Linq.Expressions": "4.0.0.0",
        "System.Linq.Queryable": "4.0.0.0",
        "System.Reflection": "4.0.10.0",
        "System.Reflection.Extensions": "4.0.0.0",
        "System.Resources.ResourceManager": "4.0.0.0",
        "System.Runtime": "4.0.20.0",
        "System.Runtime.Extensions": "4.0.10.0",
        "System.Threading": "4.0.0.0",
        "System.Threading.Tasks": "4.0.10.0"
      }
    }
  }
}
  • MyGetのURLを設定する場所は、*.slnと同じ場所のNuget.config。
    • Nuget.configなければ作る。デフォルトはaspnetrelease。aspnetmaster(Masterブランチ?)とaspnetvnext(開発中リポジトリ.DEVブランチ?)も指定できる。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <!--<add key="AspNetVNext" value="https://www.myget.org/F/aspnetrelease/api/v2" />-->
    <!--<add key="AspNetVNext" value="https://www.myget.org/F/aspnetmaster/api/v2" />-->
    <add key="AspNetVNext" value="https://www.myget.org/F/aspnetvnext/api/v2" />
    <add key="NuGet.org" value="https://nuget.org/api/v2/" />
  </packageSources>
</configuration>

参考資料

Windowsのタッチパッドで「2本指タップから右クリック」する設定(WindowsでMac風操作)

NEC LaVie Gのタッチパッド(NX Pad / Synaptics ClickPad)を使っています。
WindowsのタッチパッドをMacBookに近づける」にあるようにMacのトラックパッドに近い設定は大体できます。
ただし「2本指タップで右クリックメニュー」を出す設定は、いい感じにできません。

そこで、こちらのページで紹介されているようにレジストリをいじることで、指2本でトラックパッドをタップすることでコンテキストメニューを出せるようになります。

手順は以下の通り(レジストリをいじるので、自己責任でお願いします)

  1. WindowsキーとRキーを押す
  2. RegEditと入力
  3. HKEY_CURRENT_USER\Software\Synaptics\SynTP\TouchPadPS2を開く
  4. MultiFingerTapFlagsの値を3に
  5. 2FingerTapActionの値を2に
  6. ログオフ&ログイン

以上で、タッチパッドを2本指で触ることで、右クリックメニューが出せて、快適になります。

ちなみにWindowsPCをMacOS風に近づけたい場合、Dexpot(仮想デスクトップ)、VistaSwitcher(タスク切り替え)、LaunchySpotlight検索)、AutoHotkey例1 AutoHotKey例2(キーボードリマップやBetterTouchTool的)とか、ConEmu(マルチタブターミナル)とか使うと多少近づけることができます。ただWindows標準で使っていれば、それはそれで慣れるような気もします。

Sitecoreモジュールメモ(画像・ファイル系)

未検証ですが、Sitecoreの MarketPlaceで見つけたのでメモです。

  • IMAGE CROPPER
    • sc:imageで、 test.jpg?w=480&h=220&crop=1 のように書くと、クロップ(切り出し)できる
  • PIXLR IMAGE EDITOR
    • Media Librayの画像をPixlrというオンランイメージ編集サイトで編集できる
  • IMAGEPROCESSOR MODULE
    • フィールドレンダラー・プログラムで、画像の回転、グレー化、クロップができる
  • PDF THUMBNAIL HANDLER
    • ~/mediathumb/mypdf.pdf?w=100 という指定だけで、PDFのサムネイルを作成できる

ASP.NETのCompilerExceptionエラー「ソース ファイル 'C:\Windows\TEMP\xxx.cs' が見つかりませんでした。」

IIS/ASP.NET(Sitecore)でたまにでるエラー。

例外の種類: CompilerException
例外メッセージ: ソース ファイル 'C:\Windows\TEMP\xxxxxxx.cs' が見つかりませんでした。
場所 Sitecore.CodeDom.Compiler.CSharpCompiler.Compile(String sourceFile, String code, String assemblyFile, StringCollection referencedAssemblies)

http://blog.livedoor.jp/snowcastle/archives/51371864.html

C:\Windows\TEMPに適切な権限を与えると良い模様。

アジャイルマーケティングのマニフェスト

最近流行りつつある、アジャイルマーケティングについて少しまとめました。

agilemarketingmanifesto.orgというページにて「アジャイルマーケティングマニフェスト」が公開されています。マニフェストは以下の7つから構成されています。

  1. 私見や慣習よりも、検証と学び
  2. 組織と序列よりも、顧客にフォーカスしたコラボレーション
  3. ビッグバンキャンペーンよりも、最適化と繰り返しによるキャンペーン
  4. 静的な予測よりも、顧客発見プロセス
  5. 柔軟 対 厳格な計画
  6. 計画に従うことよりも、変化への対応
  7. 少ない大きな賭けよりも、多くの小さな実験

2012年6月にサンフランシスコで開かれたSprintZeroというイベントをきっかけに作られた声明です。完成というわけではなく、フィードバックを受け改善していくステータスのようです。


アジャイルマーケティングマニフェストは、以下の変遷をして今に至っているようです。


Travis Arnold氏のブログにあるように、マニフェストの基本となるポイントは以下であると述べています。

  1. 透明で(Transparent)
  2. 持続性があり、(Sustainable)
  3. 相互作用があり、(Interactive)
  4. 測定可能で、(Measured)
  5. 反復して、(Iterative)
  6. 適切であること(Relevant)

このマニフェストは、アジャイルソフトウェア開発宣言のデジタルマーケティング版です。アジャイルソフトウェアの12の原則にあたるアジャイルマーケティングの原則(現時点では10個)も策定中のようです。


MacからWindowsへリモートデスクトップ接続する時の注意点(日本語/ENキーボード誤認問題など)

MacOSからWindowsリモートデスクトップでつなぐツールと注意点の紹介です。

[旧アプリ] Remote Desktop Connection for Macの場合

Remote Desktop Connection for Mac」は、5年ほど前から存在するMicrosoftリモートデスクトップクライアントです。
MacでRDPファイルをダブルクリックすると、サーバー名(必要があればコロンの後にポート番号)を入力して「接続」をクリックします。



次に「ユーザー名」「パスワード」「ドメイン」を入力するダイアログが出ますので、適切に入力して接続します。注意点として、サーバーにドメインを使わずユーザー名とパスワードだけの場合(Azureに接続する場合やWorkgroupの場合)は空っぽに変更します。



[新アプリ] Microsoft Remote Desktopの場合

Microsoft Remote Desktopは2013年10月にMicrosoftに公開された新しいリモートデスクトップクライアントです。(同タイミング、同名でAndroid・iPhone用リモートデスクトップクライアントも公開されました)
こちらではドメイン入力欄がないので、ドメインユーザーの場合は「ドメイン名\ユーザー」と入力します。

接続先のリスト管理機能が備わっている反面、キーボードショートカットのカスタマイズ機能が備わっていないので、今一歩です。ただ、今後はこちらが主流となるものと思われます。

[注意点] MacBookでリモデ時に日本語キーボードが認識されない問題

MacBookの場合、MacOSクライアントに加え、VMWare FusionのWindowsOSでも、106/109キーボード(日本語JISキーボード配列)と認識せず、101/102 US EN英字キーボード配列と認識されてしまう問題があります。リモートマシン側で事前に自動ログインを行うことで回避することが定番のようですが、サーバー運用としては微妙なので、最初のログインのみWindowsPCでログインするのが良いと思います。(逆にMacマシンのユーザーが最初にログインした場合はログオフするように言っておかないと、WindowsPCを使う人も困りますね)

2017年追記

<root>
    <appdef>
        <appname>MicrosoftRDC</appname>
        <equal>com.microsoft.rdc.mac</equal>
    </appdef>
    <symbol_map type="KeyCode" name="RDC_VK_BACKQUOTE" value="0x32"/>
    <item>
        <name>Microsoft Remote Desktop App v8.0.14以降 かな-> 英数/かな</name>
        <identifier>private.Microsoft_rdc_Custom</identifier>
    <!-- Microsoft Remote Desktopのみを対象にする -->
        <only>MicrosoftRDC</only>
    <!-- [カタカナ]キーをBACKQUOTEキーに置き換え -->
        <autogen>__KeyToKey__ KeyCode::JIS_KANA, KeyCode::RDC_VK_BACKQUOTE</autogen>
    </item>
    

    <appdef>
        <appname>MicrosoftRDC</appname>
        <equal>com.microsoft.rdc.mac</equal>
    </appdef>
    <symbol_map type="KeyCode" name="RDC_VK_BACKQUOTE" value="0x32"/>
    <item>
        <name>Microsoft Remote Desktop App v8.0.14以降 EISU-> 英数/かな</name>
        <identifier>private.Microsoft_rdc_Custom2</identifier>
    <!-- Microsoft Remote Desktopのみを対象にする -->
        <only>MicrosoftRDC</only>
    <!-- [カタカナ]キーをBACKQUOTEキーに置き換え -->
        <autogen>__KeyToKey__ KeyCode::JIS_EISUU, KeyCode::RDC_VK_BACKQUOTE</autogen>
    </item>
</root>

↓を参考にしました。ありがとうございます。
qiita.com