コンピュータやソフトウェアのあれこれ@道民(&元道民)
Posts tagged all
Hokkaido.pm#7のおまけのお話
5月 13th
毎回恒例の一人反省会の模様です。
まず、良かった点
2次会で名刺入れがポケットから半分出てて、
それに気付いてリュックにしまったことですね。
こうやって、落とし物するのかーって思ったのと、
これ落としたらシャレにならないっす。
以下、反省点
まず、LTはリハ不足が露呈しまくりちよこで猛省しております。
もう少し流暢(りゅうちょう)にお話したかったです。
それと、普段は手元にiPhoneを置いて、ストップウォッチを表示してたのですが、
今回は普通に忘れてました。
でもって、(ペース配分が分からないので、)開き直りました。
独り言
個人的には、WAFっていうテーマは良かったと思うのですが、
そんなに需要なかったのかなぁー。
CUIのツールとかもっと需要ないのかなー。
あと、Mojoのアレ良かったですよね、北海道の現状に即してた気がします。
それと、フリーランスに関するお話も聴けて、大変ためになりました。
いわゆる、人生相談ですよね。
ちょっと、オンとオフを切り替えることにこだわり過ぎてた気がします。
っていうのも、前の会社を辞めたのが8年くらい前で、
そのときにPerlだのPHP(*1)を少しだけ勉強したんですが、
結局、ずーっとオフのまま、なーんにもせずにニートしてて、
今でも家に帰ってきたらオフに切り替えてウダウダしています。
そんなんだから、どうやったらオンに切り替えられるのか心配になって、
例えば、書斎に入ることでオンに切り替えれるのでは?みたいな感じで、
書斎が欲しい!って悩んでいた訳ですが、プーになったらなったで、
もう少し柔軟に対応したいなーって思うようになりました(*2)。
なので、まずは寝っ転がりながら、Dancerのドキュメントでも見て、
デプロイの方法を勉強をしたいと思います。
おしまい。
(*1) PHPは、それ以来、数年前にwikiのpluginを拡張した程度
(*2) プーになる予定はないけど、間違いなく社会不適合的な意味で予備軍
Hokkaido.pm#7に行ってきました
5月 13th
今回はJPA様のご協力で、riywoさんが来てくれました。
まずは、みなさんお疲れまでした!
JPA++
riywoさん++
WAF再入門ということで、個人的にうれしい内容でした。
あと、捗る系(運用系)の話は新鮮でした。
Amon2(akiymさん)
相変わらず、高校生とは思えない内容でした。
最終的に、KENT WEBのBBSがplackupで動いてました。
Dancer(aloelightさん)
use Dancer;するだけ!とか、ファイルの最後にdance;とか、
オシャレだなーって思いました。
Deploymentに関するドキュメントがあるのは、個人的にありがたいです。
Mojolicious(jamadamさん)
Mojoは、ほんとにお手軽なんですね。
モジュール群をuseするとか、いろいろ便利ですね。
Ops Tools with Perl(riywoさん)
捗る系(運用系)のお話でした。
オペレーションエンジニアが抱えている作業だったり、
運用に関するお話が聴けて、すごくありがたかったです。
まとめ
WAFについては、あまりしっかりとした知識を持っていなかったので、
今回の勉強会はとてもありがたかったです。
あと、VPSを借りている以上、運用周りに関する知識は必須なので、
そういった意味で、運用系のお話はとてもありがたかったです。
あとは、手を動かして、デプロイしてですかね。
この辺は、Hokkaido.pm Casualでカバーしたいですね。
あと、自分もLTをして、音を出しました。
スライドはこちら。
それから、スープカレーですが、
最近だと、Chutta(チュッタ)かなー。
GARAKUもYellowも捨てがたいですけどね!
という訳で、今回もどうもありがとうございました!
おしまい。
VagrantとChef-soloについて学んだいくつかのこと
5月 12th
ホストはWindows7、ゲストはCentOSです。
Vagrantのインストール
からダウンロードします。インストーラーが出来て便利になりましたね。
とりあえず起動
どのBoxがよいのかよくわからないけどとりえあず今はminimal-centos-56使っています。他は
から探しましょう。
> vagrant box add minimal-centos-56 http://dl.dropbox.com/u/9227672/centos-5.6-x86_64-netinstall-4.1.6.box > vagrant init minimal-centos-56 > vagrant up
Chef-soloを使う場合でも、とりあえずは何もせずに一度VMを起動して、VM内でknifeコマンドなどを使うのが良いと思います。
sshする
localhost:2222にsshします。鍵の設定をしてもいいけど、vagrant/vagrantでパスワードでログインできます。
Chef-soloを設定
ホスト側のカレントディレクトリ(Vagrantfileのあるディレクトリ)が/vagrantにVirtualBoxの共有フォルダがマウントされているので、ここで作業します。
$ cd /vagrant $ knife cookbook create myrecipe -o cookbooks WARNING: No knife configuration file found ** Creating cookbook myrecipe ** Creating README for cookbook: myrecipe ** Creating metadata for cookbook: myrecipe
何もしないcookbookができました。Vagrantfileの設定をします。前述の通りVagrantfileは共有フォルダにあるので、Windows側で編集してもLinxu側で編集してもOKです(ただしこの時点ではviしか入ってませんが)。
Vagrant::Config.run do |config|
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "cookbooks"
chef.add_recipe "myrecipe"
end
end
この設定により、VirtualBoxの共有フォルダが新たに作られることになるので、再起動。
> vagrant reload
パッケージをインストール
では念願のvimをインストールします。yum installするのをグッとこらえて、cookbooks/myrecipe/recipes/default.rbに一行追加。
package "vim-enhanced"
で、vagrant provisionを実行。
> vagrant provision [default] Running provisioner: Vagrant::Provisioners::ChefSolo... [default] Generating chef JSON and uploading... [default] Running chef-solo... [Mon, 30 Apr 2012 03:56:27 -0400] INFO: *** Chef 0.10.4 *** [Mon, 30 Apr 2012 03:56:27 -0400] INFO: Setting the run_list to ["recipe[myrecip e]"] from JSON [Mon, 30 Apr 2012 03:56:27 -0400] INFO: Run List is [recipe[myrecipe]] [Mon, 30 Apr 2012 03:56:27 -0400] INFO: Run List expands to [myrecipe] [Mon, 30 Apr 2012 03:56:27 -0400] INFO: Starting Chef Run for localhost.localdom ain [Mon, 30 Apr 2012 03:56:27 -0400] INFO: Processing package[vim-enhanced] action install (myrecipe::default line 9) [Mon, 30 Apr 2012 03:57:40 -0400] INFO: package[vim-enhanced] installed version 7.0.109-7.el5 [Mon, 30 Apr 2012 03:57:40 -0400] INFO: Chef Run complete in 72.384425 seconds [Mon, 30 Apr 2012 03:57:40 -0400] INFO: Running report handlers [Mon, 30 Apr 2012 03:57:40 -0400] INFO: Report handlers complete
gitをインストールする(epelを使う)
http://community.opscode.com/cookbooks/yum
を使って、yumのリポジトリを追加します。knife cookbook site installというコマンドもあるのですがこれを使うには先にgitが必要なので、今回はdownloadコマンドを使います。
$ knife cookbook site download yum $ cd /vagrant/cookbooks/ $ tar zxf /path/to/yum-0.5.2.tar.gz
myrecipe/recipes/default.rbに追加。
include_recipe "yum::epel" package "git" package "vim-enhanced"
で、vagrant provisionすると、gitがインストールされます。
apacheをインストール、設定する
myrecipe/recipes/default.rbに追加。
package "httpd" service "httpd" do action [:enable, :start ] end
vagrant provisionでインストール、起動はOKです。Vagrantfileを編集してポートフォワードの設定をします。
config.vm.forward_port 80, 8080
今度はvagrant reloadが必要です。再起動後、ホストからlocalhost:8080でVMのapacheにアクセスできます。
DocumentRootを/vagrant/wwwに変更してみます。直接httpd.confを編集するのをグッとこらえて、
$ cp /etc/httpd/conf/httpd.conf /vagrant/cookbooks/myrecipe/templates/default/httpd.conf.erb $ vim cookbooks/myrecipe/templates/default/httpd.conf.erb
myrecipe/recipes/default.rbに追加。
template "/etc/httpd/conf/httpd.conf" do source "httpd.conf.erb" mode "0644" end
vagrant provisionでhttpd.confが書き換わります。反映するにはsudo /sbin/servecie httpd reloadするなど。
デバッグなど
VirtualBoxの画面を表示する
config.vm.boot_mode = :gui
vagrantのデバッグログ
> set VAGRANT_LOG=INFO > vagrant up
chefのデバッグログ
config.vm.provision :chef_solo do |chef|
chef.log_level = "debug"
その他、使ってみて思ったこと
こんな感じで環境を作って、/vagrantの下で作業をしていくのですが、VirtualBox共有フォルダは結構遅いので、git cloneのような大量にファイルを更新する場合はホスト側からやった方がいいかもしれません。
/vagrant の下に作ったファイルはパーミッションが0777になります。かつここでgit addすると常に0644でaddされます。なので0755にしたい場合は
$ git update-index --chmod=+x hoge.sh
とするようです。
cookbookの雛形を作ったり、レシピをダウンロードしてきたりなどするにはknifeコマンドが便利です(無くても出来なくないですが)。knifeコマンドはゲスト側にあってもホスト側にあってもいいと思いますが、今回の場合
- Windowsにknifeを入れるのは大変そう(試してないけど)
- Box側には最初からknifeコマンドは入っているが、gitがyumの標準のリポジトリに無い(knife site installコマンドを使うにはgitが必要)
と、なかなかやっかいな状況でした。
http://community.opscode.com/cookbooks/databaseを使ってMySQLのDBやユーザーを作る、みたいなことをやる場合は、knife site installであれば依存する他のレシピも自動的に持ってきてくれるので便利です。とはいえ、ちょっと大げさすぎる気がしたので、結局レシピ内でシェルスクリプトを書くことにしましたが。色々エレガントなやり方もあると思いますが、適当に落としどころを見つけるのも大事だと思います。
GeForce 550 ti搭載マシンにUbuntu12.04を入れるときの注意
5月 12th
Geforce550TiにUbuntu12.04を入れようとすると,bootはするけれどそこから黒い画面が続いて何も反応がない.
どうやら,グラボが悪さをしているようなので,
インストール画面でオプションを指定して,オプションの後ろに
nouveau.blacklist=1
をつければ無事インストーラが立ち上がります.
釧路OSS ミニセミナー vol.2 開催します!
5月 11th
釧路OSSコミュニティ の第2回公開ミニセミナー(無料)を行います。
当コミュニティメンバーが、
定期的に行っている勉強会の内容をベースにしたものや、
旬な題材を使って発表します。
日時:2012/05/19(土)15:00-18:00
会場:釧路市民活動センターわっと (釧路市末広町3丁目1番1号)
会費:無料
申し込み:会場に来て頂ければそれでOK!
初心者の方にもわかりやすい内容になっていますので、
ぜひ会場の わっと まで足をお運びくださいませ。
セッション内容
・15:00 – 15:45「OSSの話を何か」(仮) : さいとう(@kazuyoshi)
・15:55 – 16:35 インターネットを楽しむ為のセキュリティについて :いけだ(@tenyawanya)
・16:45 – 17:25 「スマフォとOSSを使い人生を楽しく過す7つの方法」 : おがわ
・17:35 – 18:00 LT(ライトニングトーク)&閉会 : 釧路OSSコミュニティ参加メンバー
@T_akms @APA_Diver @yatch3455 @ya8
興味の対象の幅を広げたり、
同好の仲間を増やす機会としてもどうぞ。
懇親会も開催します。(18:30から)
懇親会への参加をご希望の方は、下記 atnd にて事前申し込みを
お願い致します。(懇親会会費:4000円)
以下はvol.1の動画アーカイブです。
http://blog.kushi.ro/kushirooss/2011/05/78/
第20回アジャイルサムライ読書会 @札幌道場 開催
5月 10th
5月8日(火)、第20回アジャイルサムライ読書会 札幌道場を開催しました。
参加者は6名。14章 TDD(テスト駆動開発)がテーマです。
ページ数が少ないので15章に入れるかなーなんて思ったけれど、関連することを話し合っていたらあっという間に時間は過ぎるものですね。
充実した時間となりました。
今回の範囲で「グっときた」ところ
意図を伝えるためにテストを書く
勉強会として
TDDはTDDBCが札幌で何度も開催されているのもあり、プラクティスとしてはかなり浸透していると思います(業務で実践できているかはともかく)。
実際に実践している人も多く、ディスカッションではTDDを実践する時の悩みや壁など具体的な問題についての話がたくさん出てきました。
特に繰り返し出てきた話題としては
- テストコードの品質を上げたい
- TDDを適用しづらい部分がある
- テストコードを書く技術がないとTDDは難しい
このあたりでした。
TDDは設計手法かどうか
本書では「TDDは設計手法として実にうまい方法じゃないか」と書かれていますが、TDDは「設計手法」として本当に有用なのかどうかという話も盛り上がりました。
- TDDを実践すれば良い設計のコードが書ける
ではなく
- TDDを実践し続けることで良い設計の仕方が身に付く・設計力が上がる
ではないかという話になりました。
TDDを実践すればすぐにうまい設計ができるわけではなく、TDDは設計の力を上げるのによい訓練方法であるという考えは忘れないようにしたいです。繰り返し身につけていくことが大事ですね。
実際に体験してみて感じるのは、ちょっとTDDをやらなくなると一気に力が落ちること。
継続していかないとすぐに衰えてしまう気がします。
TDDとBDD
「TDDとBDDの根本的な違いって何?」という話も出てきました。
色々な解釈はあるのですが
- TDD: テストコードを書くタイミングと設計するタイミングが同じ => インターフェースを決めないとテストが書けない
- BDD: 最初に振る舞い(ストーリー)だけを考え、その後コードを書く => ソースコードを書くまでにワンクッションある
という区別の仕方がしっくり来ました。
そしてその分類で考えると、RSpecはどちらかというとTDD寄りのテスティングフレームワークなのかなーという話になりました。
BDDとしても使うことができるけど(テストが自然な文章になっているから)、検証したい目的からするとTDD用のフレームワークなのかなぁと。
RSpecのサイトには以下のように書いてありました。
—–
RSpec is testing tool for the Ruby programming language. Born under the banner of Behaviour-Driven Development, it is designed to make Test-Driven Development a productive and enjoyable experience with features.
—–
(RSpecはBDDの旗印のもとに生まれたテストツールであり、TDDが生産的で楽しい経験となるような特徴を持つよう設計されています) — 翻訳はirasally
RSpecよりもさらにBDDに特化したテスティングフレームワークがCucumberであるという位置づけの理解です。
詳しいディスカッションの内容はwikiを見ていただきたいと思います。
運営の立場で
いやー、20回ですよ、20回。
途中で挫折せず、読書会を20回続けてこれたということに驚きつつほっとしています。
(20回で本書が終わっていないというのはおいておく)
これも、各回に皆様が時間を見つけて参加してくださっているからこそです。感謝。
残りあと数回ですが、ラストスパート、良い時間となるようにしていきたいと思います。
今回のディスカッションは以下のページにまとめてあります。
https://github.com/agile-samurai-ja/support/wiki/Readingagilesamuraiinsapporo20120508
いつも会場を提供していただいている弊社、今回もありがとうございます。
残り数回ですが、よろしくお願いします。
Head First JavaScript読書会 06に参加しました
5月 10th
5月7日(月)に開催されたHead First JavaScript読書会 06に参加しました。
GW明けの月曜日というハードな日程でしたが、無事、乗り切ることができました。
今回はFormのバリデーションと正規表現についてです。
Formのバリデーション
Formとは何ぞや?というところから、httpリクエストの話、httpメソッドの種類(GET, POST, PUT, DELETE, OPTIONなど)について一通りざくっとおさらいしました。
その後、Formデータの取得の仕方、バリデーションが大事な理由などについて話しました。
バリデーションの意義について、313ページには「本当に検討なアプリケーションになるとサーバー上でもデータ検証を行います」と書いてあるけれど、安全のためにはむしろサーバーサイドでデータ検証を行うべきだよなあという話をしました。
何度もサーバーとやり取りをするのもイライラするからちょっとした入力ミスを防ぐことができるよう、Javascriptの制御を入れておく、本当のデータチェックはサーバーサイドでやる、のが良い形なんじゃないだろうか。
安全のためのチェックはサーバー上で行い、クライアントサイドのバリデーションはユーザービリティ向上のために行う、というように目的を分けるという観点はとてもしっくりきました。
正規表現
本書では
- 必須チェックをしたい
- 桁数チェックもしたい
- 数字以外は入力してほしくない
- メールアドレスの形式じゃないものは受け付けたくない
というように、バリデーションのケースがだんだん複雑になってきたところで、正規表現が登場しました。
(よりによって、メールアドレスの正規表現を例に出さなくてもという話はちょっとでましたが)
Javascriptの正規表現は//で囲んで書きます。
"Hello World".match(/^\w{5}\s\w{5}$/)
---
[ 'Hello World', //マッチした
index: 0,
input: 'Hello World' ]
"Hello World".match(/^\w{7}\s\d{5}$/)
---
null // マッチしない場合はnullが返る
グルーピングは()で行うことができます
"Hello World".match(/^(\w{5})\s(\w{5})$/)
---
[ 'Hello World', // マッチした文字列
'Hello', // グループ1番目
'World', // グループ2番目
index: 0,
input: 'Hello World' ]
match関数ではなくRegExpオブジェクトを生成することもできます。
本書では自動的に生成されたRegExpオブジェクトを使う方法が載っていました。
var regex = /^\d{5}/
regex.test("12345")
正規表現はとても便利で、ある程度はできるようになっておきたいし、読めるようにしておきたい。
便利さを感じるようになってから読んだり書いたりを積極的にするようになった。
(正規表現使うたびにgoogleで量化子やメタ文字のリファレンスを探しているので、まだまだですが)
だけど、使いすぎると自分自身も後からメンテナンスが辛くなってくることがあるから、どこまで厳密にチェックするかも含めてさじ加減が大事かもしれないなぁ。
Hokkaido.pm#7は今週末ですよ!
5月 8th
行こうと思ってたけど申し込んでない方はお忘れなく。
お申し込みは、こちらから!(懇談会は、こちらから)
今回も、JPAの協力によりゲストが来てくれます。
ゲストは、なんとriywoさんです!
As a Futurist…
Hokkaido.pm #7 に参加させて頂きます
という訳で、自分もLT(まだ準備してない)でなんかやりますので、
是非、techno_nekoには興味ないけど、riywoさんに会いたい!みたいな感じで、
こちらから参加して頂ければと思います!!!11
おしまい。
前回の参加は 2011.05.08 ..
5月 5th
前回の参加は 2011.05.08 だったので、約1年ぶりの参加ですね。 以下に自分がJavaScript嫌いなのかがよくわかる^^;
だけど、こうして続けていてくれるので、あんまり勉強する気に ならない僕に力を与えてくれるので、ありがたいです。
@tricknotes にはいつも感謝です^^
今日は、第8章 メソッド(P.90)の array.reverse() からで、せっかくだからTestを書きながらやってみましょうということで、mochaを使いテスト書きながら楽しい会となりました。
一般発表は
- ぬるjs
- NotHub API の紹介
- Web Audio APIとNode.jsで楽々ウェブ楽器の作り方~Beatonica
などありました。
次回もテスト書きながら本を読みすすめるのかな。楽しいけどあまり本が進まないねw
MTの構築はじめました
5月 5th
まずは、MTOSを使って、MTを始めてみました。
まず、htmlとcssをDreamweaverを使って、なんとか形にします。
幸い、このDWが手元にあったので、昔を思い出しながら作成しました。
次に、MTOSをインストールして、テンプレートを編集します。
主に”index.html”の中身を差し替えて、「HTMLヘッダー」だけ残しました。
cssは自分が用意したものを追加してインポート。
で、肝心の中身ですが、もちろん工事中の旨を表示。
一応、気になったのでメモ。
encode_html="1"
が、出てきたんですが、意味が分からないし、検索しても出て来ないし・・・。
やっと、見つけました。
これ、グローバル・モディファイアって言うんですね。
これがあると、テンプレートタグの置き換え時にエンコードしてくれるそうです。
例えば、”<"とか">“を、”<”とか”>”にしてくれます。
なるほどねー。
おしまい。
