serverspecで、itamaeのNode Attributesを使うようにする。

itamaeで構築した環境のテストを
serverspecで書く時に、itamaeのNode Attributesを使うようにするためのメモ。

jsonファイルがこんな感じにしてたとき。
development.json
{
"env": "development"
}


set_propertyを使う方法(itamaeじゃなくても使える)



spec_helper.rbに下記のように変更する。
変更前
require 'serverspec'

set :backend, :exec
変更後
require 'serverspec'
require 'json'

set :backend, :exec

attr_file = "#{Dir.pwd}/nodes/#{ENV["SPEC_ENV"]}.json"
exit(0) unless File.exist?(attr_file)
RSpec.configure do |c|
set_property JSON.parse(File.read(attr_file))
end

実際のテストで使う時。
sample_spec.rb
if property["env"]=="development" then
describe package("mariadb") do
it { should be_installed }
end
end


テストを実行する時
bundle exec rake spec SPEC_ENV=development



Itamae::Nodeを使う方法(itamaeならこっちのが良い)



spec_helper.rbに下記のように変更する。変更後
require 'serverspec'
require 'json'
require "itamae/node"

set :backend, :exec

def node
return @node if @node
hash = YAML.load_file("#{Dir.pwd}/nodes/#{ENV["SPEC_ENV"]}.json")
@node = Itamae::Node.new(hash, Specinfra.backend)
end

実際のテストで使う時。
sample_spec.rb
if node[:env]=="development" then
describe package("mariadb") do
it { should be_installed }
end
end


テストを実行する時
bundle exec rake spec SPEC_ENV=development



参考サイト
Serverspecでchefのjsonを読み込む
Serverspecでサーバ情報をファイルに保存してテストする方法
itamae実践Tips
スポンサーサイト

vagrantでjsやcssなどのファイルが更新されない

vagrantでjsやcssなどのファイルが更新されない事があったので対象方法のメモ。
共有ファイルのソース自体はゲスト側もホスト側も更新がされているのに、それがブラウザのソースを見たりすると反映がされていなかった。
また、ソースの一番最後の行がUTF-8の文字化けの時みたいなやつが羅列されていた。

これは、apache側の設定のようで
<Directory /path/to/public_html>
EnableMMAP Off
EnableSendfile Off
</Directory>
をhttpd.confに追記すればOKでした。


参考サイト
VagrantでマウントしたJavascriptファイルが文字化けする問題の対処法
VagrantやVirtualBoxの共有フォルダ機能で静的ファイルが更新されない

imagecreatefromstring がpngだけうまく動かなかった時の対処法(mac/yosemite)

imagecreatefromstring がpngだけうまく動かなかった時の対処法をメモ。
GDが必要で、macをyosemiteにした時に、PHPとかその辺りの設定が変更されてしまっていたらしい。
phpinfoで確認すると、確かにGDの「PNG Support」がなかった。

yosemiteの場合は、デフォルトPHP5.6なので下記のコマンドをターミナルで実行するだけでpngが有効になるとの事。

curl -s http://php-osx.liip.ch/install.sh | bash -s 5.6
これで使えるようになりました。
※ コマンドラインで使う場合は、
export PATH=/usr/local/php5/bin:$PATH
もしなければいけないみたい。

参考サイト
OS X Yosemite GD PNG Support Upgrade PHP
After upgrade, PHP no longer supports PNG operations
OS X Yosemiteへアップグレードした後PHPのGD関数imagepng()などの回復

swiftでUIImageをbase64エンコードして画像アップロード

swiftでUIImageをbase64エンコードして画像アップロードする方法をメモ。

swift側
var image: UIImage = UIImage(named: "img")
var myFile:NSData = UIImagePNGRepresentation(image).base64EncodedDataWithOptions(.Encoding64CharacterLineLength)
var str = ""+NSString(data:myFile, encoding:NSUTF8StringEncoding)!
var iconBase64string = str.stringByReplacingOccurrencesOfString("+", withString:"%2B", options: nil, range: nil)
これで、iconBase64string をサーバー側に送信すればOK。
つまづいたのは、var str = ""+NSString(data:myFile, encoding:NSUTF8StringEncoding)! でNSData → String にするところ。NSStringのままだと、str.stringByReplacingOccurrencesOfString のrange のとこで
Type 'NSRange' does not conform to protocol 'NilLiteralConvertible'
のエラーが出たので、""+ で、Stringにしてる。
サーバー側では、こんな感じ。(PHPの場合)
function post_base64_decode($value)
{
return base64_decode(str_replace(' ', '+', $value));
}
$content = post_base64_decode($_POST['iconBase64string']);
これで$contentをファイルに書き出すなり、DBに保存するなりすればOK。

参考サイト
Swift: Base64 方式でエンコードする
[XCODE] iPhoneで画像をアプリケーション内に保存するには
UIImagePNGRepresentation
Objective-Cで画像をbase64エンコードして、NSStringに変換
Using a Swift String with NSData without NSString

mysql5.6 でdefault-character-set=utf8 でエラー

mysql5.6 でdefault-character-set=utf8 でエラーが発生していた。
mysql5.5 から、下記の書き方に変更になったらしい。

character-set-server = utf8



macの環境設定のmysqlで、「Start MySQL Server」をクリックしても、何の反応もなくて、余計な時間を取られました。。
クリックした時に
/usr/local/mysql/data/○○.local.err が吐き出されていて、そこにエラーの内容が表示されてました。
○○は、自分のPCの名前。

参考サイト
【Mac】My SQL 5.6.x utf8 日本語設定

プロフィール

U2K

Author:U2K
いろいろプログラムに関しての覚え書きをちょくちょくと書いていきます。

オススメ










オススメ

忍者AdMax

u2k on Twitter

最近の記事