VimでCakePHPのctpファイルを整形(インデント)
明けましておめでとうございます。
ってもう17日ですね(´・ω・`)
今年も備忘録として色々メモって行きます。
まず一発目は軽いとこから。
ここ2~3年は仕事でもっぱらPHP、特にCakePHPを触る事が多いんですが、
今回はコーダーからもらったHTMLがなかなか酷く、
完全に ノ ー イ ン デ ン ト ・・・
だったので、それをCakeのctpファイルにする際にインデントをつけたかったわけです。
単純にHTMLファイル(拡張子がhtml)なら、Vimさんもそのまま
gg shift + V shift + G =
でインデントされるんですが、今回はctpファイルってことで
:set filetype
すると
filetype=php
って出てきちゃうんですね。
なのでhtmlファイルだと認識させればいいのかと。
:set filetype=html
これで上記の
gg shift + V shift + G =
でちゃんと整形されました!
Pythonデビュー
とっしーです。
仕事では基本PHPで、バッチとか簡単なスクリプトはbash使ってるんですが、
なんかその間みたいな言語を覚えたいなーという気持ちがずっとありました。
候補としては、まぁ予想は付くと思いますがRubyかPythonですわね。
それぞれのユーザー様からしたらとても失礼かもしれないんですが、
Perlはなんか今から覚えるようなもんでもなさそうだし、
CとかC++まで行くとさすがにそこまでじゃないしーって感じなんですよね。
JavaはJVM起動とか入るんでちょいと除外。Web用途、アプリ用途で既に使ってましたし。
そしてRubyはRoR、というかSinatraですけど、のためにちょこちょこ触ってたりします。
なのでスクリプト用途に使えそうな言語、ということでPythonを始めてみようかと思ったので
環境構築でもメモメモ。
サーバ
とりあえずいつも使ってるさくらのVPSにそのまま環境を作ってみます。
インストール
もしかして昔なんか入れたっけなー、つかCentOSって最初っから入ってたんだっけなー
ということでコマンド打ってみます。
$ python --version Python 2.7.4
うお、なんか入ってる!
でもたしか最新は3系とかじゃなかったっけ・・・?
調べてみるとやっぱり最新の安定版は3.3.3とのことなので、上記バージョンとは別にインストールしてみます。
$ wget http://www.python.org/ftp/python/3.3.3/Python-3.3.3.tgz $ tar -xvzf Python-3.3.3.tgz $ ./configure --prefix=/usr/local $ sudo make
ここでなんか怒られました。
Python build finished, but the necessary bits to build these modules were not found: _lzma To find the necessary bits, look in setup.py in detect_modules() for the module's name.
look in setup.py in detect_modules()とか言われたので見てみます。
1370行目辺りですかね。
# LZMA compression support. if self.compiler.find_library_file(lib_dirs, 'lzma'): exts.append( Extension('_lzma', ['_lzmamodule.c'], libraries = ['lzma']) ) else: missing.append('_lzma')
lzmaってパッケージがないのかね。
sudo yum install lzma Loaded plugins: fastestmirror, priorities, security Loading mirror speeds from cached hostfile * epel: ftp.iij.ad.jp * remi: remi.kazukioishi.net * rpmforge: ftp.kddilabs.jp 183 packages excluded due to repository priority protections Setting up Install Process Package lzma-4.32.7-1.el6.rf.x86_64 is obsoleted by xz-lzma-compat-4.999.9-0.3.beta.20091007git.el6.x86_64 which is already installed Nothing to do
あるじゃん( ^ω^)
調べたらlzmaってファイル圧縮とかのなんかなのね。
まぁなくてもどうにかなんじゃね(´・ω・`)
ていっ
$ sudo make altinstall
なにやらさっきのconfigureの--prefixオプションと、このaltinstallで
既にあるバージョンと競合とかせずにインストールできるぽいですね。
特にエラーっぽいメッセージはなし、と。
というわけで確認。
$ python --version Python 2.7.4
うんこれはこれで正しい。
$ python3.3 --version Python 3.3.3
おっけーい。
そしてこれを簡単に切り替えられる仕組みとしてvirtualenvってのがあるらしいんですが
今日のところは時間的にいっぱいいっぱいなのでまた後日。
もうちょい早くにやり始めれば良かった(´・ω・`)
KVMでVMにHDD追加
たまーにやるけどやる度に調べてるようなことってホント無駄ですよね。
というわけでメモ。
KVMでVMのHDD容量増やす方法はいくつかあって、
例えば
- HDD自体を拡張
- HDDを追加してLVMで一つにまとめる
辺りでしょうか。
一つ目のはfdiskでパーティションやらなんやらがめんどそうなので
いつも二つ目の方法でやってます。
が、そんなに頻度が高いわけでもなく、普段使わないコマンドばかりなので
すぐに忘れちゃうんですよね(´・ω・`)
HDDイメージの作成
まずは追加するHDDイメージを作成します。
# qemu-img create -f qcow2 /var/lib/libvirt/images/extend.qcow2 150G
VM定義ファイルにHDDイメージを定義
/etc/libvirt/qumu/以下辺りにあるXMLファイルに記述
<devices> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none'/> <source file='/var/lib/libvirt/images/vm.qcow2'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </disk> /* 以下を追加 */ <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none'/> <source file='/var/lib/libvirt/images/extend.qcow2'/> <target dev='vdb' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </disk> /* ココマデ */
VMを再定義して起動
# virsh define /etc/libvirt/qemu/vm.xml # virsh start vm # virsh console vm
ここで再定義できない、起動できない場合は、上記の定義ファイルで
- target dev=の値が被っている
- address ~ slot=の値が被ってる
辺りがアヤシイですかね。
LVMでPV(物理ボリュームを作成)
# pvcreate /dev/vdb
ボリュームグループ vg00 に追加
# vgextend vg00 /dev/vdb
論理ボリュームを拡張 (MBで指定)
# lvextend -l +100%FREE /dev/mapper/vg00-lv00
以下でもいいらしいんですができたことないのでなんとも。
# lvextend -L +150000M -n /dev/mapper/vg00-lv00
リサイズ
# resize2fs /dev/mapper/vg00-lv00
確認
# df -h
ここで増えてたらOKです。
CakePHPでマイグレーション
ふと今のプロジェクトでCakeでのマイグレーションがしたいなと思い立ったのでメモメモ。
CakePHPはここ数年でちょこちょこ使ってたんですが、わりと少人数or一人で開発してることが多くて、
あんまりマイグレーションとかをやろうと思ったことがなかったんですよね。
とりあえず調べてみると、
CakeDC Migration
https://github.com/CakeDC/Migrations
とやらを使うのが定番とのことなので早速使ってみる。
参考にしたのはこの辺↓
CakePHP2系でマイグレーションを利用する方法 | Ryuzee.com
CakePHPにMigrations Pluginを導入する | mawatari.jp
CakePHP Migrationプラグイン触ってみた - tokumei-log's diary
それではいってみましょー。
はいはいgithubからsubmoduleとしてcloneしてきて?Migration初期化して生成して・・・
Notice Error: Schema generation error: invalid column type enum('hoge','foo') for AdminAgencyOrder.type does not exist in DBO in [/var/www/oms_admin/lib/Cake/Model/CakeSchema.php, line 617]
・・・・
き、きっとNoticeだしなんかうまいことやってくれてるよね・・・!
・・・・
見事にそのカラムだけない(´・ω・`)
調べてみたらどうやらCakeのMySQLスキーマ定義にenumが存在してないようで。
CakeSchemaはENUMやInnoDBを扱えない - 趣味の延長線
さすがにここ直すのしんどそうなのでまた時間のある時にでも頑張ってみようかな。
しょんぼり。
とりあえずご挨拶
初めまして。
このブログでは基本的に技術系(主にWeb系)のことのメモ的なものを書いていきます。
色々と稚拙な部分もあるかと思いますが、どうぞお付き合いくださいませ。