エラー解決: `Error: Asset 'application.css' was not declared to be precompiled`
エラー内容
ActionView::Template::Error (Asset 'application.css' was not declared to be precompiled in production. Declare links to your assets in 'app/assets/config/manifest.js'. //= link application.css and restart your server):
解決策
manifest.js
を設定していないければ、設定manifest.js
設定済みであれば、rake tmp:clear
関連Notes
assets:precompile
呼び出し時にvite:build
が自動で呼ばれる
参考リンク
Rで構造方程式モデリングのパス図を出力する
Rとは
統計解析に特化したプログラミング言語です https://cran.ism.ac.jp/index.html
lavaanとは
多変量解析、構造方程式モデリングを扱うためのRのパッケージ http://lavaan.ugent.be/index.html
インストール
環境
- masOS High Sierra (10.13.6)
Rパッケージ
- R 3.5.1 https://cran.ism.ac.jp/ をダウンロードして、pkgを開いてインストールする
- brewでインストールしようとしたが、問題解決できず失敗した
lavaan
Rを立ち上げてpackageをインストールします。
$ R > install.packages("lavaan", dependencies=TRUE)
libraryを実行してバージョンが確認できれば完了です。
> library(lavaan) This is lavaan 0.6-1 lavaan is BETA software! Please report any bugs.
semPlot
パス図を書くために必要なので、こちらもインストール。
$ R > install.packages("semPlot")
実行
以下をRで実行して、挙動を確認してみます。
library(semPlot) # 適当なデータセット X <- rnorm(100) Y <- rnorm(100) Z <- rnorm(100) F1 <- rnorm(1) * X + rnorm(1) * Y + rnorm(1) * X * Y F2 <- rnorm(1) * Y + rnorm(1) * Z DF <- data.frame(X, Y, Z, F1, F2) # 回帰 res1 <- lm(F1 ~ X * Y, data = DF) res2 <- lm(F2 ~ Y * Z, data = DF) # パス図を描画 semPaths(res1 + res2, "model", "est", intercepts = FALSE)
良い感じにパス図が出てきました。
http://lavaan.ugent.be/tutorial/sem.html を参考に SEM(構造方程式モデリング)を実行してみます。
library(lavaan) library(semPlot) model <- ' # 測定モデル ind60 =~ x1 + x2 + x3 dem60 =~ y1 + y2 + y3 + y4 dem65 =~ y5 + y6 + y7 + y8 # 回帰 dem60 ~ ind60 dem65 ~ ind60 + dem60 # 因子相関 y1 ~~ y5 y2 ~~ y4 + y6 y3 ~~ y7 y4 ~~ y8 y6 ~~ y8 ' fit <- sem(model, data=PoliticalDemocracy) semPaths(fit, "model", "est", intercepts = FALSE)
それっぽい図ができあがりましたね。
トラブルシューティング
semPlotのインストール時に依存しているglasso
, OpenMx
がビルドできない...
エラーを見てみるとgfortran
の実行で失敗していたので、以下で解決。
$ brew cask install gfortran
まとめ
SEMは大学以来?なので構造方程式モデリングについてはもっと深めたいと思います。
参考記事
- The Comprehensive R Archive Network
- The lavaan Project
- semPlot Examples |
- Network Analysis in R Cookbook
- dplyr tutorial
- Network Model Selection Using qgraph 1.3 | psychosystems.org blog
- (株)日科技研:SEM(構造方程式モデリング)とは(因果分析)|製品案内
- PythonとRを連携させて分散共分散構造分析(SEM)のパス図を出力したい - Qiita
- 心理データ解析第10回(1)
- Running R at Scale on Compute Engine | Solutions | Google Cloud
fastlaneのコミッターになりました
この広告は、90日以上更新していないブログに表示しています。
と表示されるぐらいには更新していなかったので、近況報告です。
3月初旬にfastlaneのコミット権を付与してもらい、core contributorとして活動しています。 (fastlaneでは外部のコミッターをcore contributorと呼んでいます。)
fastlaneはiOS/Androidのためのビルド自動化ツールで、GitHub上で開発されているOSSです。 GitHubのスター数はもうすぐ18,000を越えようとしていて、国内でも数多くの会社で導入されています。
きっかけは@jpmartha_jpさんが株式会社ookami主催で開催したfastlane Meetup Japanでした。
fastlane Meetup Japan後、同時期に@giginetさんと共にcore contributorとなりました。
Excited to have a new fastlane core contributor on board: @nafu003 made Xcode 8 improvements, built some fastlane plugins and lot of fixes 🎊
— fastlane (@FastlaneTools) May 16, 2017
5月に公式Twitterでアナウンスされて、現在は30 commitsしています。 Contribute内容としては、主に今開発しているPlayer!で利用していて見つけたバグや困った所を修正しています。 また、Issue整理、ユーザーサポート、日本でしか利用されていないactionなどを@giginetさんと一緒に修正したりもしています。
fastlaneのcore teamは本当に素晴らしく、これからも期待できるOSSです。 これからも、もっと貢献できるように頑張っていきます。
何か困ったことや聞きたいことがあれば気軽にメンション下さい。
atrun - 指定時間にjobを実行する
Macで指定時間にjobを実行するようにしたかったので、その時のメモを残しておきます。
スケジューリングの設定
1. まず、atrunを有効化します。(デフォルトでは無効になっている)
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
2. 次にスケジュールを登録します。
3分後にopen.shを実行したい場合には次のコマンドとなります。
at -t `date -v+3M +"%Y%m%d%H%M"` -f open.sh
atコマンドについて
atq
でqueueを見ることができますatrm job_id
でqueueから削除できます
参考
potatotips#37 (iOS/Android開発Tips共有会) Androidまとめ
第37回potatotipsはヤフーさんでの開催でした。
potatotips #37 (iOS/Android開発Tips共有会) - connpass
こちらが会場の様子です。
ヤフーさんの #potatotips 会場着! pic.twitter.com/dvx7AjM8zZ
— 所 友太 (@tokorom) February 15, 2017
LODGEというヤフーが提供しているコワーキングスペースですが、とても快適でした。
LODGEはクリエーターにとって天国。VR/fab各種そろっています。ハンダゴテもOK! #potatotips
— 所 友太 (@tokorom) February 15, 2017
以下Androidの発表をまとめました。
greenDAO2ObjectBox (@kaelaela)
greenDAOからObjectBoxへ移行してみようというプレゼン。
- greenDAOはSQLite用のORマッパ https://github.com/greenrobot/greenDAO
- ObjectBoxはモバイル向けのNoSQLデータベース http://greenrobot.org/announcement/introducing-objectbox-beta/
Android Transition (@takahirom)
Transitionについて分かりやすい説明でした。Custom Transitionについての詳しい説明はDroidKaigiのトークで聞くことができるようです。まだ登録していない方はぜひ登録を ->
DroidKaigi 2017
Crashlyticsの Non-Fatalに救われた話 (@fgfgtkm)
CrashlyticsはFabricツール群の一つとして提供されており、最近Googleに買収されましたことは記憶に新しいですね。
Twitterが開発者プラットフォームFabricをGoogleに売却、事業のスリム化を図る | TechCrunch Japan
CrashlyticsにはCrashだけでなくExceptionも送信することができるので、問題解決に役立ちます。
Lottie for You (@wasabeef_jp)
LottieとはAfter EffectsファイルをiOS, Android, React Nativeで実行することができるようにするライブラリ。
Airbnbが出しているOSSです。AEファイルを作成すれば、難しいアニメーションも簡単に描画可能になります。
- GitHub - airbnb/lottie-android: Render After Effects animations natively on Android and iOS
- GitHub - airbnb/lottie-ios: An iOS library to natively render After Effects vector animations
- GitHub - airbnb/lottie-react-native: Lottie wrapper for React Native.
例としては、以下のようなアニメーションが実行できます。
プレゼン資料はこちらです。
Android Custom lintを初めて作った (kengoScal)
UnusedResourcesだけでは検知できない、利用していないコンポーネントなども自動で検知してくれるものを作成したというプレゼンです。
GitHubに公開されていますので、確認してみて下さい。
コードで 事前条件を表明する (@duane0728)
事前条件を表明するメリットは多いので、コードで示していきましょうというプレゼン。
- メソッドが仕様の代わりになる
- デバッグが容易になる
- メソッドの責任領域を明確にできる
参考図書
https://t.co/BoVeEOEoCA #potatotips
— 所 友太 (@tokorom) February 15, 2017
2016年度版Heroku複数アカウント使い分け
以前はddollar/heroku-accountsで管理する方法だったのですが、最近ではherokuのpluginを利用する方法に変更になりました。
herokuのリポジトリで管理されているheroku-accountsを利用します。
GitHub - heroku/heroku-accounts: Helps use multiple accounts on Heroku.
インストール
とても簡単です、heroku pluginsコマンドを利用します。
$ heroku plugins:install heroku-accounts
アカウント追加
personal
はアカウントの識別子です
$ heroku accounts:add personal
アカウント一覧
$ heroku accounts
アカウント切り替え
personal
はアカウントの識別子です
$ heroku accounts:set personal
アカウント削除
personal
はアカウントの識別子です
$ heroku accounts:remove personal
Callbacks一覧を見る
u = User.first # Save callbacksの一覧 u.send('_save_callbacks') # Update callbacksの一覧 u.send('_update_callbacks') # Create callbacksの一覧 u.send('_create_callbacks') # Destroy callbacksの一覧 u.send('_destroy_callbacks')
や
class User # include ActiveSupport::Callbacks は実行済みを想定 def self.callback_list(name) get_callbacks(name) end end User.callback_list('save') User.callback_list('update') User.callback_list('create') User.callback_list('destroy')
のような感じでcallback一覧が見れます。
before_
やafter_
などは基本使わないほうが良い(個人の見解)ですが、ライブラリなどで利用されていることも多いので、一覧を確認する際に重宝します。