ASP.NET自動マイグレーションの設定
現象
- モデルを作成して、アプリケーションを実行すると、自動的にデータベースが作成される
- モデルを変更して、再度アプリケーションを実行すると、下記エラーが発生する
データベースの作成後、'***Context' コンテキストの背後にあるモデルが変更されました。Code First Migrations を使用したデータベースの更新を検討してください ( http://go.microsoft.com/fwlink/?LinkId=238269)。
対策
- 「パッケージ マネージャー コンソール」を起動*1
[ツール] -> [ライブラリ パッケージ マネージャー] -> [パッケージ マネージャー コンソール] の順にクリック
- パッケージ マネージャー コンソールに、Code First Migrations の自動移行の使用を開始するコマンドを入力する
PM> Enable-Migrations –EnableAutomaticMigrations
- パッケージ マネージャー コンソールに、保留中の変更をデータベースに適用するコマンドを入力する
PM> Update-Database –Verbose
参考
Entity Framework の自動 Code First Migrations
*1:EntityFramework NuGet パッケージが必要
JSON形式に変換すると並び順が変わってしまう
現象
- 下のようなJSONを受信したとする。
{"01":"いろはにほへと","02":"ちりぬるを","11":"わかよたれそ","12":"つねならむ"}
JSON.parse()
関数で、文字列⇒JSONオブジェクトに変換する。 すると...
{ 11:わかよたれそ, 12:つねならむ, 01:いろはにほへと, 02:ちりぬるを }
なぜか、順番が入れ替わる。
どうやら、「11」,「12」は数値キーとなり、「01」,「02」は文字列キーとして扱われた模様。
対策
- 連想配列をさらに配列の中に入れる。
[{"01":"いろはにほへと"},{"02":"ちりぬるを"},{"11":"わかよたれそ"},{"12":"つねならむ"}]
UbuntuにGoogle App Engine / Pythonの環境を作る
Python
- Ubuntu12.04 では Python2.7.3 がプリインストールされているので、それを使う
#バージョン確認コマンド
$ python -V
GoogleAppEngine SDK
- SDKをダウンロードする
$ cd ~/Downloads
$ wget http://googleappengine.googlecode.com/files/google_appengine_1.8.8.zip
- zipファイルを解凍する
$ unzip google_appengine_1.8.8.zip
- 解凍したSDKを"/usr/local"ディレクトリに移動する
$ sudo mv google_appengine /usr/local
- パスを設定する
$ PATH=$PATH:/usr/local/google_appengine
$ export PYTHONPATH=$PYTHONPATH:/usr/local/google_appengine
- デモアプリを実行してみる
$ dev_appserver.py /usr/local/google_appengine/demos/python/guestbook
- 正常に起動すれば、http://localhost:8080にアクセスしてみる
パッケージ管理ツール
- easy_installをダウンロードする
$ cd ~/Downloads
- easy_installをインストールする
$ sudo python ez_setup.py
- easy_installの再インストール、バージョンアップ
$ sudo python ez_setup.py -U setuptools
参考にさせて頂きました。ありがとうございます。
Windows7のVMwarePlayerにUbuntu12.04をインストール
先日、同PCにVirtualPC入れてUbuntu動かしてたんだけど、激重いのと、ホストOS(Windows)でコピーしたものをゲストOS(Ubuntu)に貼り付けられなかったりで、使い勝手悪かったので、VMwarePlayerを試してみることにしました。
Ubuntu ISOイメージを準備
- Ubuntu Desktop 日本語 Remixのダウンロード | Ubuntu Japanese Team より「ubuntu-ja-12.04.1-desktop-i386.iso(CDイメージ)」をダウンロードする。
仮想マシンを作成
VMwareのダウンロードサイト より「VMware Player and VMware Player Plus for Windows」をダウンロードする。
ダウンロードしたファイル「VMware-player-X.X.X-XXXXXXX.exe」をダブルクリックしてインストール開始 インストーラの指示に従い、(特にこだわりがなければ)デフォルトの設定のままインストールを完了する
「VMwarePlayerへようこそ」の画面が出たら、「新規仮想マシンの作成(N)」を選択
- 「ディスク容量の指定」画面・・・こだわりがなければデフォルトのまま
- 「仮想マシンを作成する準備完了」画面・・・「ハードディスクをカスタマイズ(C)」を選択
- 画面左のデバイス一覧から「メモリ」を選択・・・私のPCではホストが4GBあるので2GB(2048MB)を設定
(しばし待つ)
仮想マシンを起動
「仮想マシンの再生」を選択して起動
ログイン画面が表示されたら、パスワードを入力してログインする
「設定 » キーボード」で、日本語を選択し、一番上に移動する
ターミナルを起動して、vmware-toolsをインストールする
% cd /media/VMWare\ Tools/
% cp VMwareTools-8.8.1-528969.tar.gz /tmp
% cd /tmp
% tar xvfz VMwareTools-8.8.1-528969.tar.gz
% cd vmware-tools-distrib
% sudo perl vmware-install.pl
WindowsとUbuntuの共有ディレクトリ作成
VMPlayerを起動し、「仮想マシン設定の編集」を選択
「仮想マシン設定」画面の「オプション」タブの「共有フォルダ」選択・・・「フォルダの共有」欄は「常に有効」をチェックし、「C:\VMware\Shared」を指定する
仮想マシンを起動して、「/mnt/hgfs/Shared」ディレクトリがマウントされていることを確認する
パッケージ更新
- カーネルのアップデート&再起動
sudo apt-get -y update
sudo apt-get -y dist-upgrade
sudo reboot
- 不要なパッケージの削除
sudo apt-get -y autoremove
参考にさせて頂きました。ありがとうございます。
Windows7のVirtualPCにUbuntu12.04をインストール
Ubuntu ISOイメージを準備
Ubuntu Desktop 日本語 Remixのダウンロード | Ubuntu Japanese Team より「ubuntu-ja-12.04.1-desktop-i386.iso(CDイメージ)」をダウンロードする。
仮想マシンを作成
マイクロソフト公式ダウンロード センターから Windows Virtual PC をダウンロード の手順に従い、正規 Windows の検証を行い、Virtual PCをダウンロード&インストールする。
Windowsメニューより「Windows Virtual PC」を起動し、「仮想マシンの作成」をクリックする
- 名前:任意の名前を入力、 場所:デフォルトでOK → 「次へ」
- メモリ:デフォルトまたは"1024"、ネットワーク:デフォルトでOK → 「次へ」
- そのまま → 「作成」
作成された仮想マシンを右クリック → 「設定」
- DVDドライブ:ダウンロードしたUbuntuのISOイメージファイルを選択
- ネットワーク:アダプター1:ホストOSのネットワークアダプタ
仮想マシンを起動
仮想マシンをダブルクリックして起動する。
試用するか、インストールするか選択肢が出たら、「試用する」を選択
Ubuntuのインストール
デスクトップ上にある「Ubuntu 12.04のインストール」をクリックしてインストール開始
- 設定はほぼデフォルトのままでOK
インストールが完了したら、試用を続ける ※再起動しない
インストール先のハードディスクをマウント
画面左の「ホームフォルダー」を開き、ドライブのアイコンを右クリックして「プロパティ」を開き、ボリュームIDを確認
端末を起動する(画面左の「Dashホーム」アイコンをクリックして、"Terminal"と入力)
端末に下記コマンドを入力して、マウントする
$ sudo mount -o bind /dev /media/《volume-id》/dev
$ sudo chroot /media/《volume-id》/ /bin/bash
# mount -t proc none /proc
「/etc/default/grub」ファイルを編集
# vi /etc/default/grub
GRUB_HIDDEN_TIMEOUT=0
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
↓
#GRUB_HIDDEN_TIMEOUT=0
GRUB_CMDLINE_LINUX_DEFAULT="vga=791"「/etc/grub.d/10_linux」ファイル内の「linux_entry」関数を編集
# vi /etc/grub.d/10_linux
args=="$4"
↓
args="$4 noreplace-paravirt"# update-grub
仮想マシンを再起動する
ネットワークの設定
DHCP接続の場合は特に必要ないと思いますが、固定IPのため、別途設定を行います。
固定IPをふる ※各IPアドレスは環境に合わせる
$ sudo vi /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
↓
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 《192.168.1.xxx》
netmask 《255.255.255.0》
gateway 《192.168.1.1》
dns-nameservers 《192.168.1.1》$ sudo /etc/init.d/networking restart
DNSサーバの設定が更新されているか確認
$ cat /etc/resolv.conf
com.google.appengine.repackaged パッケージ使用でエラー
環境
Eclipse:Juno JDK:1.7 AppEngineSDK:1.8.1
エラー内容
import com.google.appengine.repackaged.com.google.common.collect.Maps;
上記コードをインポートすると、下記エラーが発生する。
Use of com.google.appengine.repackaged may result in your app breaking without warning.
対策
guava-libraries - Guava: Google Core Libraries for Java 1.6+ - Google Project Hosting より jar ファイルをダウンロードして、クラスパスに設定する。