Visual Studio 2010 Express で Entity Framework + SQLite を使う

めっちゃハマった…。

日々之スクラッチ: Visual Studio 2010 express に SQLite を統合する

ハマりにハマってここの方法試してみたら SQLite が選択肢に出るようにはなったけど 最後の最後で「アセンブリ参照に一致しません」 とかで怒られて使えない。

最終的に以下な手順でなんとかできるようになったのでメモに残しとく。

このあたりについての知識が全くないのでこれで正しいのかは謎だけど…。

環境は

  • Windows XP Professional SP3 (32bit)
  • Visual C# 2010 Express

必要ライブラリをインストール

Setups for 32-bit Windows (.NET Framework 4.0) をダウンロードしてインストール

System.Data.SQLite: System.Data.SQLite Download Page

SQLite-1.0.xx.x-setup.exe の最新版をダウンロードしてインストール

ADO.NET 2.0 Provider for SQLite - Browse /SQLite for ADO.NET 2.0 at SourceForge.net

このときに最後に出てくる「Visual Studio に Designer をインスールしますか?」的なところで何もチェックせずに終了しておく (成功したときはこうしたので。本当にこの手順が必要かは不明…)

dllを最新版にする

C:\Program Files\System.Data.SQLite\2010\bin から以下の組み合わせでコピペする

  • System.Data.SQLite.dllC:\Program Files\SQLite.NET\bin
  • System.Data.SQLite.Linq.dllC:\Program Files\SQLite.NET\bin
  • SQLite.Designer.dllC:\Program Files\SQLite.NET\bin\Designer

Designerをインストール

C:\Program Files\SQLite.NET\bin\Designer\install.exe を実行。

System.Data.SQLite.dll の場所を求められるので C:\Program Files\SQLite.NET\bin のやつを指定する。

指定してOKしても、また求められて無限ループになるので、1回OKしたらその後はキャンセルして進める。

おわり

Visual C# 2010 Express を起動すれば、ADO.NET Entty Data Model とかで SQLiteが利用できるようになっている、はず。

これでできなかったら、最初の参考リンクにあるように machine.config とかを変更したりするとできるかも、しれない…(自信ない)

ただどちらにしてもコードファーストは使えないみたいで、とても悲しい…。

Windowsにvim環境を作る手順

最近Windows端末を渡り歩くことが多いので自分用メモ。

kaoriyaから落す

Vim — KaoriYa

ダウンロード・解凍して C:\Vim に配置

(64bit/32bit は、Python とあわせること)

フォルダ移動・環境変数設定

Pathに C:\Vim を追加

設定ファイル設置

dotfilesリポジトリをclone

適当なディレクトリを掘って設置

cd ~\Documents\src
git clone github:moqada/dotfiles.git

~/.ssh/config をちゃんと設定してても no address associated with name つって怒られるときがある

その場合は $HOME の環境変数が設定されていない可能性あり。

シンボリックファイル作成

cd ~
mklink/D vimfiles Documents\src\dotfiles\vim
mklink _vimrc Documents\src\dotfiles\vimrc
mklink _gimrc Documents\src\dotfiles\gvimrc

Powershell からだとコマンドが見つからなくて実行できなかったので コマンドプロンプトから実行する

SKK辞書を設置

SKK-JISYO.L.gz をダウンロードしてきて解凍、設置

Index of /skk/dic

前提として Git for Windows をインストールして、binにパスを通してあること

cd ~\Downloads
gzip -d SKK-JISYO.L.gz
mv SKK-JISYO.L ~/

powerline用のフォントを用意

自分の環境からビルド済バイナリコピーしてきてインストールする

ビルドが必要な場合はこのあたりを参考にしつつ

Vim - powerlineをいつ使う?今でしょ! - Qiita

ctagsインストール

taglistで使うのでインスールしておく

ctags日本語対応版

Win32版(バイナリのみ) をダウンロードして、Vimのディレクトリに追加

w3mインストール

vim-refで使うのでインストールしておく

OOTA's page

解凍して w3m.exe をVimディレクトリに放り込む

プラグイン関連をインストール

まず neobundle.vim を設置する

cd ~
mkdir -p .vim\bundle
cd .vim\bundle
git clone https://github.com/Shougo/neobundle.vim.git

※ パスを設定で決め打ちしてた、そのうち直すかもしれない

GVimを起動して以下を実行

:NeoBundleInstall

TMPDIR 設定は Unix のやつをひきずってるので tmp を作成しておく

mkdir ~\tmp

※ なおすかも、なおさないかも

所感

なんか bat とか作ったほうがよさげ

less を自動コンパイルしたい

とりあえずここ見ときゃいい、ってんで見てみました

https://github.com/cloudhead/less.js/wiki/Command-Line-use-of-LESS

recess ってのがありました

npm install -g recess

以下のコマンドでOK 指定ディレクトリ以下を監視して自動コンパイルしてくれる

recess ./less/input.less:./css/outoput.css --watch ./less

ただ、コンパイル結果が生のlesscとちょっと違ってなんか汚ない (空白が除去されてなかったり、アルファベット順に並んでなかったり...)

lintはちゃんと出してくれるっぽいんでその用途には使えるかも

結局 autoless ってのにしました

やっぱコンパイル結果が違うのが気にくわなかったんで変えることにしました

npm installl -g autoless

ディレクトリ指定するだでmixinsとかvariablesは避けて、 ちゃんとimportしてるmainのlessだけコンパイルしてくれる

autoless ./less ./css

recess はコンパイルのログが出力されなかったけど、 こっちはちゃんと色付きで表示されるので安心

とりあえず、GruntとかYeomanとか使わないような簡易環境ならこれでいいんじゃないかと

しょかん

いつも coffee コマンドも起動しっぱなしなんで 常時CoffeeScript用とLess用のふたつのnodeプロセスが走ってる

これはこれでなんか微妙な気がしないでもないけど今のところは必要十分なのでこれでいいや

fulcrum と Unicorn と Nginx と SSL と Basic認証と

昨日の記事のやつを運用にのっけるためにやったことのメモ

fulcrum の設定

cd /home/fulcrum/fulcrum
bundle exec fulcrum:setup db:setup RAILS_ENV=production

アセットファイルのコンパイル

bundle exec rake assets:precompile

設定を変更

cd /home/fulcrum/fulcrum
cp config/fulcrum.example.rb config/fulcrum.rb

app_host と mailer_sender を変更

Configuration.for('fulcrum') do
  # Set this to the domain name of your installation.  Env var APP_HOST
  app_host '<MY_DOMAIN>'

  # The email address that notification emails will be sent from.  Env var
  # MAILER_SENDER
  mailer_sender 'noreply@<MY_DOMAIN>'

  # Disable registration pages.  If set to true, users will need to be invited
  # to a project rather than being able to self sign-up.
  # Env var DISABLE_REGISTRATION
  #disable_registration false
end

nginx の設定

インストール

yum install nginx

fulcrum のバーチャルホストを設定

vim /etc/nginx/conf.d/fulcrum.conf

SSLのみのアクセスで、特定IP以外はBasic認証

SSL証明書を作成

期限は適当に10年に設定

cd /etc/nginx
mkdir ssl
openssl genrsa -des 1024 > key.pem
openssl rsa -in key.pem -out key.pem
openssl req -new -days 3650 -key key.pem csr.pem
openssl req -new -days 3650 -key key.pem -out csr.pem
openssl x509 -in csr.pem -out cert.pem -req -signkey key.pem -days 3650

Basic認証

htpasswdをインストール

yum install httpd-tools

パスワードを生成

htpasswd -c /etc/nginx/htpasswd <username>

その他

ホームディレクトリの権限変更

chmod 751 /home/fulcrum

起動

/etc/nginx/init.d/nginx start

自動起動設定

chkconfig nginx on

Unicorn

インストール

gem install unicorn --no-ri --no-rdoc

起動

unicorn_rails -c config/unicorn.rb -E production -p 5000

ブラウザからアクセスできるか確認だけして落とす

起動ファイル作成

vim /etc/init.d/fulcrum

GitLab からインスパイアして作成

自動起動設定など

chmod 755 /etc/init.d/fulcrum
chkconfig fulcrum on

起動

/etc/init.d/fulcrum start

HTTPS でアクセスできる、はず

Amazon Linux に fulcrum をインストール

https://github.com/malclocke/fulcrum

すぐ動くかと思ったけど動いてくれず、いろいろ回り道したのでメモ

そもそも不要なことをいっぱいしてそうな気がするけど…

もろもろ必要なやつをいれる

# yum update
# yum install -y make
# yum install -y gcc-c++
# yum install -y patch
# yum install -y readline-devel
# yum install -y zlib-devel
# yum install -y libyaml-devel
# yum install -y libffi-devel
# yum install -y openssl-devel
# yum install -y libxml2-devel
# yum install -y libxslt-devel
# yum install -y sqlite-devel
# yum install -y postgresql-devel
# yum install -y git

postgresql いらなそうだけどとりあえず入れとく

fulcrum の Gemfile の production のとこに書いてあった、ってそんだけ

がんばって Qt いれる

capybara-webkitでQtを使うっぽい development 用だし必要ないっぽいけど入れとく

https://github.com/thoughtbot/capybara-webkit/wiki/Installing-Qt-and-compiling-capybara-webkit

入れるためにリポジトリを追加する

# vim /etc/yum.repos.d/atrpms.repo

下記を新規作成

[atrpms-stable]
name=ATrpms RHEL5 stable
baseurl=http://dl.atrpms.net/el5-$basearch/atrpms/stable/
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
gpgcheck=1
enabled=1
priority=1

[atrpms-testing]
name=ATrpms RHEL5 testing
baseurl=http://dl.atrpms.net/el5-$basearch/atrpms/testing/
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
gpgcheck=1
enabled=1
priority=1

qt-webkit-devel が必要なので、ここで検索していろいろ入れる

http://rpm.pbone.net/

とりあえず CentOS のやつから選択したけど、Redhat のほうがいいかも

# wget ftp://ftp.muug.mb.ca/mirror/centos/6.3/os/x86_64/Packages/gstreamer-tools-0.10.29-1.el6.x86_64.rpm
# wget ftp://ftp.muug.mb.ca/mirror/centos/6.3/os/x86_64/Packages/gstreamer-0.10.29-1.el6.x86_64.rpm
# rpm -Uvh gstreamer-0.10.29-1.el6.x86_64.rpm
# rpm -Uvh gstreamer-tools-0.10.29-1.el6.x86_64.rpm
# yum install libXv
# yum install cairo
# yum install ios-codes
# wget ftp://ftp.muug.mb.ca/mirror/centos/6.3/os/x86_64/Packages/cdparanoia-libs-10.2-5.1.el6.x86_64.rpm
# rpm -Uvh cdparanoia-libs-10.2-5.1.el6.x86_64.rpm
# yum install libgudev1
# yum install libogg-devel
# yum install pango
# yum install libtheoradec1
# yum install libtheora-devel
# yum install libvisual
# yum install libvorbis-devel
# wget ftp://ftp.muug.mb.ca/mirror/centos/6.3/os/x86_64/Packages/liboil-0.3.16-4.1.el6.x86_64.rpm
# yum install liboil-0.3.16-4.1.el6.x86_64.rpm
# wget ftp://ftp.muug.mb.ca/mirror/centos/6.3/fasttrack/x86_64/Packages/gstreamer-plugins-base-0.10.29-2.el6.x86_64.rpm
# rpm -Uvh gstreamer-plugins-base-0.10.29-2.el6.x86_64.rpm
# wget ftp://ftp.muug.mb.ca/mirror/centos/6.3/os/x86_64/Packages/libmng-1.0.10-4.1.el6.x86_64.rpm
# yum install lcms-libs
# rpm -Uvh libmng-1.0.10-4.1.el6.x86_64.rpm
# yum install qt47-webkit
# yum install libxcb-devel --disablerepo=atrpms-testing
# yum install libX11-devel --disablerepo=atrpms-testing
# yum install qt47-webkit-devel

PATHに追加

# vim /etc/profile

こんだけ

export PATH=/usr/lib64/qt47/bin:$PATH

node.js いれる

setup のとこで execjs 使ってて怒られるので、いれとく

# cd /usr/local/src
# git clone git://github.com/creationix/nvm.git
# source /usr/local/src/nvm/nvm.sh 
# nvm install v0.8.18
# nvm alias default 0.8.18

起動時に読み込むようにしとく

# vim /etc/profile.d/nvm.sh

こんだけ

source /usr/local/src/nvm/nvm.sh

rbenv で環境つくる

ユーザつくる

# useradd fulcrum
# sudo su - fulcrum

rbenv いれる

$ git clone git://github.com/sstephenson/rbenv.git .rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
$ mkdir -p ~/.rbenv/plugins
$ cd ~/.rbenv/plugins/
$ git cloen git://github.com/sstephenson/ruby-build.git
$ cd ~
$ source ~/.bashrc
$ rbenv install 1.9.2-p320
$ rbenv global 1.9.2-p320
$ rvenv rehash

fulcrum いれる

$ gem install bundler --no-rdoc --no-ri
$ git clone git://github.com/malclocke/fulcrum.git
$ cd fulcrum
$ bundle install
$ bundle exec rake fulcrum:setup db:setup
$ rails server

3000番ポートで起動する

そのままだと会員登録とかしてもメールが送信されないので注意

production で起動するか config/environments/development.rb の config.action_mailer.perform_deliveries を true にしとく

GitLab hooks を受けてメール通知するような wsgi サーバ

素の Gitだと普通にhook書けばいいけど、GitLab だと hook 用にサーバ用意せないけんので。

wsgiref でとりあえず動作するようにして、 gunicorn でデーモン起動させて、とりあえず Yammer にメール投稿するように設定してる