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」です。

Vagrant

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>