paizaに挑戦してみた

最近ではもうあんまり仕事でコードを書くことがなくなって寂しい限りですが、今の自分の実力がどんなもんか試してみました。
ITエンジニア・プログラマ向けの転職・就活・学習サービス【paiza(パイザ)】


最初はmac付属のvimで書いて、その後emacs、結局eclipse立ちあげて挑戦。というか久しぶりにemacs使うとショートカット全然覚えてないっすね…大学のときはeclipseのショートカットもemacsに合わせてたのに。

全部javaで挑戦したのですが結果はBでした!
上位30%の「一定基準以上のスキルを持っています。多くの企業で書類選考なしにカジュアル面談、面接へ進めます。」らしい。Aランクも1つ挑戦したんだけど、難しいっすね。何か高校入試の数学解いてる感じですわ。アルゴリズムという名の解法を知っていないと解けないというか何というか。大学の専攻が情報系じゃないだけに、その辺りの知識がないんですな。
Bランクでもスカウトが来るかしら…ひとまずAランク目指して頑張ろうと思います。久しぶりにプログラミングすると脳汁出まくりますね。初心者みたいなこと言いますけど、頭のなかで動きを組み立てて、コードにして動いたときのキタコレ感やばいです。

もっと会社でプログラミングしたいなぁ。クソみたいなエクセルファイル間の整合性取る仕事とか、実機のミドルのGUIから値コピペして集計する仕事とか、全部システム化したい。DBサーバ立てて値を入れていって集計のときにSQL書けば一瞬で終わる仕事を、エクセルファイルに値を入れていってさらにそれをマクロで…なんてことしてるから、みんな雑務に追われてるんだと思う。明治生命かどこかの社内PaaSとか本当うらやましい。結局サーバ個別に立てるとその運用が〜とかISOが〜とかなってしまうからなぁ。

Windows7にknife-solo + vagrant環境を作成しようとして疲弊した話

会社でchefを紹介することになり、knife-solo + vagrant環境を構築しようとしたのですが、細かい所で動かなくて大分疲弊しました。(このご時世にもchefのcの字も知らない同僚が多いのがSI企業の辛いとこです…)

結局諦めて、Windows上にChef用のCentOSとテスト用のCentOSを立ててしまったので、成功パターンではないのですがこれはダメだったというアンチパターン?ということで。

環境は以下となります。

  • Windows7 32bit
  • vagrant 1.6.3
  • knife-solo (失念しましたが2014/8/22の最新番)
  • VirtualBox  4.3.4 → 4.3.14(インストールがうまく行かず) → 4.3.12

やりたかったこと

  1. powershellからvagrant ssh (これはまあできた)
  2. powershellからknife solo cook <hostname>  ⇐これがどうしてもできなかった

要はChef実践入門の序盤のお試し環境Windows上で実現したかったわけです。Windowsでこれを実現するには、powershellから rsync + sshが実行できることが必要となります。私の場合はrsyncがどうしても動作してくれず、断念しました。

cygwin + knife-solo + vagrant 

「knife-soloはcygwinrsyncを使うこと前提にコードが書かれている」という話を聞いていたので、なら最初からそうしよう!と思ってチャレンジしたのがコレ。しかしながらsshもできなければ、rsyncも動作しなかった。sshvagrant以外の普通のサーバにも試してみたが、「Socket operation on non-socket」(だったと思う)が出てNG。当然、knife solo bootstrap <hostname>も knife solo cook <hostname>もダメでした…

mingw + knife-solo +vagrant

以下のサイト様を参考にして挑戦しました。

嗤うプログラマー: Windows に Vagrant + knife-solo環境を作る手順 2014年4月版

ちなみに最初に挑戦したのはこちらなのですが、どうしてもmingwGUIからパッケージがインストール出来なかったため一旦断念。どうやらどうも社内の認証プロキシに引っかかっていたっぽいです。GUIからではインストールできなかったのですが、powershellからmingw-getを実行することでプロキシの認証画面がポップアップ画面で表示され、問題なくDLできることを確認できました。

mingw-get install msys-openssh
mingw-get install msys-rsync

 環境変数mingw、msysのパスを通し、

vagrant ssh

つながった!

次に、knife-soloを実行するためにvagrantssh設定をpowershellで書き出します。

encoding -defaultを設定しないUTF16で書き出されてしまい、盛大に文字化けするので注意。

vagrant ssh-config --host <hostname> | out-file C:¥Users¥<User>¥.ssh¥config -encoding default

 ちなみにmingwssh自体はwindowsの$home配下を見に行ってないようなので、ssh <hostname>は上記では失敗します。以下のようにmsys-opensshのssh_configに設定を書き出す必要があります。

vagrant ssh-config --host <hostname> | out-file C:¥MinGw¥msys¥1.0¥etc¥ssh¥ssh_config -encoding default

上記設定の是非は別として、これでssh <hostname>でログインできました。

続いてvagrant上のVMにchefをインストール 。なんか最後、エラーが出てる気がしたが気にしないぜっ!

knife solo bootstrap <hostname>

ちなみにプロキシ環境では、vagrant上のVMに先にプロキシ設定を入れて置く必要があります。自分は/etc/environmentに以下の設定を通して、souceしました。

  • export http_proxy=ほにゃらら、export https_proxy=ほにゃらら
  • source /etc/environment 

そしていよいよknife soloを実行する!

knife solo cook <hostname>

しかし、rsyncがどうしても動かない!!というかbootstrapのときに出てたエラーもrsyncについてでした。

エラーメッセージを見ると、「Failed to dup/close」とのことですがGoogle先生に聞いても良く分からない。以下、ネットの成功パターンを見て自分が試したこと。

  1. cygwinrsyncを使う
  2. cwRsyncを使う(MinGWからrsyncを一旦アンインストール)

cwRsyncの中身はcygwinの一部っぽいので2つを試す意味は無かったような気がしますが…まあ結果はダメでしたよ。

丸2日ほど試行錯誤したあげく(VirtualBoxのバージョン変えたりしました…)、結局断念してWin上にVirtualBoxCentOSを二台立て、一台をknife-solo実行用、もう一台をvagrantで管理するテストVMという逃げ回避索をとりました。

上記のブログの方も書いていましたが、おとなしくChef環境をVMに立てるのがWindowsの場合はいいかもですね。あぁ会社でMac使いてえ。

Win PC上のVMware Playerに立てたESXiと、別筐体のESXiサーバをタグVLANで接続する

 会社でどうしても物理サーバが2台用意できず、物理サーバ上で構築したESXiサーバと、Windows PC上のVMware Playerに立てたESXiサーバで仮想化環境を構築しようとしたらタグVLANでハマった話。

構成はこんな感じ 

f:id:suzan2go:20140818223731p:plain

  • VMware PlayerのNW設定はブリッジ接続。
  • ブリッジ接続したWindows7上のnicipv4ipv6ともオフにする。

物理ESXiサーバ上に構築したvCenterからWinPC上のESXiサーバがどうしても見えない。タグVLANを辞めてポートVLANにすると接続できるので、タグVLANがうまくVMware Playerまで届いていない様子。

VMware Player上の設定を色々変えてみたりしたのですが、原因はWindows側でした。どうやらOS + NICの組み合わせによってはVLANタグを引っぺがしてOSに渡してしまうようです。以下のサイト様を参考にタグVLANをひっぺがさないようにしたところ、タグVLANで問題なく通信できるようになりました。

Wireshark + Intel NIC で tagVLAN の VLAN-ID を含めてキャプチャする方法 - ..たれろぐ..

Web系雑記: RealtekのNICでタグVLANのタグをパケットキャプチャで確認する

 

ブリッジ接続しているからVMware PlayerまではちゃんとタグVLANのパケットがながれているはず!と思い込んだため、解決まで結構時間がかかってしまいました。

VMware Playerでブリッジ接続にしていても、パケットをそのままVMware Player上の仮想マシンに流せるわけではないのですねー。勉強になりました。

最初の記事って何書いたらいいか分からんよね

何かアウトプットを発信していきたいと急に思いたち、

ブログを始めることにしました。

仕事の中で学んだことと、会社とSI業界に関する愚痴とか愚痴とか愚痴とか書いて行く予定。