Visual Studio 2017 パッケージマネージャコンソールでエラー

Visual Studio 2017 でアップデート後にパッケージマネージャにてDBマイグレーションをしようとして以下のエラーが表示された。

PowerShell version 2.0 is not supported. Please upgrade PowerShell to 3.0 or greater and restart Visual Studio.

Windows 10 Pro
Visual Studio Community 2017 Version 15.7.4

対処

こららを参考に以下を編集
C:\Users\username\AppData\Local\Microsoft\VisualStudio\15.0_e37f7854\devenv.exe.config

dependentAssemblyが並んでいるところに以下を追加

<dependentAssembly>
  <assemblyIdentity name="System.Management.Automation" publicKeyToken="31bf3856ad364e35" />
  <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
  <publisherPolicy apply="no" />
</dependentAssembly>

これでプロジェクトを開くとエラーが表示されず、コマンドが使えるようになった。

Windows10(Surface Book 2)でAnaconda+TensorFlow(GPU)+Kerasを使う

以下の環境の構築メモ。Surface Book 2の「NVIDIA GeForce GTX 1050」が認識せずに「Intel(R) UHD Graphics 620」だけになっている場合はタブレットの切り離し・再接続やファームウェア更新などする必要があった。

Windows 10
Anaconda 5.2
Python 3.6.4
TensorFrow(GPU) 1.8.0
Keras 2.1.6
CUDA 9.2
cuDNN 7.1.4

続きを読む

association先もシリアライズする

Railsでmodelを利用する際にassociation先もシリアライズしたい場合の方法メモ

class CodeMaster < ApplicationRecord
  has_many :code_values

  def as_json options = {}
    super include: :code_values
  end
end
class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  before_action :get_menus

  def get_codes
    @codes = CodeMaster.all
  end
end

「as_json」を使ってシリアライズ化する際にassociation先も含める
ただ、親レコード件数文selectが走るので使いどころに注意かも?

seed_fuでidが無いモデルへのデータ投入

Railsでseed_fuを使っている場合にidを削除したモデル(関連テーブルなど)へのデータ投入方法メモ

role_user = CSV.read("db/fixtures/#{Rails.env}/role_user.csv")

role_user.each_with_index do |r, i|
  next if i === 0

  role_id = r[0]
  user_id = r[1]

  RoleUser.seed(:role_id, :user_id) do |s|
    s.role_id   = role_id
    s.user_id = user_id
  end
end

ロールとユーザの関連テーブル(RoleUser role_id:integer user_id:integer)に投入する場合は複合キーを指定する(レコードが一意になる組合せ)

react-railsでimport

せっかくrailsでもreactでcomponent化しているのに再利用したい。

ということでreact-railsを使っている場合に他のcomponentをimportする方法のメモ。

//= require ./components/SubComponent
class MainComponent extends React.Component {
  constructor(props) {
    super(props)
  }
}

相対パスで指定。拡張子「.jsx」は省略して大丈夫でした。