GenymotionのVirtual Devices(またはエミュレーター)からDBを取り出す
新規インストール用のデータを作成するために予めアプリで作成したものを取り出したので、その作業ログを残す
もちろんGenymotionだけではなく、エミュレーターでも可能です。
DBをアクセスできる場所にコピー
<database.name>は拡張子を含めた名前(例:test.db)
Genymotion 2.3
$ adb shell su -c cp /data/data/<package.name>/databases/<database.name> /sdcard/
- それ以外のバージョン
$ adb shell su 0 cp /data/data/<package.name>/databases/<database.name> /sdcard/
ローカルに保存
- コピーしたDBをローカルに保存します。
$ cd <DBを保存したいディレクトリ> $ adb pull /sdcard/<database.name>
DumpファイルをSQLファイルに変換
- dumpファイルはバイナリ形式になっているため、これをSQLファイルに変換する
$ sqlite3 <database.name> .dump > dump.sql
SQLファイルから不要な箇所を削除する
$ vim dump.sql ===削除する箇所=== PRAGMA foreign_keys=OFF; BEGIN TRANSACTION; COMMIT;
あとは出来たファイルをassetsフォルダに入れて、SQLiteOpenHelperのonCreateなりで読み込み 一行ずつ実行すれば完了
参考
デザインなどをまとめるtumblr始めました
タイトルの通りです。
今まで記事を見つけてはPocketに突っ込んで、そのままお蔵入り。。。
なんて状況を打破するために始めました。
少しずつPocketからtumblrに移行して、細かくタグをつけていければなーと思いつつ
ぜひよろしくお願いしますー
Genymotionで"Unable to load VirtualBox engine."が出た時の対処方法
最近Genymotionを使い始めました。
いつも実機を繋いで動作確認などを行っていましたが、Genymotionを導入してからは実機を繋げることが無くなりました。
こいつは早くて便利です!!
ただ、何故かPCを再起動後に使うときはこの"Unable to load VirtualBox engine."が表示されてVMを起動することが出来ません。
これの対処方法を備忘録も兼ねてご紹介します。
コマンド一つで解消できます。 そのコマンドは以下の通り。
$ sudo /Library/StartupItems/VirtualBox/VirtualBox restart
または
$ sudo /Library/Application\ Support/VirtualBox/LaunchDaemons/VirtualBoxStartup.sh restart
こちらでも直るとのこと。
ただ、再起動後に必ずこのエラーが起こるためどうにかならないかなーと思っています。。
参考
Chefを試すためにVagrantで仮想OSを用意する
Vagrantインストール
今作っているアンテナサイトをそろそろVPSに上げようと思うので、今話題のChef
を使って自動化してみようと思う。
ただ、Chef自体初めてなので、まずかローカルで試すためにVagrant
を入れる。
ゴール
Chefが使える環境をVagrantを使って準備する。
インストール
下記からインストールする。インストールしたVersionは「1.3.5」です。
boxの取得
VagrantのOSイメージは「box」と呼ばれているため、まずはboxを取ってくる必要がある。 boxの取得自体はvagrantコマンドでできるため、必要なイメージのURLを下記のリンクからコピーする
A list of base boxes for Vagrant - Vagrantbox.es
今回は「CentOS 6.4 x86_64 Minimal (VirtualBox Guest Additions 4.2.16, Chef 11.6.0, Puppet 3.2.3)」のURLをコピーする
Vagrantにboxを追加する際のコマンドは以下の通り
$ vagrant box add <ラベル名> <boxのURL>
今回は以下のコマンドを実行
$ vagrant box add centos6.4 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130731.box
ここからしばらく待ちます。
仮想OSの起動とログイン
適当な作業ディレクトリを作成して、仮想OSを起動します。
$ mkdir .~/vagrant $ vagrant init centos6.4 $ vagrant up
起動後にsshでログインします。
$ vagrant ssh
これでログインができます。
ただし、このままではvagrantのコマンドを介してしかssh出来ないので、sshconfigに設定を書きます
ssh/configにvagrantの設定を書く
下記コマンドを実行します。ホスト名は適当で問題無いです。
$ vagrant ssh-config --host <ホスト名> >> ~/.ssh/config
これでsshコマンドで下記のようにログインすることが出来ます。
$ ssh <ホスト名>
仮想OSの停止
ついでに停止する方法も書きます。
$ vagrant halt
仮想OSの削除
仮想OSを削除する方法
$ vagrant destroy
おわりに
ここまででvagrantの準備とvagrantを使った仮想OSの起動が出来ました。
virtual boxから仮想OS作成と比べるとかなりラクに感じます。(コマンドだけで済むので)
次はChefを使って環境構築を行っていきます。
TaskからModelを呼ぶ方法
Taskから呼び出す時はContorollerのようにModel_xxxxxじゃ呼び出せない。
\Model_xxxxのように「\」が必要
<?php namespace Fuel\Tasks; class Example { public function run() { $feature = \Model_Feature::find('all'); // テーブルに格納されているnameを表示する foreach ($feature as $value) { echo $value['name']."\n"; } } }
Notice: Undefined variable:って言われる時
忘れるのでメモ
GETやPOSTのパラメーターで入ってない値を呼び出した時に一番起こりやすいきがする。
そんな時は以下のようにissetメソッドを使って確認する。
if (isset($_POST['error'])) {
$error = $_POST['error'];
}
こんなことすら忘れているくらいPHP全然触ってなかった
phpDocumentor for Vimを入れて快適にドキュメント生成する
phpdocを書くためにphpDocumentor for Vimを入れてみた。
プラグインはこれ
作業はここを見ながらやってみた。
NeoBundleを利用する
.vimrc
に以下を記載する。
NeoBundle 'PDV--phpDocumentor-for-Vim'
設定を書く
以下の箇所を編集する
" Default values let g:pdv_cfg_Type = "mixed" let g:pdv_cfg_Package = "" let g:pdv_cfg_Version = "$id$" let g:pdv_cfg_Author = "Tobias Schlitt <toby@php.net>" let g:pdv_cfg_Copyright = "1997-2005 The PHP Group" let g:pdv_cfg_License = "PHP Version 3.0 {@link http://www.php.net/license/3_0.txt}"
自分はこんな感じに編集した。Defaultはなにかあった時用に残してる。
" " Default values " let g:pdv_cfg_Type = "mixed" " let g:pdv_cfg_Package = "" " let g:pdv_cfg_Version = "$id$" " let g:pdv_cfg_Author = "Tobias Schlitt <toby@php.net>" " let g:pdv_cfg_Copyright = "1997-2005 The PHP Group" " let g:pdv_cfg_License = "PHP Version 3.0 {@link http://www.php.net/license/3_0.txt}" " Default values let g:pdv_cfg_Type = "mixed" let g:pdv_cfg_Package = "" let g:pdv_cfg_Version = "$id$" let g:pdv_cfg_Author = "mofumofu3n <mofumofu3n@gmail.com>" let g:pdv_cfg_Copyright = "2013 mofumofu3n" let g:pdv_cfg_License = "" let g:pdv_cfg_ReturnVal = "void"
キーバインドも変更する。 Ctrl + Pで生成される。
inoremap <C-P> <Esc>:call PhpDocSingle()<CR>i nnoremap <C-P> :call PhpDocSingle()<CR> vnoremap <C-P> :call PhpDocSingle()<CR>