投稿者「krote」のアーカイブ

Windows 10 Preview を早速入れてみた

Windows 10 Technical Preview が公開されました

Windows Technical Preview
http://windows.microsoft.com/ja-jp/windows/preview

まだ最初のPreviewなので、今後の更新によって大きく変わってくる可能性はありますが、スタートメニュー周りやストアアプリ周りでの修正が気になったので早速ダウンロードしてみました。

入れ先としては、Hyper-Vもよかったのですが、少し遊ぼうと思って VirtualBox に入れることにしました。

1.仮想マシンの作成

image

当然のことながら、バージョンに該当するものはないので「Other Windows (64-bit)」を選択します。
が、後述しますがこれではダメで、「Windows 8.1」あたりを選ぶ必要があります。

メモリやHDD周りは適宜設定して、ダウンロードしたISOイメージを読み込ませて起動させるのですが、

image

エラーになってしまいました。

原因ははっきりとつかんだわけではないですが、このエラーが出た場合、仮想マシン設定上に問題があるケースがあるようなので、先ほどのバージョン指定を「Windows 8.1」に変更することでエラーを回避できました。

2.Windows インストール

Win10x64

このあたりは基本的にWindows 8 以降は大きく変わらないですね。

Win10x64-02

今回の Technical Preview では日本語版が用意されていないので、英語版で進めていくことになります。

Win10x64-03

Microsoftアカウントを聞かれてきますが、正直 Preview の設定を変な風に持ち込みたくはないので、
手持ちの Microsoft アカウントは用いずに、新たにローカルアカウントを作成します。

Win10x64-06

ここまでで、設定完了。

Win10x64-07

デスクトップが出てきました。

Windows10 では、Windows8 とは異なり、基本的にはデスクトップをメイン画面とします。

ストアアプリはなくなったわけではもちろんないのですが、

image

デスクトップ上で動作する他のアプリと見た目が近い状態になります。
(上の絵はニュースアプリです)
もちろん、フルスクリーンにすれば以前のような見た目になるのでしょうけど。

image

ちなみに、IE は 11 でした。
手元のWindows 8.1 では IE のバージョンは 11.0.9600.17278なので、若干バージョンが上がっている感じですね。

ここのところ、OS が更新されるたびに IE のバージョンも上がっていたのですが、Technial Preview ではそのまま。
ただ、IE のバージョンアップスピードは以前とは違って上がってきているので、本リリースまでにはまず IE12 が入ってくるのではないかと
勝手に思っています。

やはり、大きな変更として見えるのはストアアプリですかね。
それ以外にもいろいろと変更点はあるのでしょうけれど、正直情報収集を怠けていたせいで把握し切れていません。

ストアアプリの変更は確かに大きいですが、ストアアプリ自体を利用している人がどれくらいいるのだろう。
そういう意味では、影響度という意味においては私はそれほど感じていないんですよね。

いずれにしても、もう少し、どういう点が変更されたのかを追いかけてみる必要がありそうです。
何かおすすめがあれば教えてください。

AWS 環境の自動停止スクリプト

AWS を必要な時だけ立ち上げておきたいんだけど、人が操作するとどうしてもうっかり落とし忘れてしまう。
そこで、SDK を使うことである時間が来た際に自動で落とすような状態にしておきたい。

立ち上げるのは、必要に応じて自分で手動で行えばいいので、あくまで落とすことを優先させる。

AWS の SDK はいろいろな言語で出ているが、今回は Ruby を使ってみることにした。
あまりこれまで触れたことのない言語だったので。
理由はそれだけ。面白そうだったからに近い。

EC2 を落とすことは比較的簡単にできる。

予め、定義を作っておいて

[aws-config.yml]
access_key_id: <ACCESS_KEY_ID>
secret_access_key: <SECRET_ACCESS_KEY>
ec2_endpoint: ec2.ap-northeast-1.amazonaws.com

 

止めるための文を書く

[stopall-ec2.rb]
require 'aws-sdk'

AWS.config(YAML.load(File.read("./aws-config.yml")))

ec2 = AWS::EC2.new

ec2.instances.each do |ins|
  ins.stop if ins.status == :running
end

 

EC2 は比較的すんなりと行ったんだけど、RDS はよくわかっていない。

RDS の場合、そもそも停止という機能が存在していないため、本来の停止手順としては

  1.  一世代前の Snapshot の削除
  2. Snapshot の作成
  3. Instance の Delete

で、起動時には

  1. Snapshot からの RDS 作成
  2. セキュリティグループやパラメータグループ付け替え
  3. RDS インスタンスの再起動

という感じになると思う。
Snapshotをいつ削除するのかは好みなのかもしれないが、作成直前まで保持しておけば
バックアップとしても使えるし、もう少し手を加えて世代管理をしてもいいと思う。

EC2 と異なり、RDS は Snapshot からの起動となるので、手操作による名前付けミスは避けたい。
そういう意味では、起動まで自動化したくなるところではあるかな。

ただ、そもそも RDS の一覧が取れないように感じる。

[stopall-rds.rb]
require "aws-sdk"
rds = AWS::RDS.new(
  :access_key_id => <ACCESS_KEY_ID>,
  :secret_access_key => <SECRET_ACCESS_KEY>,
  :rds_endpoint => <RDS_ENDPOINT_URL>
)

rds.db_instances.each {|instance|
  p instance.endpoint_address
}

 

試しに Github 上で見かけたコードを元にこんなのを書いてみたけど、接続の時点で

C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:878:in `initialize': execution expired (Net::OpenTimeout)
from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:878:in `open'
from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:878:in `block in connect'
from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:877:in `connect'
from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:862:in `do_start'
from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:857:in `start'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/http/connection_pool.rb:321:in `start_s
ession'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/http/connection_pool.rb:125:in `session
_for'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/http/net_http_handler.rb:55:in `handle'

from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/client.rb:253:in `block in make_sync_re
quest'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/client.rb:289:in `retry_server_errors'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/client.rb:249:in `make_sync_request'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/client.rb:511:in `block (2 levels) in c
lient_request'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/client.rb:391:in `log_client_request'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/client.rb:477:in `block in client_reque
st'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/client.rb:373:in `return_or_raise'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/client.rb:476:in `client_request'
from (eval):3:in `describe_db_instances'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/rds/db_instance_collection.rb:56:in `_each_i
tem'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/collection/with_limit_and_next_token.rb
:54:in `_each_batch'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/collection.rb:80:in `each_batch'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/collection.rb:47:in `each'
from stop-rds.rb:11:in `<main>'

のようにタイムアウトしてしまう。

と、ここで RDS 側の Firewall 関連の設定じゃないかと気づく。
RDS の構築を自分で行った環境ではなかったので気づくのが遅れた。

RDS を構築する際、 “Enable Public Access” って項目があって、通常は同じ VPC 内からのアクセスのみ許すようになっていた。
一時的にこれを変更して試してみたら、エラー内容が変化した

C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:918:in `connect': SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello A (OpenSSL::SSL::SSLError)
from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:918:in `block in connect'
from C:/Ruby200-x64/lib/ruby/2.0.0/timeout.rb:66:in `timeout'
from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:918:in `connect'
from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:862:in `do_start'
from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:857:in `start'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/http/connection_pool.rb:321:in `start_session'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/http/connection_pool.rb:125:in `session_for'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/http/net_http_handler.rb:55:in `handle'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/client.rb:253:in `block in make_sync_request'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/client.rb:289:in `retry_server_errors'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/client.rb:249:in `make_sync_request'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/client.rb:511:in `block (2 levels) in client_request'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/client.rb:391:in `log_client_request'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/client.rb:477:in `block in client_request'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/client.rb:373:in `return_or_raise'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/client.rb:476:in `client_request'
from (eval):3:in `describe_db_instances'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/rds/db_instance_collection.rb:56:in `_each_item'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/collection/with_limit_and_next_token.rb:54:in `_each_batch'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/collection.rb:80:in `each_batch'
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/aws-sdk-v1-1.52.0/lib/aws/core/collection.rb:47:in `each'
from stop-rds.rb:17:in `<main>'

 

はて・・・。困ったな。

ちなみに、

rds.db_instances["<INSTANCE_ID>"]

という形では AWS:RDS:DBInstance オブジェクトへアクセスできる。ここから delete を呼び出すことは出来そうなので、ID を指定すればできそうだ。

逆に、 EC2 のように each で無条件にインスタンスを落とすことは出来ないのかもしれない。

AWS:RDS 以外に AWS:RDS:Client も RDS の操作する手段としてはあるので、こちらを使えばもしかしたらいけるのかな?
エラーとなっている、 db_instance_collection の each_item 実装を見てみると client.describe_db_instances を呼び出しているみたいなので、
AWS:RDS:Client の使い方を習熟することがエラー解決への近道なのかもしれない。

まぁ、実際の問題としては RDS がそんなに増えることはないだろうから、とりあえずこれでやってみようかな・・・。

なんか、もうちょっとうまいこと行くとうれしいんだが。。。

エクセルのファイルサイズがやけに大きかったお話

少しエクセルで資料を作っていたら、1シートで20行未満、20列未満という程度の情報量に対してファイルサイズが 5M を超えていた。
特に図形も絵も張り付けているわけでもなくテキストのみでこのサイズはどう考えてもおかしい。
ちなみにフォーマット形式は XLSX なので圧縮が効いているはず。100K すら普通はいかないはずだ。

XLSX 形式であれば、中身を確認することが出来るので調べてみることにした。

拡張子を ZIP へ変更し、中身を解凍。
変な絵が張り付いていないことを確認して、問題のシート情報のファイルを確認する。
今回はシートは一つだけなので

./xl/worksheets/sheet1.xml

を確認してみると・・・・

80Mを超えている。

このファイル。普通にエディタで開こうとするとファイルサイズが大きいのでまともに開かない。
しょうがなく、ファイルを分割して中身を確認すると、入力したデータ以外に

<row r=”7609″ spans=”3:3″ x14ac:dyDescent=”0.15″><c r=”C7609″ s=”16″/></row>
<row r=”7610″ spans=”3:3″ x14ac:dyDescent=”0.15″><c r=”C7610″ s=”16″/></row>
<row r=”7611″ spans=”3:3″ x14ac:dyDescent=”0.15″><c r=”C7611″ s=”16″/></row>
<row r=”7612″ spans=”3:3″ x14ac:dyDescent=”0.15″><c r=”C7612″ s=”16″/></row>
<row r=”7613″ spans=”3:3″ x14ac:dyDescent=”0.15″><c r=”C7613″ s=”16″/></row>
<row r=”7614″ spans=”3:3″ x14ac:dyDescent=”0.15″><c r=”C7614″ s=”16″/></row>

<row r=”1048575″ spans=”3:3″ x14ac:dyDescent=”0.15″><c r=”C1048575″ s=”16″/></row>
<row r=”1048576″ spans=”3:3″ x14ac:dyDescent=”0.15″><c r=”C1048576″ s=”16″/></row>

みたいなものが大量に書かれている。なんだこれ

 

想像してみる

データというわけではないので、セルに対しての属性情報が付与されていて、それが悪さをしているように感じる。
ただ、行の削除を行っても消すことが出来なかったので、行を選択した何かというよりはシート全体もしくは特定の列に仕掛けられた設定が生きているのだろう。

困った。

row タグは行データを取り扱っているとすると c タグが CELL を対象としていそう。
row タグ中の r 属性は行番号で、 spans 属性と x14ac:dyDescent 属性は謎だ。

c タグ中の r 属性は被るかもしれないが現在位置を表しているように見える
んー。cell の s 属性は 16 となっているのは何だろう。

 

調べてみた

dyDescent に関してはMS公式に説明が書いてあった。

http://msdn.microsoft.com/en-us/library/dd926776(v=office.12).aspx

要するに、double型の定義がされているということらしい。それだけ。ということは、x14ac のネームスペース中の定義として double と読むことが出来るのであれば、
x14ac はよくわからないけど Excel を意味するのではないだろうか。

と思ったら、ファイルの冒頭に

xmlns:x14ac=”http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac”

とあったので、大体理解があっていそう。

span 属性に関してはこちらに書いてあった

http://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.row(v=office.14).aspx

要するに、データが入っている範囲を示すようで、この値はすべて同じになるようだ。
とすると、変だ。

現状では19行R列までデータが入っているので、

spans=”1:18″

になるはずなのだが。。。

 

ちなみに、シートのコピーではダメだったが新しく作ったブックにコピペしたら 22KB 程度のサイズになって、 spans も想定した値になった。

spans が変だったのは気になるのだが、それ以上に大量の row タグが作られてしまった原因のほうが問題なのだろう。

フォーマットの中身がなんとな~くわかってきたけれど、じゃ、どうすれば同じ状態を引き起こせるのか?という部分がさっぱりだ。
spans 属性の定義から言うと本来入る値とは異なっているので、ありていに言えば何かの操作の際にファイルがぶっ壊れたと考えたほうがいいのかもしれない。

うーん、壊れたのだとすると、これ以上追いかけてもあまり実りはないかな~。
とりあえず、少し調べ方に関して知ることが出来たので今日のところはよしとしようか

Softlayerを勉強してきた

以前のエントリで AWS をいじり始めたという話をしましたが、AWS だけでなく、Softlayer の研修も IBM で受けてきました。

会社では Microsoft の Windows Azure も利用している部署もあるのでより取り見取りですね。
私としては、これまでなんとなーく AWS が一番デファクト的な位置づけだと考えていたのですが、
単純にそれはその他を知らないだけという話でもあるかもしれないと考え、少し周りを調べ始めています。

AWS

AWS は言わずと知れたクラウドですね。

EC2 をはじめとして様々なサービスが提供されているので幅広い用途に使うことが出来ます。
個人的にはこのサービスの豊富さとその規模からくる価格メリット。そして成長・進化のスピードが AWS の強みに感じています。

まぁ、ろくに AWS を使っているわけではないので偉そうなことはあまりいうことは出来ませんが。

 

Softlayer

Softlayer は、もともとは独立したクラウドベンダーでしたが、IBM が現在は買収しています。
特徴的なのは、機器構成の自由度がかなりあるところです。

AWS で時々話があがるのは、インスタンスがどこに作られるかわからないので、同居しているインスタンスによってパフォーマンスに当たり外れがあるという話です。

Softlayer では、仮想ホストを共有する通常の形以外に、自分だけでホストを占有するタイプの仮想を選ぶことが出来ます。
(これをPrivateクラウドと呼ぶので混乱させているような気がしないでもない)
さらには、物理サーバーそのものを同じように Softlayer ポータルから借りることもできてしまいます

企業案件等でパフォーマンスがシビアに要求されるケースでは、ハイパーバイザーのオーバーヘッドを嫌がることもあると思います。
そういう意味では、Softlayer は自分たちで構成をゴリゴリと組みたいけどオンプレミスとして保持したくないというようなケースにおいては最適なのかもしれません。

もちろん、その場合のユーザー側の責任範囲は大きくなりますが。

一方で、サービス面に関しては AWS のほうが充実している印象を受けています。

クラウドで DB を利用しようとした場合、AWS であれば RDS を利用することが出来ます。
Softlayer ではバックアップを含めた運用管理は、よりオンプレミスに近い構築能力を要求されるとともに、Oracle 等を利用しようとした場合にはライセンスを用意する必要が出てしまいます。

クラウドの場合、やめようと思った時にやめられるのも利点ですが、こういったライセンスを時間貸しで利用できないのは、それが本来の形とはいえ辛いですね。
まぁ、MySQL や MongoDB 等のオープンソース系で行けばいいだけの話なのかもしれませんが。

AWS にしろ Softlayer にしろ、日々進化しているのである一時を切り出して優劣をつけていくのはなかなか難しい気もします。
ただ、それぞれの提供している特色というか特徴といったものがこの二つは分かれているので、すみわけは出来そう。

一方で、Microsoft の Azure は正直私が不勉強でよくわかっていないところが多いです。
どうなんだろうな

Surface Pro アクセサリ

今日は仕事の用事で一日外出。

いわゆる研修なのですが、ノートPCが必要になって手持ちのものがなかったのと、
特に業務で使用しているものでないといけない内容ではなかったのでSurfaceで研修を受けてきました。

これまで、ちょこちょこと使うことはあったのですが、長時間じっくりと触り続けたり
本当に仕事として使うことがあまりなかったのでちょっといろいろと新鮮でした。

PDFをリーダーアプリで開き、画面分割を調整しながらブラウザ操作をするという形でしたが、
思った以上になじんでつかことが出来ました。

やっぱりいろいろな使い方してみないとわからないものですね。

 

さて、Surfaceは普段100円均一で売っている保護ケースっぽいのに入れて持ち歩いているのですが、
普段移動中に持ち歩いているわけなのでもう少しちゃんとしたケースを買いたいところ。

ただ、ヨドバシとか行ってもそんなに種類がないんですよね。

いろいろ調べてみると、ケースだけでなく背面の保護にカーボンシートを張る人もいるみたいで、
Surface周辺のアクセサリをもう少し見直したほうが気持ちよく使えるかもしれないと考えています。

何かいいのないかな~

Surface Pro 3 での Virtual Box 起動エラー

開発環境を少しずつ整理している Surface Pro 3 ですが、仮想環境としては Hyper-V ではなく Virtual Box を利用しようとしています。
理由としては、Vagrant とかいじりたいからです。

仮想環境の用途としては、主に実行・テスト環境的な形ですね。

Windows で動作させるのが結構面倒なものもあるので仮想環境上に開発環境を持っている人も多くいるようですが、
一番の懸念は、適当にあれこれと試した結果、レジストリやらフォルダやらが滅茶苦茶になってしまうのが嫌なんですよ。

あれこれと試してみたいんだけど、試した結果どんどんと OS が重くなってしまうのでは困りものですから。

まぁ、そんな理由で仮想環境を建てようとしたのですが・・・・

20140827_vvox_error

こんな感じでエラーになってしまいます。

環境としては、

Surface Pro 3
Virtual Box 4.3.14
Ubuntu

という条件です。

Ubuntu は、公式のVHDからでも、手動でHDD作ってISOからやろうとしても同じエラーが表示されます。
というか、そもそも仮想PCの起動が出来ていない感じがするのでOSとか関係ないかもしれません。

ただ、別のPCでWindows8.1 環境があるのですが、そちらでは問題なく Virtual Box が動作している。ちょっとバージョンは失念してしまっているけど。
なので、単純なホストOS側の問題とは限らないと思うんだけどなぁ~。

これにずっと躓いていて、一向に Surface 上で物事が進まずに苛立ちを感じていました。

あれこれ公式のフォーラムを探していたのですが、よく解決方法がわからず、検索の方向性を変えて「Surfaceで」という感じで調べてみたら…

VirtualBoxのインストールエラー
http://qiita.com/nmatsui/items/80aff4e7f085d8d6de83

ヒットした。

そして、指示に従って 4.3.12 で試してみたところあっさりと起動しました。

うーん、Surface の何に引っかかったんだろう?
いずれにしても、ずいぶんと時間がかかってしまったな。

スイカ。カラスとの戦い

久しぶりに家庭菜園の話を。

かれこれ、千葉に移り住んでからなんだかんだで続けている家庭菜園。

今年は、これまで何度となく失敗を繰り返してきたスイカが少し小ぶりとはいえ、いくつか実らせることが出来ました

20140824_01[1]

これまでスイカは、小さすぎて食べれない状態だったり、苗を数本買ってきても1個くらいしか実らなかったという
苦い思いがあったので、結構うれしいです。
特に、これまで育ててきたのはこういうスイカっぽいスイカではなく真黒なスイカだったりしたのでなおさらです。

 

20140824_02[1]

何よりも、子供が食べてくれるとうれしいですね。

娘は結構おいしく食べてくれているのでとてもかわいいです。
長男はあまり食べてくれないので少し放置です。

さて、そんなスイカですが、実はもっとたくさんできる兆しはあったのですが、ちょっと気を抜いていた隙に
カラスにつつかれて割れてしまったりした個体が結構ありました。

今年はトウモロコシもかなりの数をカラスにやられてしまったので、ちょっとカラス対策を真剣に考えなければなりません。

出来れば、鳥よけのネットで作物を覆いたいところなのですが、さすがに全体を覆うくらいのネットを買うのは財政的に厳しいものがあります。

そこで。。。。

 

20140824_03[1]

 

カラスの死体をつるしておくと、カラスは寄ってこないという話を聞いてつるしてみました。

もちろん、本物ではありません。
こういうものが実際にホームセンターにカラス対策としておいてあるんですね。

正直、カラスは頭が結構いいはずなのでこういうギミックにどれだけ効果があるんだろうか?と半信半疑でしたが、
少なくとも今のところは効果があるような気がしています。

まだ、もう少しスイカも残っているので、このまま効果を発揮し、来年もわが畑の守護者として君臨してほしいと願うばかりです。

AWS 勉強中

最近、遅まきながら仕事でAWSを触り始めました。

実際に業務で使う範囲というのは、オンプレミスをそのまま AWS に移行するだけであればそれほど考えることはないように感じているのですが、
どうせならば豊富に用意されている AWS のサービスを把握したうえで使うべきところを使うという形にしたい。

これまでなんとなく話には聞いていたけれど、いざ実際に触ってみるとやはりわからないことが多いので、Web 媒体を使いながら勉強をしています。

以下、参考にしている個所をまとめてみました。

  • AWS クラウドサービス活用資料集(http://aws.amazon.com/jp/aws-jp-introduction/
    • AWS のトレーニング資料や活用事例が PDF や Slideshare で提供されています。一通りがそろっているので、あまり把握していないところに関しては見ておきたいところです
  • CLOUD DESIGNE PATTERN (http://aws.clouddesignpattern.org/index.php)
    • サービス構成をデザインパターンとしてまとめたものです。クラウドを利用するときにはどういう構成にすると、どういう問題を解決できるのかが解説されています。あまり運用周りの構成に関してはオンプレミス含めて強いほうではないので、いろいろと勉強になりました

それ以外にも、ブログや Qiita にもいろいろと記事は見つかるので勉強の仕方に関しては参考になります。
こうやって調べられるのは便利ですね。

勉強したら勉強したで、その成果を残したくなったり、指標が欲しくなります。
プログラムに関わるものであれば、それはプロダクトを開発することが本文といえば本文なのかもしれないけれど、
実際のところ AWS の豊富なサービス群を使い切るのは難しい。

というわけで、幅広く確認出来そうな内容としては資格が思いつくわけだ。
AWS は認定プログラムを用意していて、その内容としては

がある。ネットで見ている限り、ソリューションアーキテクトを受験する人が多いように感じた。
AWS 専用にアプリケーションを作成する場合は、デベロッパー資格を取ることを考えるのがいいのかもしれないけれど、
全体構成を考えたりするのにはソリューションアーキテクトがいいのかもしれない。

ちなみに、日本での受験料は15000円。
相変わらずこの手の資格試験はいいお値段がする。

いろいろと探していたら、法人向けではあるが AWS Partner Network というものがあるようで、そこにパートナー向けのトレーニングコンテンツがあるみたい。
というわけで、 register レベルであれば無料なようなのでさくっと登録してみた。

APN ポータルにログインして、 training をクリック。トレーニング用のポータルへ移動する。

APN で用意されている認定としては、

  • ビジネスプロフェッショナル
  • テクニカルプロフェッショナル

の二つ。

それぞれ、動画による e-learning 形式の教材と試験が用意されている。
スライドと音声による解説が主で、スライドは日本語の教材を選べば日本語で書かれているが、音声に関しては英語だった。
ただ、字幕を付けることが出来るのであまりこのあたりは気にしなくてもいい。
そして幅広く学ぶことが出来る。何よりも無料であることが大きい。

というわけで、APN にアクセスできる状態であるならばこちらの教材を利用して幅広く学び、
個別の詳細を活用事例集や各サービスに用意されているドキュメントを追いかける形の勉強方法がいいように感じた。

その先に、認定試験の受験と合格があるかもしれないが、これで満足してしまうかもしれない。
とりあえず、APN の認定試験を二つとも取得してから考えることにしようかな。

ドメインを変更しました

Surface買ったんですよ、Surface。
その喜びをブログに書こうとしたら…

ブログにアクセス出来ない。

何が起きたのかさっぱりわからなかったのですが、FTPはつなぐことが出来るのでドメイン側の問題と考え、
さくらインターネットとVALUE DOMAIN にそれぞれ問い合わせを投げてみたところ

ドメインが更新されずに、別の人にとられている

という状態になっていた。
再取得するには、この現在のオーナーに交渉する必要があって、万単位のお金がかかるみたい。
そーいえば、独自ドメインを取得した際に1年分しか払っていなかったや。とはいえ、期限が切れる前に通知があってもいいものなのに!って憤慨していたら、
もはや稼働していない(当時は使えていた)livedorのメールアドレスが設定されていました。
これは、通知こないよね。完全に自分のミスです。

というわけで、「toarukaeruno.com」はさっくりとあきらめて「kaerugekogeko.com」というドメインを新たに取得しました。
確かにこれまで使ってきて、ブログ名とあっているドメインはいいんですが、そのためにお金をかけるのも気が引けます。

これは、いい教訓として受け入れることにしました。
新しいドメイン取得をするにしてもなんて名前にするのか~?とか、めんどくせ~とか、ウダウダしていたら一か月近くかかってしまった。
ものぐさなもので申し訳ありません。

というわけで、ドメイン変更をあれこれとしました。

ドメインの変更

このドメイン取得から設定周りは、頻繁に行う作業ではないので毎回調べてやる必要があるところは少し非効率ですがしょうがないです。
・VALUE DOMAINでドメイン取得
・ネームサーバーをさくらのものに設定
・さくらでドメイン名の登録と、ブログのアドレスとの関連づけ設定

WordPress設定変更

そもそも、ログイン画面もまともに開かず、直接アドレスを指定しても旧ドメインへ転送されてしまう状態でした。
というわけで、さくらの管理コンソールからphpMyAdminを起動してMySQLを直接操作することになります。
config.phpにdefineを追記するやり方もありますが、MySQLを変更するほうが後々問題にならないかな~と。

  • WP_SITEURLを新ドメインへ変更
  • WP_HOMEを新ドメインへ変更

リンクの張替

画像ファイルは基本的に同じドメインではあるけど別管理状態にしていたので、記事中のリンクを変更していく必要があります。
これには「Search Replace DB」というPHPスクリプトを利用しました。

DATABASE SEARCH AND REPLACE SCRIPT IN PHP
https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

phpMyAdminからpostテーブルを頑張ってSQLで更新をすることも可能かも知れませんが、
あれこれ考えるのが面倒なのでありものを利用します。
現在、バージョン3がBetaで公開されていますが、比較的単純に利用可能なバージョン2をダウンロード。
wp_config.phpと同階層において利用します。
それほど難しい訳ではないですが、使い方に関してはこちらが参考になりました。

WordPressを設置したドメインや設置ディレクトリが変更になった場合に、たった5分で全てのURLを書き換える方法
http://inspire-tech.jp/2013/10/wordpress-search-replace-db/

というわけで、なんとか移行が終わりました。
所用時間としては数時間で済む話なのですが、随分と期間が空いてしまったなぁ。

そして、その間にSurface購入から一か月近くたってしまったなぁ・・・・。
少し今更感がありますね。

Docker 1.0 Release ! と言うことでインストールしてみた

Dockerが1.0としてリリースされました。

IT’S HERE: DOCKER 1.0
http://blog.docker.com/2014/06/its-here-docker-1-0/

これまで気になっていたけど手を出してこなかった

  • Vagrant
  • Docker

を触ってみたい!
参考にしたのはこちら

Windows + Vagrant + VirtualBox + Docker
http://syonx.hatenablog.com/entry/2014/02/18/010757

ちなみに仕事では、Docker や Vagrant, VirtualBox は全く触っていないんだけど、それはそれ。これはこれだ。

まず、VirtualBox や Vagrant をWindows へインストールするのには、普通にインストーラーを使用してもいいのだが、どうやらChocolatey なるものがあるらしい!
と言うことで、早速インストールだ!

> @powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin

Chocolatey のインストールは、見ての通りPowershell を使用したコマンドラインによって行える。面白い形ですね。

無事にインストールが完了したら、まずはVirtualBox, Vagrant をインストールしてみる

>cinst virtualbox
>cinst vagrant

Vagrant のインストールは、実は一度タイムアウトのエラーが出て失敗したのだが、
もう一度コマンドを叩いたら無事にインストール出来た。

ここまで来て、参考HPに書いてある vagrantfile が存在せず、手順を進めることができない。
Vagrantfileを公開しておく事に関して幾つかの問題があって公開をやめてしまったようだ。

公式を見る限り、Windows環境で使うためには、Boot2Dockerを利用することを推奨している。

Installation Microsoft Windows
https://docs.docker.com/installation/windows/

Boot2Docker
https://github.com/boot2docker/boot2docker

Windows向けにはInstallerが提供されている

https://github.com/boot2docker/windows-installer/releases

これにはVirtualBoxも含まれている。ちなみに同梱されているVirtualBoxは4.3.12
さっき Chocolatey 経由で落としてきたものと同じ。

Boot2Dockerに関しては、インストーラにしたがって入れればOK。
とりあえず、Hello World してみた

docker@boot2docker:~$ docker run busybox echo hello world
Unable to find image 'busybox' locally
Pulling repository busybox
a9eb17255234: Pulling image (latest) from busybox, endpoint: https://cdn-registr
a9eb17255234: Download complete
511136ea3c5a: Download complete
42eed7f1bf2a: Download complete
120e218dd395: Download complete
hello world

うむ。
バージョンを表示する

docker@boot2docker:~$ docker version
Client version: 1.0.0
Client API version: 1.12
Go version (client): go1.2.1
Git commit (client): 63fe64c
Server version: 1.0.0
Server API version: 1.12
Go version (server): go1.2.1
Git commit (server): 63fe64c

うむ。

Docker自身がGoで書かれているのでGoのバージョンまで出ている。
一応、VirtualBoxのマネージャで見てみても動いている事が分かる

さて、よくよく考えてみると、Vagrantが放置されている。

Boot2Docker は、Docker インストール済みのイメージを使うだけ。
Vagrant は Docker がインストールされた Ubuntu をインストールするだけなので、
Ubuntu を普通に Vagrant を使ってインストールすればいいのでは?ということでやってみる。

参考:VagrantでUbuntuをインストール
http://qiita.com/awakia/items/895b3d61311b19737237

OSのイメージとしては以下のページから好きなものを選んでvagrantに食わせてあげればいい

http://www.vagrantbox.es/

Ubuntu だけでそれなりに色々とあって、何を選ぶとどうなのか?というのはさっぱりわからないが、とりあえず、最新っぽいやつを入れてみることにした

C:\Dev\docker>vagrant box add ubuntu https://cloud-images.ubuntu.com/vagrant/tru
sty/current/trusty-server-cloudimg-i386-vagrant-disk1.box
==> box: Adding box 'ubuntu' (v0) for provider:
box: Downloading: https://cloud-images.ubuntu.com/vagrant/trusty/current/tru
sty-server-cloudimg-i386-vagrant-disk1.box
box: Progress: 100% (Rate: 930k/s, Estimated time remaining: --:--:--)
==> box: Successfully added box 'ubuntu' (v0) for 'virtualbox'!

OKOK

では、Vagrant up しよか

C:\Dev\docker>vagrant up
Vagrant could not detect VirtualBox! Make sure VirtualBox is properly installed.

Vagrant uses the `VBoxManage` binary that ships with VirtualBox, and requires
this to be available on the PATH. If VirtualBox is installed, please find the
`VBoxManage` binary and add it to the PATH environmental variable.

なぬ。

パスが通っていないか?

インストール時にPath変数の値が省略形で書き込まれているので、これを修正して実行するとちゃんと動いた

うん、VirtualBox上でも動いているな。名前はちょっとあれだけど…

あ、Ubuntu 上での Docker 試してなかった。
まぁ、今日はこの辺りまでとしよう。

何れにしても、本題は Docker へのアプリのデプロイ周りになってくるので、この辺りはもう少しいじってみてというところだろうか。
Chocolatey の考え方ややり方と言うのは、それほど複雑ではないのでなんか参考に出来そうな気がする。

インストールやデプロイ周りはどうしても面白くないトラブルが無くならないので
簡単に出来る部分は簡単にする手法を見習って取り入れて行きたいところだ。

実践 Vagrant
実践 Vagrant

posted with amazlet at 14.06.10
Mitchell Hashimoto
オライリージャパン
売り上げランキング: 42,962
Docker入門 Immutable Infrastructureを実現する
技術評論社 (2014-04-25)
売り上げランキング: 336