Silverbird のクライアント名を変更する

アプリケーションを登録する

Twitter Application Managementに行って、好きなアプリケーションを登録する。この時NameがTLとかに使っているクライアント名と表示される。今回は「11月27日はk32ruの誕生日なので何かください」を登録した。WebsiteをAmazon.co.jp: hbgift: k32ruさんのほしい物リストにする。

Silverbirdの改造

ディレクトリ

04. ブックマーク拡張機能の改造 - su-taの備忘録を参考にして、Silverbirdがあるディレクトリまで移動する。

コンシューマキーとコンシューマシークレットを変更

lib/secret_keys.js にある consumerSecretと consumerKeyを変更する。下のような箇所である。下は桁数は適当。

var SecretKeys = {
  twitter: {
    consumerSecret: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    consumerKey: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
  },

認証処理の変更

manifest.jsonを見るとcontent_scriptsが指定されており、Oauthの結果画面からPINコードを自動取得するスクリプトが動作する。ここでは単純な文字列(silver birdという文字列)のマッチを確認していたので、この評価部分を合わせたら自動的にPINコードを認証してアクセストークンを取得するつくりのようだ。引用元: Silverbirdをforkする - STUDIO DDT ONLINE

とあるので、lib/oauth_authorizer.js を以下のように変更。

var fullText = $("#bd").text();
if((fullText.match(/chromed bird/i) || fullText.match(/silver bird/i)) && !fullText.match(/denied/i)) {
↓
if((fullText.match(/chromed bird/i) || fullText.match(/11月27日はk32ruの誕生日なので何かください/i)) && !fullText.match(/denied/i)) {

失敗する時は

PINも取得できたのに、クライアント名が変更されないとかいう場合には再度認証してみるとか、ブラウザを立ち上げなおしてみるとかするといいかもしれない。

あと

11月27日はk32ruの誕生日なので何かください。羊羹が好きなので、あげると喜びます。Amazon.co.jp: hbgift: k32ruさんのほしい物リスト

"VirtualInfrastructure.Utils.ClientsXml が例外をスローしました”の解決方法

ESXi5.xのVpxClientで"VirtualInfrastructure.Utils.ClientsXml' のタイプ初期化子が例外をスローしました。"とエラーが出る場合の対処方法について説明します。ネットで探すと4.1Updateするといいいよみたいな情報しか発見できませんでしたので書きます。解決策はVpxClient.exeを右クリックして、管理者としてこのプログラムを実行するにチェックを入れることです。

サーバのアップグレード

5.0だったので、5.5にアップグレードしました。アップグレードする際にはESXi 5.1(無償版)を5.5にバージョンアップする - まとめノート (exlair's note)を参考にしました。アップグレードは簡単で1時間ぐらいでおわりました。上記URLを参考にする場合の注意点としては下のようにアップグレードするプロファイルの指定が自分の予想と違っていた点です。

esxcli software profile update -d https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml -p [ESXi-5.5.0-1331820-standard]

の中に適用したいプロファイルの名前を書く

ただし、この場合には[]は不要なので以下のように入力します。

 esxcli software profile update -d https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml -p ESXi-5.5.0-1331820-standard

MetadataDownloadErrorが出て、20分ぐらいデフォルトゲートウェイとかの設定を見なおしたりして悩みました。

クライアントのアップグレード

VMware vSphere Hypervisor の無償ダウンロードからVMware vSphere ClientVMware vSphere Client 5.5 Update 1をダウンロードしてインストールします。

クライアントの実行

クライアントを実行しても相変わらず"VirtualInfrastructure.Utils.ClientsXml' のタイプ初期化子が例外をスローしました"と出る場合にはログファイルを参照します。ログファイルは以下のディレクトリにあります。参考URL:VMware KB: vSphere Client does not open on any Windows operating systems with the error: parsing the server "" "clients.xml" file

私の場合には以下のログのようにレジストリにアクセスが拒否されていたみたいなので、VpxClient.exeを右クリックして、管理者としてこのプログラムを実行するにチェックを入れることにより解決しました。

[        :startup :W: 1] 2014-10-11 02:17:42.368  Log for vSphere Client Launcher, pid=3424, version=5.5.0, build=build-1618071, option=release
[        :Error   :W: 1] 2014-10-11 02:17:42.417  System.UnauthorizedAccessException: レジストリ キー 'HKEY_CLASSES_ROOT\VpxClient' へのアクセスが拒否されました。
   場所 Microsoft.Win32.RegistryKey.Win32Error(Int32 errorCode, String str)
   場所 Microsoft.Win32.RegistryKey.CreateSubKey(String subkey, RegistryKeyPermissionCheck permissionCheck, RegistrySecurity registrySecurity)
   場所 Microsoft.Win32.RegistryKey.CreateSubKey(String subkey)
   場所 VpxClient.Program.RegisterClientMimeExtension()
[        :Error   :M: 1] 2014-10-11 02:17:46.636  Error retrieving clients.xml
System.TypeInitializationException: 'VirtualInfrastructure.Utils.ClientsXml' のタイプ初期化子が例外をスローしました。
 System.TypeInitializationException: 'VirtualInfrastructure.Utils.TypedXmlSerializer`1' のタイプ初期化子が例外をスローしました。
   at VirtualInfrastructure.Utils.TypedXmlSerializer`1..ctor()
   at VirtualInfrastructure.Utils.ClientsXml..cctor()
 System.InvalidOperationException: 一時クラスを生成できません (result=1)。
error CS2001: ソース ファイル 'C:\WINDOWS\TEMP\7oluljzz.0.cs' が見つかりませんでした。
error CS2008: 入力が指定されていません。

iPod U2 CF(CompactFlash)化換装成功報告

HDDが故障していたiPod U2をCFに換装することにより復活させた。その時に購入した物とか、失敗したなとか思ったことを書きます。MicroSDには換装していませんが多少参考になりそうな事は乗っけています。ちなみにiPodに元から入っているHDDが東芝の場合です。日立の場合だとこの方法がうまく当てはまるとは限らない可能性が高いです。ここに書いてある事がこの件について私が知っているすべてなので、質問されても多分私は答えることができないかと思います。

購入したもの

iPod U2はG5(第5世代)なので、HDDのインタフェースがZIFだったので、ZIF→CFに変換するカードを買います。私は下のを買いました。相性とかの問題もありますので、できるかぎり品切れ出ない限り同じものを購入した方がいいかと思います。

CFは家にある。SanDiskの2Gのを使用しました。厳密に言うと、SILICON POWERのを最初に試しましたが復元がうまく行かず、SanDiskので成功しました。

分解

手順

分解手順とかは以下のブログとかを参考にしてください。 よん?: iPod 5.5G (VIDEO) 改造① HDD交換 元から付いているHDDを外す場合にはちょっとしたコツが必要なので以下を参考にしてください。 iPod Video (5.5G)の128GB SSD化、成功!!!(`・ω・´)|デカの日常3 〜bayfmとAppleな日々〜

道具

iPodとかiPhoneとか分解するときに下の画像の緑のプラスチック製工具がよく紹介されるとおもいますが、このプラスチック製なのですごく壊れやすいです。私も使っていましたが、隙間に入れて「えい!」とか力入れたらあっという間に先頭がポキとか折れてしまった。あんまり使えないです。

個人的には少し値段がはりますが、下の工具がおすすめです。先端が細くなっているので隙間に入りやすいし、鉄製なのでプラスチックのように簡単にポキっと逝かないので使いやすいです。

失敗した点

媒体の相性

今回CF→ZIFに変換していますが、変換するボードにもCFにも相性が必要です。CFは最初SILICON POWERのを使用しましたが、iTunesから復元しようとしても復元処理が終わっても復元できなかったみたいな事がありましたので、違うメーカのCFを複数持っている場合には色々と試してみると成功率が上がるかと思います。CF→ZIFの変換ボードは動作実績があるので、うまく復元処理ができないといった場合には変換ボードとかの接続ミス(逆向に取り付けてしまった)とか媒体の相性が悪いとかその辺だと思います。

調査不備

先ほど、変換するボードにもCFにも相性が必要ですと書いたけど、MicroSD→CFに変換する場合にも相性は必要です。なので、その辺は2chとか書かれている報告を見て買うといいかと思います。渡しの場合その辺を調べずに適当にamazonで購入したら見事に動作実績のない商品だったみたいで認識しませんでした。

次の失敗した点はU2が第5世代とは知らずに、中身を開けずに勝手に勘違いして、IDE接続の変換ケーブルを買ってしまったことですね。よく調べから買いましょうねとかそんなレベルなんですけど。ここ見ている人は分解はしなくてもいいとは思いますけど、せめて自分の改造するiPodが第何世代なのかは把握しておきましょうね。

世田谷電器CFx1変換基盤 TOSHIBA1.8インチHDD互換50ピンIDE形状 上野毛 AR-IDE1CF500

世田谷電器CFx1変換基盤 TOSHIBA1.8インチHDD互換50ピンIDE形状 上野毛 AR-IDE1CF500

Head First Javascript Programming学習時の注意点

head first javascript programmingの本には2種類ある。古いのと新しいのだ。上の紺色っぽい色の本が古くて、下の白っぽい本が新しい本だ。

Head First JavaScript ―頭とからだで覚えるJavaScriptの基本

Head First JavaScript ―頭とからだで覚えるJavaScriptの基本

Head First JavaScript Programming

Head First JavaScript Programming

上記のようにデザインが違うのでわかりやすい。ちなみに、古いのしか日本語に翻訳されていない。 ここで問題なのが、日本語に翻訳されている古い本を使って勉強した場合公式サイト*1が新しい本の内容に置き換わっているということだ。サンプルコードとかも全て。古い本の出来があまりにも悪く、黒歴史化して無かったこと扱いにしたいのか知らないが、何も知らない人はすごく混乱する。

そんなわけで、日本語版の本を使って学習する場合にはInternet Archiveからデータを拾ってくること。

Head First Rails 第1版を使用した場合における注意点

はじめに

Head First Rails 第1版を使用した場合における注意点 Ruby 2.0.0 rails4でやった場合

p7

rails tickets を

以下のように読み替える rails new tickets

P8

cd tickets
ruby script/server 

を次のように読み替える

cd tickets
rails server (もしくは省略して rails sでもよい)

P12

ruby script/generate scaffold ticket name:string seat_id_seq:string address:text price_paid:decimal email_address:string

は以下のように読み替える

rails generate scaffold ticket name:string seat_id_seq:string address:text price_paid:decimal email_address:string

rails generate は rails g 省略出来る

P27

編集するHTMLファイルについて new と Editは_form.html.erb を使っている。のでそれを書き換えればOK

P36、P35

Railsが生成したコードが異なる。def self.upとself.downを使ったコードではなく、以下のようなコードになった。

class AddPhoneToTickets < ActiveRecord::Migration
  def change
    add_column :tickets, :phone, :string
  end
end

P36,37

Rails4からのStrong Parameters という新機能で、入力されたデータはホワイトリストによって追加・変更する項目がデフォルトで制限されるようになりました。そのおかげ、scaffoldした項目は自動的にホワイトリストに追加されるが、追加したphoneはホワイトリストに登録されてないため値を入れても作成・変更出来ない状況が発生します。
参考URL:≫ Rails4 の Strong Parameters でリクエストパラメータを検証する TECHSCORE BLOG

なので、ホワイトリストにphoneを以下のようにして追加する。

vi app/controllers/tickets_controller.rb
70    # Never trust parameters from the scary internet, only allow the white list through.
71    def ticket_params
72      params.require(:ticket).permit(:name, :seat_id_seq, :address, :price_paid, :email_address)
73    end
これを以下のように書き換える。
70    # Never trust parameters from the scary internet, only allow the white list through.
71    def ticket_params
72      params.require(:ticket).permit(:name, :seat_id_seq, :address, :price_paid, :email_address, :phone)
73    end

ESXi5におけるRaw Device Mappingのやりかたについて

はじめに

ESXiで運用していく上でVMFS上にvmdkファイルとして格納した場合においてはローカルストレージへのアクセスが遅いという問題点がある。この問題の解決方法としてはiSCSIサーバを別に作り、ESXi側でiSCSI経由でデータを読み書きするという方法があります。しかしながら、この問題としては別途iSCSIサーバを用意しなくては行けないという点があります。そこで、ここではローカルのHDDをRaw Divce Mappingという方法でアクセスすることにより別途iSCSIサーバを立てる事無くvmdkファイルで読み書きするよりも高速でデータの読み書きをする方法について述べます。

RDMについて

仮想ディスクとしてvmdkファイルを利用するのではなく、ストレージ装置上のLUNを直 仮想マシンの仮想ディスクとして利用する技術です。この方式で仮想マシンを実装する 場合、マッピングファイルが必要となります。マッピングファイルはストレージ装置上 のLUNにアドレス解決する為のファイルであり、Datastore上に格納されます。 引用元:仮想マシンの実装方法- VMFS、Raw Device Mapping基本講座

注意点としてはRaw Dvice Mappingで使うためのHDDとストレージ装置上のLUMのアドレスを解決するためのファイルをDatasotre上に格納するためもう一台HDDが必要です。つまり、HDDが最低でも2台必要だという点を知っておいて下さい。

作成手順

HDDの用意

HDDを最低でも2台用意する。1台はデータストア用でもう一台はRDM用である。HDDをESXiサーバにつなげる前に型番とシリアルをメモしておくこと。シリアルは同じ型番のHDDはがあった場合において識別するためなので、同じ型番のHDDが無い状況ではやる必要は無い。ここを読んでいる方は既にデータストアを持っている可能性があるが、念のため初めてESXiをインストールした方はPC便利帳: VMware ESXi 4入門 (第2回、データストア作成)を参考にすると良い。

ディスクの確認

ESXiにSSHで入る。やりかたはぐぐれ。SSHで入ったら以下のコマンドを実行する。結果は長いので一部省いている。

~ #  ls -l /vmfs/devices/disks/
(省略)
-rw-------    1 root     root     3000592982016 Jul 14 19:04 t10.ATA_____Hitachi_HDS5C3030ALA630_______________________MJ1311YNG6NW7A
-rw-------    1 root     root       4161536 Jul 14 19:04 t10.ATA_____Hitachi_HDS5C3030ALA630_______________________MJ1311YNG6NW7A:1
-rw-------    1 root     root     4293918720 Jul 14 19:04 t10.ATA_____Hitachi_HDS5C3030ALA630_______________________MJ1311YNG6NW7A:2
-rw-------    1 root     root     2995355328000 Jul 14 19:04 t10.ATA_____Hitachi_HDS5C3030ALA630_______________________MJ1311YNG6NW7A:3
-rw-------    1 root     root     262127616 Jul 14 19:04 t10.ATA_____Hitachi_HDS5C3030ALA630_______________________MJ1311YNG6NW7A:5
-rw-------    1 root     root     262127616 Jul 14 19:04 t10.ATA_____Hitachi_HDS5C3030ALA630_______________________MJ1311YNG6NW7A:6
-rw-------    1 root     root     115326976 Jul 14 19:04 t10.ATA_____Hitachi_HDS5C3030ALA630_______________________MJ1311YNG6NW7A:7
-rw-------    1 root     root     299876352 Jul 14 19:04 t10.ATA_____Hitachi_HDS5C3030ALA630_______________________MJ1311YNG6NW7A:8
-rw-------    1 root     root     3000592982016 Jul 14 19:04 t10.ATA_____TOSHIBA_DT01ACA300_________________________________53VXZ2AAS
(省略)

今回の場合はHitachi_HDS5C3030ALA630がデータストア用のHDDのでデータストア名HITACHI3TBという名前にしている。そして、TOSHIBA_DT01ACA300が今回RDMとして用意したHDDである。シリアルはファイルの末尾で判断する。今回のRDM用として用意したHDDのシリアルは53VXZ2AASである。

TOSHIBA_DT01ACA300_________________________________53VXZ2AAS

vmdkファイル作成

RDMのアドレスを解決するためのフォルダをデータストア上に作成します。今回はデータストア名HITACHI3TBでフォルダ名をRDMとしています。

# cd /vmfs/volumes/HITACHI3TB/
# mkdir RDM

vmkfstoosを使いvmdkファイルを作成します。

# vmkfstools -z /vmfs/devices/disks/t10.ATA_____TOSHIBA_DT01ACA300_________________________________53VXZ2AAS /vmfs/volumes/HITACHI3TB/RDM/rdm.vmdk -a  lsilogic

WindowsXPの標準SCSIアダプタはBusLogicなのでWindowsXPへ繋ぐ場合はBusLogicをします。以下のコマンドを使いファイルが作成されていることを確認します。

~ # ls -l /vmfs//volumes/TOSHIBA3TB/RDM/
-rw-------    1 root     root     3000592982016 Jul 14 18:22 rdm-rdmp.vmdk
-rw-------    1 root     root           494 Jul 14 18:22 rdm.vmdk

ESXi上での追加はESX4(vSphere)にS-ATAディスクをRDMする方法 - とひろ仮想マシンへの追加を参考にしてください。

その他

今回はvmdkファイルを作成する時にvmkfstools -zとししたが似たようなコマンドとして-rがある。それぞれについて述べると、- zはPhysicalモードで、VMkernelを介さずに処理を行う。デフォルトはこちらになる。- rはVirtualモードでVMware Consolidated BackupやGuest OSのスナップショット機能を利用することができる。

ベンチ―マック結果

ベンチ取るのめんどくさくなったのでESXi 5.1: Using Raw Device Mappings (RDM) on an HP Microserver | Forza ITを参考にして下さい。

参考URL

手順としてはCreating RDMs on SATA drivesで記載されいることが全てであるが、日本語の情報として以下のサイトを参考にした。

追記

2013/07/15 21:49

サポートしている最大容量

3TBHDDをRDMした場合における問題点

windows7

結論から先に言うとできませんでした。 BIOSをUEFIに変更後3TBのRDMしたHDDにwindows7 64bitのOSを入れようとしましたができませんでした。HDDが3TBであるという認識はしましたが、「このディスクにWindowsをインストールすることはできません。このコンピューターのハードウェアでは、このディスクでの起動がサポートされていない可能性があります。このコンピュータのBIOSメニューで、このディスクのコントローラーが有効になっていることを確認してください。」と出てできませんでした。また、windows 7 64bitのOSからRDMした3TBのHDDの読み込みを行いましたが、「このメディアは書込みできません」と言われてできませんでした。

Can't mass-assign protected attributes: name, sales_date

最近ちまちまRails3の勉強をしている。その中の1つの http://www.rubylife.jp/rails/ をやっている。その時にうまく動かなかったのでメモ。rubyrailsのバージョンは以下の通り。

[k32ru@localhost]~/rubylife/sample% ruby -v
ruby 1.9.2p320 (2012-04-20 revision 35421) [x86_64-linux]
[k32ru@localhost]~/rubylife/sample% rails --version
Rails 3.2.13

モデルの作成とデータベースの利用 - Ruby on Rails入門の箇所で以下のようなエラーが出た。

rake db:seed --trace
** Invoke db:seed (first_time)
** Execute db:seed
** Invoke db:abort_if_pending_migrations (first_time)
** Invoke environment (first_time)
** Execute environment
** Invoke db:load_config (first_time)
** Execute db:load_config
** Execute db:abort_if_pending_migrations
rake aborted!
Can't mass-assign protected attributes: name, sales_date

Can't mass-assign protected attributesという検索キワードで出てきたRailsのサンプルで「Can't mass-assign protected attributes」ってエラーが出た | @ovreneli (tech)を参考にしてサンプルのapp/models/title.rbを以下のように変更した。先頭に+がある行が追加行であり、実際には+は入力しないものとする。

 vi app/models/title.rb
class Title < ActiveRecord::Base
  # attr_accessible :title, :body
 + attr_accessible :title, :body,:name,:sales_date,:timestamps, :tags_attributes
end

データは以下の通り確認できた。

[k32ru@localhost]~/rubylife/books% rails dbconsole
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> select * from titles;
1|宇宙に行った日|2011-06-28|2013-06-15 22:21:46.914796|2013-06-15 22:21:46.914796
2|観察日記|2011-11-14|2013-06-15 22:21:46.973237|2013-06-15 22:21:46.973237

rails dbconsole.quitで終了させる。参考URL:Railsのサンプルで「Can't mass-assign protected attributes」ってエラーが出た | @ovreneli (tech)

sqlite> .quit