いろいろ試行錯誤

調べものしたときの覚書きや、仕事でコーディングした時のメモ などなど…

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

パッケージ管理ツール

  • easy_installをダウンロードする

$ cd ~/Downloads

$ wget http://peak.telecommunity.com/dist/ez_setup.py

  • easy_installをインストールする

$ sudo python ez_setup.py

  • easy_installの再インストール、バージョンアップ

$ sudo python ez_setup.py -U setuptools

参考にさせて頂きました。ありがとうございます。

Google App Engine / Python - yono.cc

Python インストール&設定 Linux - Python wiki - Seesaa Wiki(ウィキ)

Windows7のVMwarePlayerにUbuntu12.04をインストール

先日、同PCにVirtualPC入れてUbuntu動かしてたんだけど、激重いのと、ホストOS(Windows)でコピーしたものをゲストOS(Ubuntu)に貼り付けられなかったりで、使い勝手悪かったので、VMwarePlayerを試してみることにしました。

Ubuntu ISOイメージを準備

仮想マシンを作成

  • VMwareのダウンロードサイト より「VMware Player and VMware Player Plus for Windows」をダウンロードする。

  • ダウンロードしたファイル「VMware-player-X.X.X-XXXXXXX.exe」をダブルクリックしてインストール開始 インストーラの指示に従い、(特にこだわりがなければ)デフォルトの設定のままインストールを完了する

  • 「VMwarePlayerへようこそ」の画面が出たら、「新規仮想マシンの作成(N)」を選択

f:id:k-kitaoka:20131126134750p:plain

  • 「新規仮想マシン作成ウィザードへようこそ」画面・・・「インストーラディスクイメージファイル(M)」を選択し、上でダウンロードしたUbuntuのisoファイルを選択する

f:id:k-kitaoka:20131126134836p:plain

  • 仮想マシンの名前」画面では、「仮想マシン名(V)」欄に任意の名前(例:Ubuntu1204)、「場所(L)」欄は分かりやすい場所(例:C:\VMware\Ubuntu1204)を入力

f:id:k-kitaoka:20131126134916p:plain

f:id:k-kitaoka:20131126134927p:plain

  • 「ディスク容量の指定」画面・・・こだわりがなければデフォルトのまま

f:id:k-kitaoka:20131126135027p:plain

  • 仮想マシンを作成する準備完了」画面・・・「ハードディスクをカスタマイズ(C)」を選択

f:id:k-kitaoka:20131126135204p:plain

  • 画面左のデバイス一覧から「メモリ」を選択・・・私のPCではホストが4GBあるので2GB(2048MB)を設定

f:id:k-kitaoka:20131126135227p:plain

  • ハードウェア画面を「閉じる」、新しい仮想マシンウィザード画面を「完了」すると、仮想マシンが起動してUbuntuのインストールを開始する

(しばし待つ)

仮想マシンを起動

  • 仮想マシンの再生」を選択して起動

  • ログイン画面が表示されたら、パスワードを入力してログインする

  • 「設定 » キーボード」で、日本語を選択し、一番上に移動する

  • ターミナルを起動して、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

参考にさせて頂きました。ありがとうございます。

Windows 7でVMPlayer With Ubuntu

Ubuntu Server 12.04 LTS のパッケージ管理 - 逆襲のWebエンジニア

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 ファイルをダウンロードして、クラスパスに設定する。 f:id:k-kitaoka:20130724151816p:plain