投稿

ASP.NET Coreでiisresetでもセッションを維持する件

Redisを使えば大丈夫だと思ったけど、ダメだったので調べたことのメモ ポイント - dotnet.exe単体動作ではRedisのみでOK - iisのバックエンドの場合はiisresetでセッションが吹っ飛ぶ - セッションidとredisのキーを紐付ける設定がiisの場合、都度変わるぽい Startup.csのConfigureServices関数にて var redis = StackExchange.Redis.ConnectionMultiplexer.Connect(Configuration.GetConnectionString("RedisConnection")); services.AddSingleton(options => redis.GetDatabase()); services.AddDataProtection().PersistKeysToRedis(redis, "DataProtection-Keys"); 的な記述を追加する。 これによって、dotnet core on iis でもiisresetでセッションが飛ばないようになるぽい。 ちなみに、キーとなるAddDataProtection()ミドルウェアだが、 Microsoft.AspNetCore.DataProtection.Redis アセンブリが必要になるため、Nugetで事前にインストールが必要である。

自分用メモ:yeoman-generatorの実体の場所

/usr/local/lib/node_modules/generator_***にある模様。 探すのに時間がかかったのでメモ

新しいdotnetコマンドで自己展開型(self contained)なバイナリを生成するには

VS.NET 2017系になって、Dotnet coreがproject.jsonからcsprojになりました。 以前は、project.jsonで自己展開型(.exeにビルドするやつ)にビルドするには、 project.jsonに、以下のようにruntimesセクションを追加して "runtimes": {   "win10-x64": {}   "osx.10.10-x64: {} } dotnet build -r win10-x64 などとコマンドラインで叩くと-r(runtimes)オプションで指定した環境向けに単独で実行できるバイナリが生成されます。 VS.NET 2017では、project.jsonが廃止されて*.csprojになってしまったので、自己展開型のバイナリ生成が上記のやり方ではできなくなってしまいました。 VS.NET 2017のプロジェクトのプロパティからも設定できなかったが、csprojを直接編集することでできる模様。 <PropertyGroup>   <RuntimeIdentifiers>win10-x64</RuntimeIdentifiers>   <RuntimeIdentifiers>osx.10.10-x64</RuntimeIdentifiers> </PropertyGroup> 上記のようにした上で、 dotnet build -r win10-x64 dotnet build -r osx.10.10-x64 とコマンドラインで叩くと、指定した環境向けの実行バイナリが生成される。 参考: https://docs.microsoft.com/ja-jp/dotnet/articles/core/deploying/ どっちにしてもVS.NET上で指定はできないみたい。 →とわいえ、VS.NET 2017からDotnet Coreサポートは大分良くなったよ!!

マルチモニタをやめてみた

クラムシェルをやってみたくて一時的にマルチモニタをやめてみたら意外に作業が捗る事がわかった 理由を考えたところ作業スペースが有効に使え、マルチモニタのときは狭くて使って無かった紙とペンを使うようになったことと、何より集中力が上がった気がする。 目の前に余計な物がないのが良いみたいだ。 マルチモニタと作業効率でググると良いことしか書いてないページばかり引っ掛かるが、シングルモニタと集中力でググると真逆のことが書かれていて面白い。 マルチモニタ派の人は作業効率おしだがシングル派はかつてマルチモニタを使っていた人ばかりというのがより説得力がある。 結局は人それぞれなのかもしれないが、試しに片方のモニタの電源オフしてみるのも良いかも知れない

Anguler2@Windows with Webpackでエラーが発生する件について

Angular2をWindows環境で実行しようと、 http://blog.stevensanderson.com/2016/10/04/angular2-template-for-visual-studio/ からひっぱてきたテンプレートを使って動かそうとした際、 node_module/to-string-loader/src/to-string.jsの16行目でjavascriptのヒアドキュメントがILLEGALなsyntaxというエラーが発生してえらく難儀したのでメモしておく。 結論から言うと、node.jsのバージョンが 0.10.xxx で古かったらしく最新バージョンにアップしたら問題なく動作した。 最新版は ここ を参考に引っ張ってきた。※既にnode.jsにパスが通っている環境の場合、既存のパスの方が優先されたのでパスの調整が必要でした。 また、TypeScriptのバージョンもアップ(1.5.4→2.14)した。 普段はVisual Studio.Codeを使っているが、たまにVisual Studio.NETを使うのも良い気がした。 追記: ここ に既出ですね。→node.js 4.X以上じゃないとダメみたいですね。

typescript環境構築の自分用メモ

typescript環境構築の自分用メモ yoは入れておく。 yo aspnetで足場は作れるようにしておく。 typings install dt~jquery --save --global とかやると typings/globals/jquery/** に型定義ファイルができる。 typings/index.d.tsをrefernce指定すれば補完が効く。 gulpを使うためにgulpfile.jsを作っておく。 gulpfile.jsのなかみは以下のような感じ。 var gulp = require('gulp'); //var del = require('del'); var paths = { unify: [ 'app.js', 'app.js.map' ], scripts: [ 'TypeScript/**/*.tsx', 'TypeScript/**/*.ts', 'TypeScript/**/*.map' ] } gulp.task('default', function () { //del(['wwwroot/TypeScript/**/*']); //del(['wwwroot/js/*']); gulp.src(paths.unify) .pipe(gulp.dest('wwwroot/js')); gulp.src(paths.scripts) .pipe(gulp.dest('wwwroot/js/TypeScript')); }); delはあってもなくてもよい。 ワークスペースのフォルダ構成は以下の感じ。 /TypeScript    →ここに*.tsを入れとく /Views    →cshtmlはこの下に置かれる。 /Controllers    →コントローラのコードはここに置かれる。 /wwwroot    /js       ここにコンパイルされたjsが配置される

GOLANG@VS.CODE自分用メモ

GOPATHの設定をどうするか的な話。 プロジェクトごとにルートパスが違うのでシステムに単一のGOPATHだと いやだなぁと思っていて、かと言って相対パスでローカルパッケージを 指定してもvs.codeでローカルパッケージだとインテリセンスが効かない のも嫌だなぁというのをなんとか解決する話。 GOROOTを.bash_profileに設定する。  export GOROOT=/usr/local/opt/go/libexec .bash_profileにcode .とうつと起動するように仕込みを入れる。 code () {     if [[ $# = 0 ]]     then GOPATH=$(pwd)         open -a "Visual Studio Code"     else GOPATH=$(pwd)         [[ $1 = /* ]] && F="$1" || F="$PWD/${1#./}"         open -n -a "Visual Studio Code" --args "$F"     fi } exportしないでGOPATHをワークスペースに設定しておく。 こうすると、vs.codeで自前パッケージのインテリセンスが有効になる。 起動後に.vscode下にtasks.jsonを作る。 以下のような感じ {     "version": "0.1.0",     "command": "go",     "showOutput": "always",     "options": {         "env": {             "GOPATH": "${workspaceRoot}"         }     },     "tasks" :[         {