2011年12月31日土曜日

今年一年の総括

とうとう今年も本日のみとなりました。
私はエンジニアとして今年は何かとアウトプットを増やそうと考えて活動をしてきました。
そんな私の一年間を振り返ることとまたこの一年で感じたことを総括したいと思います。

まずこの一年で多くの勉強会に参加させていただきました。
去年も勉強会に参加自体はしていたのですが去年の倍以上はLTを含めてお話させていただいたと思います。
このきっかけはやはり去年の年末の#OLOJP(ひがさんが出た時)にmagic3の話をさせていただいたのが大きかったです。
その後の懇親会(忘年会議)で多くの人と知り合いになり、良くも悪くもTwitterで絡んでいただき、それが今年の活動のやりやすさを生んだと思っています。
なので発表の機会やネゴをしていただいたオープンラボ備後の主催者である@lopes_nbさんには本当に返し切れないほどの恩があります。
また会社としても勉強会には比較的に良心的に参加させていただきました。
OSC神戸などの交通費を出してもらうなど、ありがたい話だと思います。
本当に当時の上司であるがみさんには感謝しています。
と色んな方の支援の上で毎月勉強会に参加したりしていたのですがその結果感じたこと、得たことが3つあります。

1 アウトプットを増やすとインプットも自然と増える
これは多くの方が仰っていますが本当のことだと実感しました。
「エンジニアは高いアンテナを持て」とか「常に新しいことを学ばなければならない」とよく目にしますがそのためにはまず「自らアウトプットを増やす」と言うのが一番手っ取り早い対策なのかもと感じました。
このアウトプットは勉強会で話をするだけじゃなくてTwitterでもブログでもなんでもいいと思います。
その結果は自然とインプットとして帰ってきますので自分に合った方法でのアウトプットを模索してみるのがいいと思います。

2 聴衆者と講演者では知り合いの増える数が圧倒的に違う
聴衆者の場合、接点が増える対象が主催者と講演者と懇親会の席の近い方ぐらいなのですが講演者になると対象は参加者全員です。
そうなるとTwitterやらFBやらで色々と繋がりが爆発的に増えました。
これが自然とインプットが増える要因にもなったと思います。
また名刺交換は「交換で終わる」ことが多いと思いました。
それ自体はとても有意義なことなのですがその次のアクションを生みたいor生む場合はもうひとつ別のコネクション(SNSとか)で繋がっているのが重要だと思います。
このコネクションをちゃんと作ることを意識するとスター式というかクモの巣状というかそんな感じで知り合いが繋がっていくのでとても強いコネクションが生まれます。
これがFBが流行る理由なのかなと思いました。

3 自分の立脚点がわかる
当たり前というか当然のことですが比較対象がいないと自分の立ち位置というのはわからないものです。
数学でも空間座標の把握は他の座標との比較で行います。
この他の座標(知り合い)の数が多ければ多いほど「広い視野での自分の立ち位置」が
測れます。
例えば私の場合、エンジニアを志したのが遅かったのでこの業界に入ってからシステム的な勉強を始めました。
なので実質3年程度しか勉強をしてません。
そうなると劣等感はあるけどどれくらい勉強不足かわからない状態でした。
社内の中ではそれなりに分かる人の立ち位置になったけど世間一般的にはどうなのだろうか?という不安が常にありました。
それが色んな人とコネクションを作り、話を聞く上で自分のストロングポイントとウィークポイントが見えてきました。
未だコンパイルが必要な言語は不得意ですし、組み込みの知識はまだまだですが自分もエンジニアを名乗れるようにはなってきたかなと思っています。
また意識と言うのは常に周囲に引っ張られるもので周囲に合わせて最適化されていくのですが「向上心の高い人とつながると自然と自分も向上心が高くなる」と感じました。

ということで3点ほど上げましたが結論として「多くの仲間を得ことが出来る」というのが勉強会に参加して感じたことです。
自分の意見をどんな形であれ、発信することはリスク(誹謗中傷など)を伴うことですが同志を得るためには必須のことなのだと思います。
そして「意識の高い仲間を作ることが自分に対する最大の投資になる」と思います。
このメリットは上記の他にも数えきれないほど多くの効果を発揮します。
ただこれは類は友を呼ぶ部分もあるので気がついたら周囲が変態でいっぱい!ってことに可能性もありますのでご注意ください。

他には今年は企画・運営にも積極的に参加しました。
個人的な趣味である格ゲーではチャリティー大会などを企画したり開催したりしていたので同じようなノリでなんとなくOSC広島の実行委員になったりしました。
OSC広島の開催にはここには書き切れない多くの物語があった(来年もやるので現在進行形の方が正しいかも)のですがこれは人の動き、金の動き、そして企画の動きで多くのことを学びました。
OSC広島自体でも多くの繋がりが生まれ、勉強させていただいたのですが実行委員になることでまた別の視点から多くのものが見えました。
何かを成功させるには色んな力や能力が必要で、それを一人で担うことは難しいと「今更ながら」強く感じました。
実際のところ自分は「やりゃ人間何でも出来る」と思ってる節があるのですがそれだけではない別の切り口に気がつけたような気がします。
もし将来起業したり管理職を目指している方はこのような企画・運営に積極的に参加してみるのがいいと思います。
また「使われる側」の人もリーダーが何を欲しているかと言うの知るには「実際にリーダーを経験してみる」のが最も手っ取り早いと思いますのでオススメです。
なのでOSC広島は実行委員を募集中ですのでご興味がある人は是非(宣伝w

osc-hiroshima@list.ospn.jp

エンジニアとして今年は大きくこの2つかと思います。
当然、反省点も多くあります。
まずはエンジニアとしての成果物をプライベートで全くといっていいほど作ってないこと。
ちょっとbot作ったり、格ゲーの申し込みフォームを作ったりしましたが本腰入れてしたことは皆無です。
これを来年は大きな課題としたいと思います。
ということで来年に向けた布石として読書スイッチさんの技術的な部分のお手伝いをすることにしました。
元々、中の人とは知り合いで何かとお世話になっていたので恩返しも含めて自分に出来ることをしようと思った結果です。
双方にメリットがあるので自分がスマフォ版読書スイッチだったりAPIの作成をすることで成果物を作れればいいなと思います。
すでに動き出している案件ですので早く形にして皆さんの元にお届けしたいと思います。
他にもこんなの一緒にどうですか?思うことがありましたらビジネスライクなこともそうでないことも積極的に形にしていきたいと思いますのでご連絡いただければと思います。
次に課題としてもっと技術的に有意義な活動をするということです。
今年は「面白可笑しく技術っぽいこと」をして観衆を楽しませることに専念していました。
これ自体はとても重要な要素だと思っているのですが「面白かったけど結局なんだったの?」とか「名前は覚えてるんだけど何が得意の人だっけ?」とか「TDDって結局何?」とか「山羊の人」とか「あぁ男の娘!」などとても残念な伝わり方が多かったと思います。
なので勉強会でセッションとしてお話する時は「エンジニアの人に有意義な時間と技術的な知識を提供」するように心がけたいと思います。
これは年明け早々に オープンセミナー広島でチャンスをいただけるので 当 日 に 発 表 資 料 を作成する万全を期すようにしたいと思います。
また今年に負けない爆笑の渦を作れるように妥協せずに頑張ります。
他にも嬉しいことにこのようなチャンスを頂ける話がちらほら出てます。
なので来年は今年同様にアウトプットを増やしながらもその質を上げていきたいと思います。
このブログももっと技術的なメモを残していきたいと思います。
ということで今年の総括としては「意識の高くてすごい仲間」がいっぱい出来ました。
来年は更に仲間を増やしつつ、そんな仲間へのフィードバックを作りたいと思います。
さて今年も残すところ後わずかとなりましたし、転職のこと・具体的な来年の活動などは年明けてからにしたいと思います。
それでは皆さん良いお年を。

2011年12月18日日曜日

postgresqlを使った位置情報の計算について  その2

 PostgreSQL Advent Calendar 201118日目を担当します@soudai1025です。
先日はスーパーエンジニア石井達夫さん鋭意開発中!pgpool-IIのオンメモリクエリキャッシュ機能でした。
そんなわけで本日の内容ですが実ははslonyとPostgreSQL9.0から実装されたレプリケーションの話をしようかなと思ったのですが 第 1 回 Slony-I を使用したシステム構築『Slony-Iを動かしてみよう』などがとても素晴らしい資料が豊富なので断念しました。
PostgreSQLは日本語ドキュメントが豊富なのがいいところですよね。
なので昔にちょっとエントリーをかいたことがあるpostgresqlを使った位置情報の計算についての実践的な内容を記載したいと思います。


まずおさらいですが位置情報をつかった距離の計算はSQLで
SELECT sqrt(power((対象緯度 - 自分の緯度) * 111, 2) + power((対象経度 - 自分の経度) * 91, 2)) AS distance
とすることで計算できます。
そして今いる緯度経度はJavaScriptとjQueryを使って以下のとおりで取ってこれます。

$(document).ready(function() {
    var latlng = getUrlVars();
    if (latlng["lat"] == undefined || latlng["lon"] == undefined) {
        navigator.geolocation.getCurrentPosition(success, error);
    } else {
        if (latlng["lat"] != undefined) {
            clat = latlng["lat"];
        }
        if (latlng["lng"] != undefined) {
            clng = latlng["lon"];
        }
        location.href = 'map.php?lat=' + clat + '&lon=' + clng + '&range=0.5';
    }
    function success(position) {
        var clat = position.coords.latitude;
        var clng = position.coords.longitude;
        location.href = 'map.php?lat=' + clat + '&lon=' + clng + '&range=0.5';
    }
    function error(msg) {
        var clat = 34.4923;
        var clng = 133.3613;
        location.href = 'map.php?lat=' + clat + '&lon=' + clng + '&range=0.5';
    }
});

この例では緯度経度を取得した後にmap.phpに投げてます。
parameterのrangeは検索範囲の距離をキロメートルで指定している形です。
これをphp側で取得しSQLとして使用するとこんな形になります。


SELECT 
    sqrt(power((hoge.lat - 33.333333) * 111, 2) + power((hoge.lon - 133.333333) * 91, 2)) AS distance
FROM hoge
WHERE 
    circle(point(hoge.lon * 91.0, hoge.lat * 111.0), 0.5) @ circle(point(133.333333 * 91.0, 33.333333 * 111.0), 0.5)

ここまで出来るとSQLで取得したデータを連想配列にし、phpでJSONに変換して すれば比較対象の緯度経度、自分の緯度経度、距離でリストからGoogleMAPにピンを挿し込むことも可能です。
さてここまで来るとかなり実践的に業務で使えるお話になりますね。
でも今日はここまで!
続きはこちらで発表したいと思います。

オープンセミナー広島

ここではデモも含めて実践的なコーディングとWEBアプリをスマフォアプリに変換するところまでしますのでご興味がある人は是非お越しください。
あれ?よく見ると昨日のアドベントカレンダー担当の石井さんも発表されるじゃないですか!
というわけで皆さん奮ってご参加ください♪


というわけでORマッパーじゃこんなこと出来ねぇだろ!ってこと位置情報の計算の話でした。
それでは明日はdai_yamashitaさんです。
引き続き PostgreSQL Advent Calendar 2011をお楽しみください。

2011年12月10日土曜日

PHP5.4でのhtmlspecialcharsの仕様変更とセキュリティ

さてさて、PHP5.4 Advent Calendar 2011の10日目を担当する瀬戸内○態クラスタphp部門代表、@soudai1025です。

昨日は@srea2431さんがphp5.4で@(エラー制御演算子)はどう進化したのか?という素晴らしい内容でしたので今日はあっさりざっくりうっすらとphp5.4のhtmlspecialcharsの話したいと思います。

そもそもhtmlspecialcharsを使ってない人のために関数の説明をこちらのサイトから引用してきました。
簡単に言うと
htmlentities -- 適用可能な文字を全てHTMLエンティティに変換する
htmlspecialchars -- 特殊文字を HTML エンティティに変換する
こんなところかなと思います。

ただこちらのサイトにも

htmlspecialcharsの第三引数は、今のところ指定するメリットは無い。

と書いてありますがこれ罠です。
詳細は徳丸浩さんがブログ「PHP5.4のhtmlspecialcharsに非互換問題」で述べていらっしゃいます。
そもそも個人的には不正な文字エンコーディングを利用した攻撃を防ぐためにたとえUTF-8だとしても第三引数も指定する方が良いと思います。

で仕様変更で罠はわかったけどそもそも中でなにやってんの?って人。
良いブログ見つけてきましたよw

htmlentities() と htmlspecialchars() の違い

といわけで文字を出力するときは

1 htmlspecialcharsでエスケープ
2 ENT_QUOTESの引数を付ける!
3 第三引数には文字コードを指定する

ということを忘れずにやってくださいね!!
えっお前は他人の引用してるだけじゃん?って声が聞こえてきましたね。
まさにそのとおりです(キリッ
なので更に引用で大垣さんのセキュリティの基礎の話もしときます。

1 入力時にValidate
2 出力時にエスケープ
3 制御時はベストプラクティス

この話はこちらに資料があります。

ついでに自分はこのエスケープを

foreach ($parameter as $key => $get_data) {
    ${$key} = htmlentities($get_data, ENT_QUOTES, 'UTF-8');
}

としたりしています。
これは簡単に説明すると$parameterに連想配列を突っ込んでたらkey名の変数としてエスケープ後に入れてます。
用途によっては配列に入れなおして戻り値として返すメソッドにすればより使いやすくなると思います。
例えば

foreach ($_POST as $key => $get_data) {
    ${key} = htmlentities($get_data, ENT_QUOTES, 'UTF-8');
}

とかすると$_POST['hoge']の中身がエスケープされて$hogeに格納されるって感じです。

というわけでhtmlspecialcharsの仕様変更から処理内容、そして簡単な使い方でした。
それではツッコミお待ちしております!

また明日は@tpyamamotoさんです。
引き続きPHP5.4 Advent Calendar 2011をお楽しみください♪

2011年11月15日火曜日

Oracle DatabaseのフラッシュリカバリエリアがいっぱいでDBが応答しない時について


昨日ちょうどOracleDBの障害があったので備忘録。
つかOracleDB使ってる人は当たり前かもしれないけどDB知らない人が開発環境でローカルに入れたりした時にハマるかもしれないのであんまり詳しくない人用に(ホントにあったので)

OracleDB(以下Oracle)はフラッシュリカバリエリアの領域をインストール時に指定します。


フラッシュリカバリエリアについてはこちら


推奨としてはこのフラッシュリカバリエリアは物理的に別のHDD(バックアップストレージ)をISCSI等で指定するのが流儀ですがまぁ開発環境とかだとローカルにバシッと数Gで切っちゃったりします。
本番環境でも切っちゃったりすることあるとは思います。
俺もそういう本番環境作ったことありますので。
でこのフラッシュリカバリエリアは「Oracleのバックアップ領域」として使われます。


具体的には

  1. RMAN(Oracleのバックアップの仕組み)で生成したバックアップセット(暗号化されたバックアップ)の保存
  2. アーカイブログ(データベース内の実行ログ)の保存
  3. 初期パラメータなどのその他、必要ファイルの保存

などです。
まぁここらへんはWEBに詳しいことが沢山あるのでDBAの人は調べてください。
Oracleを運用する上では必須の知識です。
なお、このフラッシュリカバリエリアの領域はdbにログインした後に

select * from v$recovery_file_dest;

で確認したり、EM上から確認できます。
参考画像


でここからが本題です。
上記のリンクを最後まで読まれた方はご理解いただけてると思いますが

フラッシュリカバリ領域がいっぱいになった場合には、以下のようにフラッシュリカバリ領域が満杯になったことを示すORA-19815がアラートログに出 力されます。このとき、インスタンスがダウンしたり、バックアップが取得できなくなることにはなりません。Oracleが自動的に古いファイルから削除し てくれますが、あまり好ましいことではないので、手動でのメンテナンスを検討する必要があります。
 と書いてあります。
が、アーカイブログモードでDBを運用している場合DBが落ちます←
そして再起動しようとするとREDOログが更新出来ないためマウントは出来ますがオープンでできません。
つまり起動でこけますm9(^Д^)プギャー
なので常にフラッシュリカバリエリアの領域を圧迫しないようにメンテナンスする必要があります。
なのでOracleにはEMでRMANのバックアップスケジュールを指定した際にお手軽に過去のバックアップ分を削除したり、アーカイブログを削除するように設定できます。
そもそもバックアップの設定の以下の部分で出来ます。

まずEMの可用性を選んで



バックアップの設定を選びます



さらにポリシーの黄色でマークしたところをお好みにどうぞ。


な感じですがこれ簡単だけど罠があります。
「EMでバックアップ設定して一緒にアーカイブログの削除やバックアップの差分も削除できるから安心!」とか思ってるとはまります←今回はこれだった。
これはEMが正常に動いてないとスケジューラーも当然動きません。
コマンドラインで

emctl status dbconsole

と打ってRunningとか返ってくる癖にスケジューラーが動いてないとかよくある話です。
そうなると一見元気にDBは動いているのにある日突然止まります。
そもそも開発環境だと常時DBを起こしておらず、必要な時にDBだけを起動させることもあるでしょう。
そうなるとdboraとか設定してるとかWindows版(全部自動起動するはず)ならいいんですがDBだけ起動させてEM立ち上げ忘れるとかあると思います。
フラッシュリカバリエリアの領域に対して割り当てて無いのにテストデータ作るために大量のinsert文とか流してアーカイブログログを大量に作っちゃうとフラッシュリカバリエリアの領域を食いつぶして止まっちゃうわけです。
で止まったから再起動→立ち上がらない(´・ω・`)となるわけです。

でそんな人はこちらを参考にしながら対応してみてください。
初期パラメータの修正し、フラッシュリカバリエリアの容量を拡げた後にDBを起動させてログの削除を行います。
開発環境なら一時凌ぎでいいですが本番環境の場合はかならずフラッシュリカバリエリアの最検討をしてください。
そもそもフラッシュリカバリエリアの監視をしてなかったor削除のルーチンが無かった場合は早急に対応した方がよいと思います。
そんな人はこちらを参考にしてみるといいと思います。
ついでに私が設計する場合はスケジューラーはEMを使わずにlinuxのcronを使ってバックアップ等を行なっています。
監視も冒頭で触れたSQLとシェルスクリプトを使ってzabbixに値を投げて監視し、閾値を超えた場合はメールを出すようにしています。
ココらへんの運用については需要があれば次の機会に。

と言う訳で本番環境での諸設定もですが開発環境でOracleを使う場合もアーカイブログの運用には気をつけましょう!!

2011年10月24日月曜日

第11回 オープンラボ備後

やってきましたオープンラボ備後。

でブログをまとめるまでが勉強会!ってことでまとめます。
今回は自分がセッションを担当したので大したもんじゃないけど資料を簡単に公開しておきます。
あと、これはOSCで発表した資料です(オープンラボ備後はちょっとだけ加工した
なのでOSCで気になったけど見れなかった人はこれを見て安心してください(はぁと
ついでに司会しつつ最初のセッションでした。

ではOSC当日に作ったという幻の資料をどうぞ


【タイトル】「WEBサイトを作る時のOSSの選び方 ~OSCの使い回しじゃないんだよ!~」
【発表者名】曽根さん
【時間】60分
【概要】OSCで発表した内容をより具体的に掘り下げてお話します。
DBのpostgresql9.1やCMSのmagic3などのインフラからhtml5まで時間の許す限りお伝えします。



でマインドマップをhtmlにしてDropboxで公開しました。
Dropboxなんで容量なくなったら急に消えるかもしれません。
まぁでも年内(2011年内)は保存しておきます。
逆に見たかったのに無くなってるじゃん!みたいなことがあれば連絡したら上げますのでお気軽にどうぞ。

WEBサイトに必要なもの


WEBサイトに必要なもの 2


postgresとmysqlの方向性


クラウドと自社サーバ


Flash VS HTML5


という感じでわりといつも通りグダグダな感じ。
こんな自由な感じのうすーーーい内容で良かったのかと不安になります^^;
毎度のことながら間違ってることなどのご指摘は随時お待ちしています。
資料自体が簡潔につくってあるのでこれを見ただけじゃよく解んないかもしれませんが結論は

・ 地方はLAPPかLAMPでhtml使った上でレン鯖とかPaaSとかIaaSとかよくわからんでも使ってみていいんじゃない?
・ で磯野-!一緒にHTML5やろうぜー!!って感じです。

暇な時にでもどうぞ。

でここで超押してるCMSのMagic3もお時間があれば是非。
導入は超簡単(オープンラボ備後ではデモをした)なので!!
ダウンロードはこちら。(2011/10/24の最新版)
尚、すごい勢いでバージョンアップするので上記のリンクを使わずに、最新版を確認されて落とされるのがいいと思います。

ということで自分のことはここまで。
ここからはオープンラボ備後の振り返り。


【タイトル】「いまどきのASP.NET」
【発表者名】きよくらさん
【時間】60分
【概要】 ASP.NETが登場して来年で10年。当初と今では随分と進歩しています。
特にここ1~2年でさらに大きく強化され、3つのフレームワークを内包する形に進化
し、間口も広がっています。今回はそんなASP.NETの今の姿をお伝えします。
 最近のASP.NETをキャッチアップされていない方、PHPやRails等のLLな環境
を主にお使いの方、また、これからWebアプリケーション開発を始めたい方にも聞
いていただきたい内容でお送りしたいと思います。


資料をこちらで公開してくれてます!

総括としてはMS系の知識はさすがの一言。
自分は.net系は全く触ったことがなかったけど興味を持ちました。
VBとかで業務系を量産されてる方がWEBはよくわからんけど…って時に.netを使うのはアリだと思います。
下手にphpとか使ってセキュリティホール作ったりするよりは生産性も高く、セキュアなサイトが作れると思います。
デモも交えてすごくわかりやすかったので自分も事前の準備しっかりして素晴らしいプレゼンを出来るように頑張ります←やるやる詐欺
まぁ自分はlinux大好きだから業務で使うことないんだろうな…だって運用系の部分の作りこみはlinuxの方が楽なんだもん(´・ω・`)
兎にも角にもMS系を使ってる人は使わない理由がないと思うので是非。


そして最後はデザイナーの彩さん。


【タイトル】 「シュールな街バルセロナとアート」

【発表者名】彩さん
【発表時間】


【概要】バルセロナの街のあり方とアートについて話したいと思います。


ご本人の許可が出れば資料上げます。
すごくバルセロナが魅力的に見えました!
余生はバルセロナで過ごしたいです(*´ω`*)
つかヨーロッパいいなぁ。
イタリアしか行ったことないけど旅行に行きたいと思いました。
円高の今がチャンスなんだろうけど…


ついでにTwitterのハッシュタグもまとめましたので合わせてどうぞ

第11回 オープンラボ備後

ということですごく充実したオープンラボ備後でした。
次回は11月27日です!
お時間がある人はぜひぜひ参加してみてください♪

2011年9月21日水曜日

Scientific LinuxにyumでpostgreSQLをインストールする

表題の件でちょっと躓いたので備忘録。

で普通にやると以下の通り


 ・最新版のRepositoryを取得
    # export http_proxy="http://172.20.1.100:80/"
    # wget http://yum.pgrpms.org/reporpms/9.1/pgdg-sl-9.1-5.noarch.rpm

・Repositoryのインストール
    # rpm -i pgdg-sl-9.1-5.noarch.rpm

・yumインストール
    # yum install postgresql91 postgresql91-server

SLをMINIMUMで入れるとwgetが入っていないので要注意。
で躓くケースはSLのOSが6.0の場合にyumのところで下記のようにこけると思います。

# yum list | grep postgresql
http://yum.postgresql.org/9.1/redhat/rhel-6.0-i386/repodata/repomd.xml: [Errno 14] HTTP Error 404 : http://yum.postgresql.org/9.1/redhat/rhel-6.0-i386/repodata/repomd.xml
Trying other mirror.
Error: Cannot retrieve repository metadata (repomd.xml) for repository: pgdg91. Please verify its path and try again

とエラーが出るはずです。
これは6.0のRepositoryの参照先のURLが間違ってるため。
rhel-6.0-i386ってフォルダはなくてrhel-6-i386ならある。
http://yum.postgresql.org/9.1/redhat/
でフォルダの一覧が確認できるのでどうぞ。
でyumに拘っておらず、またOSのバージョンが上げたくない人上にRPMでインストールで良い方はこちらのリンク先を辿り、目的のRPMをGETすればインストールが出来るはずです。

でどうしてもyumで自分は入れたかったのでOSのバージョンを上げることで対応しました。
まずはOSのバージョンを確認

# cat /etc/redhat-release

これで6.1でない場合は下記の方法でupdateします。

# yum --releasever=6.1 update sl-release

で再度確認すると

# cat /etc/redhat-release
Scientific Linux release 6.1 (Carbon)

この状態になってるのでこれで再度

# yum install postgresql91 postgresql91-server

すればyumが走りインストール出来ると思います。


ソースからコンパイルの方法も公式で日本語ドキュメントが出てますがやっぱりRH系ならyum出来た方が嬉しいし、簡単ですよね。
postgresをリポジトリから落としてきてyumする方法もSLのOSのマイナーバージョンアップもWEBに情報はあるのですが一緒になってるものが無かったのでまとめてみました。

2011年9月17日土曜日

FWC二周年記念合同懇親会

ブログを更新するまでが懇親会です(キリッ
そして僕は今日も仕事です。
今日が休みの人、昨日二次会まで行っちゃって二日酔いの人、爆発してください。

ということで表題の略して合コン行ってきました。
概要はこちら
異種業界の交流会なので普段は縁がないようなお方といっぱいお話出来ました。
オープンラボの方でもお話をあんまり出来なかった人とお話出来たのは良かったです。
特に女性の方といっぱい話せて楽しかったのは秘密。
でも太ったと言われて心が折れたのも秘密。


てなわけで参加された各種団体をまとめ

FWC-福山Webクリエイターズ
備後地方でのWEB系のデザイナーさんを中心としたコミュニティ。
今回の主催の方々です。
美人さんが多い気がする。
という訳でオープンラボ備後から乗り換えも視野(ぇ
技術的なお話よりもデザイン的な要素の方が強いのでデザインを学んでるけどWEBはちょっとって人はいいのかも。
毎月飲み会やってるそうです。
一回だけご参加させてもらったけどみんな優しくて面白くて楽しかったので初見でも安心。
あとは非営利団体ならWEBサイトを人件費は無料で作ってくれるそうです。



FUKUYAMA BASE WORKSHOP
福山を盛り上げようをスローガンに参加型の面白いワークショップを毎月されてるコミュニティ。
今回の主催者の彩さんはFWCでもあり福山ベースの方でもあるのでこちらも多数の方が参加されてました。
こちらも女性が多くてほっこり(*^ω^*)
そしてこっちも指令により一度参加して荒らしてきたのですがとっても楽しいかったです。
技術的なこととか抜きのアイディアソンなんだけど僕達のようなエンジニアは「頭が固くなりがち」なのでこういった場所で柔軟な発想の刺激を受けることはとても重要だと思います。
あと参加型なので女性と話す機会が多いのも○
他人の発表も色々と勉強になるので気軽に行っても得るものは沢山あると思いますよ♪
俺のお笑い部門の師匠、三宅先生は必見。

府中アンテナ
個人的にはお初のコミュニティ。
府中市を中心に情報発信されてるそうで府中市上下町出身の俺的にはとても興味があります。
フリーペーパーを作ったり色んなイベントに参加したりしてるそうなので機会があれば遊びに行きたいなぁと思案中。
あんまり具体的なお話を聞けなかったのでどっかでゆっくりとお話する期待が持てればいいですね!

福山読書スイッチ
福山の図書館のお勧めをプッシュしてくれるサービス。
開発者の岡崎さんとマネージャー?の高橋さんが来てくれてました。
二人共メインは投資でご飯食べてる人でその話を聞いてとっても勉強になりました。
個人的には投資は色々やってみたくてちょろっと勉強してるのでまたゆっくり教えていただきたいなぁと思いました。
FXとか株でシステムトレードするアプリ作るお(´・ω・`)
あと読書スイッチ自体はとっても良く出来たサービスで自分も利用してます。
本を読まれる方は図書館の活用を是非是非。
読書スイッチの作り方の話は一度オープンラボ備後で聞いたんですけどすっごい面白かったので第二弾もまた聞きたいなぁ(チラチラ

オープンラボ備後
そして最後は我らがオープンラボ備後。
オープンラボ備後のメンバーとして福山大学の先生方や農研機構岡山JAVAユーザ会ミルカの中の人、他にも沢山のエンジニアが参加しました。
自分もOSC広島の実行委員としてご紹介を預かったりしました。
とりあえず皆さんOSCに遊びに来て下さい(切実
僕らエンジニアが発表形式でお話をするコミュニティですので興味がある人は是非。
色んな変態やヲタクが色んな話を面白おかしくするはずです(多分
来月は10月23日にロッツ地下でやるはず。
自分が今回の発表の枠頂いてるんでWEB系のお話します。
ipad2のアプリの話とかに浮気したりOSCのセッションの使い回しは極力避けるように頑張りますw
きよくらさんがMS系のガッツリネタも確定してるんでエンジニアの人はそれだけでも十分価値があるかなと。
てなわけでオープンラボ備後に皆さん是非遊びに来て下さいね~♪



といった感じで各種コミュニティの紹介はこんな感じ。
そのメンバーでちょっとしたゲームをしたり色んなお話を聞かせてもらってあっという間の3時間弱でした。
でゲームで筆記試験したんですけど自分の記憶してる範囲でここで答え合わせ。
呑んでたと行ってもかなり恥ずかしいレベルですわwww

漢字の読み
・云々(うんぬん)
・鯱(しゃち)
・なんか忘れたw
・鳩尾(みぞおち)
漢字の読みは全部出来た。
漢字の書き
・なんか忘れたw
・眩しい
・無邪気
・厄介
漢字は無邪気しか完全には書けなかった。
なんとなくとか一部はわかるんだけど…みたいなのばっかりで漢字力の低下を感じました。
まぁ俺らはエンジニアだからIDEが補完してくれるので読めればいいと思います(言い訳

虫食い算の問題
5×2÷3□4×2=9
みたいな問題で□を埋めなさいってやつ。
呑んだら2桁の掛け算は難しいことが解った。
とりあえず3問とも答えたけど合ってるかわかんないw
特に1問目は自身がない。
 
記述問題
 
1 三文字の県名を答えなさい(なお、漢字で記述しなさい
答えは
・神奈川(漢字が全く出てこなかった
・和歌山(「か」の漢字を可と書いた
・鹿児島(これだけかけたと思う
とりあえず漢字勉強しますwww
これは答え知ってた上に小学校レベルの漢字力なので恥ずかしかったですw
 
2 日本三景を答えなさい
答えは
・松島(知らんがな)
・天橋立(知らんがな)
・宮島(これだけはかけたよ!)
日本三景とか知らんし!
小学校の時に日本三景は海が穏やかな場所が選ばれており、海洋民族として海の怖さを日本人は潜在的にわかっているみたいな話を読んだので日本海じゃないんだろうなぁとは思いました。
覚えたぞ…これで次は最速ガーキャンや!
という筆記試験したりで大盛り上がりでした。
個人的には二次方程式の解とか円周率とか三国志の歴史とかなら力を発揮できたと思いますw
というわけで恥ずかしい学力だったので今後のオープンラボ備後の知力担当は別の人でお願いします(´・ω・`)ショボーン
 
 
てな感じで勉強会の懇親会とは毛色の違う飲み会で楽しかったです。
なんというか結婚式の二次会みたいな感じでした。
そして最後は岡山JAVAユーザ会のzephiransasさんに送っていただいてフィニッシュ。
いやマジでいつもお世話になりっぱなしですみません(;・∀・)
また機会があれば皆さんにお会いして楽しい時間を持てればいいですねっ!
 
 
そして今回の飲み会でそーだい=おっぱいエバンジェリストの定義が一般層にも確立されていることが判明しました。
日々精進したいと思います。

2011年8月14日日曜日

Scrum Night Okayamaからの中国GTUG&オープンラボ岡山

勉強会は家に帰ってブログ更新するまでが勉強会です( ー`дー´)キリッ

というわけでIT系の勉強会とか集まりに参加してきました。
表題にある3件にこの金曜から土曜日にかけて参加しましたので感想記をばっ!

■Scrum Night Okayama
と言う名のただの飲み会でしたw
金曜日の19時からスクラムとかアジャイルに興味がある人の集まりであるすくすくスクラム瀬戸内の人たちで集まって呑みました。
実は自分は19時30分からだと勘違いしていてゲーセンで昇竜拳して遅刻したのは内緒です。
で実際の内容はと言いますとTwitterでは面識のあったけど実際にお会いしたことがなかった人や本当に新しくお会いした方などが居て女の子に囲まれてとても楽しい時間を過ごせました。
そして話の総まとめとしてはTDDBCを来年開催予定ですがそれまでの間に色んなとこで宣伝したりプレ開催的なものを年内でやっていければなと言った感じ。
なので自分が積極的に参加しているオープンラボ備後でもまたワークショップなどを交えてアジャイルな話をしていただければ嬉しいと思いました。

それと蛇足ですがきよくらさんが「ITクラスタによる格ゲー会をしたい」と熱望されておりました。
個人的には開催希望です!

でこの後は、ゼフィさんこと@zephiransasさんのお宅で二人で呑み明かしました。

■中国GTUG
3時まで呑んで7時半にちゃんと起きた俺を自分自身で褒めたいと思いましたw
二人して体調不良を訴えてましたが9時から始まるのでredbullを注入していざ会場へ。
自分は午前中だけの予定でしたので全くネタを考えてなかったのですが@zephiransasさんのネタに乗っかろうと思ってると気がつけばJSで作られたブラウザゲームで遊んでるだけになっちゃいましたw
だけど周りはゴリゴリコーディングやっててこれはちょっと気まずいので真面目にhtml5を調べてみることに。
html5とJSを使うと位置情報が簡単にとれるってのは本読んで知ってたので前回のブログで位置情報からの距離計算も生かせるしそれを使ってみることに。
参考にしたのはこちらのサイト。

デモ

で仕様については英語だけどW3Cのドキュメントをどうぞ。
で結論から言うと位置情報の取得は超簡単。
このデモのソースを丸々コピペしてローカルで動かしても動きます!!
自分はハッカソンにWindowsで挑んだのでXAMP使って再現したんだけどガンガン動きました。
ただChromeだとうまく取得出来なかったり、位置情報が自分の場所ではありえない場所を拾ってきたりすることもあるらしく実際にサービスとして開発するにはまだまだ仕様を煮詰める必要がありそうです。
興味がある人はデモのソースを読んで試してみるのがオススメです。
本当に簡単にできるので面白いですよ♪
と言うわけでデモから落としてきたら素直に動いたので自分はあとサーバ作ってましたw
ただやはり時間が足りない&PCの充電器を忘れて色んな意味で終了しましたwww
まとめとしては
  1. htmlの可能性はすごいけどしっかり仕様を理解する必要がある
  2. 今まで難しかったことが簡単にできるのは間違いない
の二点ですね。
午後からもハッカソンして発表も見たかったけど午後からはオープンラボ岡山に参加予定だったので後ろ髪引かれながら会場をあとにしました。

オープンラボ岡山
中国GTUGから会場が離れてたので少し遅刻してしまいましたが参加してきました。
項目は上記のラボのページの通りです。
ではセッション毎に感想を。

【タイトル】G1GC(Java SE 7のガベージコレクション)へ伸びていた「いばらの道」 【発表者名】中村さん(「ガベージコレクションのアルゴリズムと実装」の著者) 

最初の話を遅刻のため聞けず・・・rubyのコミッターの話なんて聞くチャンスがなかなかないので(´・ω・`)ってなりましたが中村さんは心優しく資料をうpしてくれてますので来てない人もどうぞ

で内容として特に感じるものがあったのは考えることをやめる=思考停止=プログラマーが死ぬとき。
自分も常々向上心を持たない人間についてdisってるけどこれは誰もがそうなる可能性を秘めてるよ!っていう問題提起とそれに対する自分が乗り越えた経験則からの対策が書かれていてなるほどって思いした。
こんな話をされてとても興味深い上に自分と同じ年でrubyのGCを作っちゃうような人なので是非とも懇親会でお話したかったのですがこの日は帰られしまいました(´・ω・`)

【タイトル】   MySQLの未来はどっちだ   - MySQL 5.6, MySQL Custer 7.2, MySQLでNoSQL
【発表者名】   日本オラクル   MySQL Sales Consulting Manager, Asia Pacific & Japan   梶山隆輔さん
最初はMySQLとかいってdisってやんよ!って思ってましたが最終的にはなるほど!って納得行く内容でした。
みんなsunが買収されて一番の関心はJAVAよりもmysqlだったと思うのですよ。
JAVAは無くならないけどmysqlはこのままフィードアウトしていくんじゃないかと。
だけどmysqlはシンプルで高速なDBってスタンスをWEBで生かしていくようです。
実際のWEBサービスも多くはMySQLですしそれで問題ありません。
現在の流行りである分散化KVSに対してのアプローチの話なんかも興味深く、今後のmysqlはWEBでの地位をより確固たるものにしていく気がしました。
逆にOracleDB自体は業務系の信頼性が必要な場面で生きて行くのだと思います。
そういう意味ではOracleDBとJAVAって組み合わせで業務系を作っていくのがひとつの完成形なのだと思います。
それに対してmysqlはWEB特化。
OracleDBが重厚すぎて手が出せない部分をmysqlが担っていくことで会社としての棲み分けが行える。
そして今後の期待できる部分はmysqlのエンジニアを大募集している点。
mysqlは企業が育てるOSSなので企業依存の部分が多々ある。
そこがOracleになったことで本気になった。
オープンソースの扱いは下手でもDBに関しては超一流のOracleがmysqlをOSSとして育てていくなら面白いソフトにならないわけがない。
実際にオプティマイザをOracleDBのエンジニアがチューニングしてたりするらしく5.6はとても楽しみです。
ついでにPostgresは業務系のOSSなどの万能DBのポジションになるんじゃないかな。
社内アプリとかで本番環境とlog集計がひとつのDBでやるときはPostgres。
つまり地方の中小企業こそOracleじゃなくてPostgres。
今後は3つのDBがそれぞれで棲み分けていくのかなと思います。


【タイトル】CodeIgniter入門
【発表者名】shoさん
phpのフレームワークのお話でした。
個人的にはValidationもMVCの仕組みも魅力的には映らなかった・・・
単発のアプリケーションならいいんだけどWEBサイトとしての運用を視野にいれるとちょっと運用に無理があるんじゃないかなぁと思った。
俺理論的には開発のためのフレームワークを使うくらいならCMSまで昇華させるべき。
単発のWEBアプリを作るなら必要最低のライブラリをあとから追加してスクラッチするのと大差ない気がした。
なのでWEBサイトはmagic3が最強。
その他サービスは現場はスクラッチでMVCで作る感じですかね。
ただ日本ユーザ会が活発で翻訳などが充実してるのはかなり高評価。
やっぱ日本語ドキュメントの有無が大事です(キリッ

【タイトル】「チャットワーク」でらくらく勉強会運営   ~「チャットワーク」インフラ担当者が裏側も紹介しちゃうよ!~
【発表者名】藤原さん
Amazonのクラウド環境とGAEを利用されたWEBサービスのお話。
無料枠でもすごく便利そうなツールなので今度DUELの打ち合わせとかで使ってみたいです。
そしてそれ以上に面白かったのはEC2とか使った運用の話。
なるほどって思う工夫とやっぱりかっていう苦労の両面が聞けてよかったです。
今までは仕事として使うのは不安だったけど要件次第ならどんどん活用していくべきかなと思った。
今後は本当のインフラエンジニアはクラウド先のインフラで生きるかデータセンターで生きるかみたいな感じになっていくのかも。
俺も会社の自社サーバは減らしたいしレンタルサーバだけじゃなくてGAEやEC2をもっと勉強しよう。


以上が感想記でした。
とっても充実してていつも以上に興味深かったOLOJPでした。


そして懇親会は中国GTUGとオープンラボ岡山の合同懇親会(略して合コン
いっぱい変態がGoogleTVに群がったり色んな人と面識が広がって充実してました。
そして一番の関心はやはりそーだいのOracle転職計画化w
Oracleレンジャーの漆黒のオプティマイザ!オラブラックとしてすっごく行きたい。
でも外資系だから当然英語は必要だし実力も必要。
行きたい行きたいって言っても採用試験に耐えれるレベルかというと自分としては疑問符がつくレベルなので要努力してからにしたいと思いますw
とりあえずmysqlを久しぶりに触ってみるかな(Postgresからの浮気フラグ

というわけでこの二日間、関係者のみなさん本当にお世話になりました。
とても楽しかったです!
次は9月はオープンラボ備後かな?
そのあとはOSC広島がありますので是非是非皆さん、ご参加してください!
それでは綺麗に?まとまったのでこのへんで。
ではではノシ

2011年8月11日木曜日

postgresqlを使った位置情報の計算について

仕事のヤル気がないのでブログ更新。
ちょっと休憩でブログ更新。

ちょうど今、仕事で緯度経度から位置情報の計算するプログラミングするのに基礎的な部分が気になったので数学を勉強しました。
元々「なんで?どうして?がおがおぶー!」(もうこの番組なくなっちゃいましたが)って感じで気になることはとことんやりたい人間なので位置情報はこの公式で出るんよ。ってWEBの情報で出てくると理由を調べたくなったのが理由です。
まぁ公式的にはこちらのサイト とかに書いてありますので興味がある人はどうぞ。
ついでに自分は正確性が求められるサービスでは無かったのでpostgresqlの機能とSQLで実現しました。
ソース的にはこちら

SELECT sqrt(power((対象緯度 - 自分の緯度) * 111, 2) + power((対象経度 - 自分の経度) * 91, 2)) AS distance
こんな感じ。
111と91は緯度経度の一度あたりの距離の近似値です。
詳しくはこちらのサイトが参考になります。
でテーブルに位置情報をもたせているならば
SELECT sqrt(power((hoge.lat - 33.333333) * 111, 2) + power((hoge.lon - 133.333333) * 91, 2)) AS distance FROM hoge 
ってするとhogeの中の位置情報を持った対象と自分との距離の一覧が出てくる感じです。
同じように位置情報で円を書いて絞り込みのwhere句を書くと
circle(point(対象経度 * 91.0, 対象緯度 * 111.0), 0) @ circle(point(自分の経度 * 91.0, 自分の緯度 * 111.0), 求めたい円の半径)
となります。
これをwhere句で差し込んだ例が
SELECT
  sqrt(power((hoge.lat - 33.333333) * 111, 2) + power((hoge.lon - 133.333333) * 91, 2)) AS distance
FROM hoge 
WHERE 
  circle(point(hoge.lon * 91.0, hoge.lat * 111.0), 0) @ circle(point(133.333333 * 91.0, 33.333333 * 111.0)
となります。
自分は緯度経度のカラムはNumber型にしてINDEXを貼っております。
これではベンチマークの結果、誤差がそれなりに出るようです。
そこをPostGISというライブラリがカバーしてくれるそうなので詳細なデータが必要な人は使ってみてください。
農研機構が使ってるらしいですよ(宣伝
ただPostGIS使ったりするとINDEXを有効利用してくれなかったりするらしいのでそこらへんの速度的な問題を解決してくれる人探してますw

####8/31追記 ここから####
INDEXについてツッコミをして頂きました。
アウトプットするとこうやってご指摘していただけるのでやっぱりアウトプットは大事ですね。
長方形の検索なら空間INDEXが有効なようです。
円は無理なのかな?
PostGISについてはもっと詳しく調べてみる必要がありますね。
####8/31追記 ここまで####


というわけでまとめ

モバイルWEBサービスなどで位置情報の連携を含めたサービスなどを作るときにコーディングの手間と集計を考えるとPostgresに位置情報を入れてDBで計算させるのがソースの可読性や運用面も踏まえてお手軽でいいのかなと思います。
クライアントさんに「ちょっとうちの会社から周囲〇〇メートルのお店のリストを表示させたいんだけど」的なこともSQLで実装できるので表示側はJAVAだろうがPHPだろうがRubyだろうが慣れた言語ですぐ実装出来ると思うのでみなさんの参考になれば幸いです。


さていい暇つぶしになった備忘録も書いたし盆休みに向けてラストスパートしたいと思います。
それではノシ

2011年7月18日月曜日

第10回 オープンラボ備後

技術者はドキュメントを残すべきって言葉に感銘を受けてから早数年。
何度も技術系のブログを立ち上げようと考えながらもやってなかったので本日からスタート!
べっ別になでしこジャパン待ちだから思い付きで作ったわけじゃないんだからねっ!



と言う事で最初のエントリーは本日あった、オープンラボ備後の感想。

まずは色んな場所で毎回やってるのですが今回の会場について
場所はここだったのですが何かとおすすめだったので簡単に。

◯ 場所
・ 福山市西男女共同参画センター
住所 広島県福山市西町1丁目1−1 ロッツ 地下2階
連絡先 084-991-5011

◯ おすすめポイント
1 交通のアクセスが便利
山陽本線である福山駅から徒歩5分。
また有料だけど駐車場も完備。
2 会場のサイズがケースに合わせて選択できる
規模に合わせて会場のサイズが選べる(合わせて価格も変わるけど)
大きい部屋からはプロジェクターも自動的についてくるようです。
プロジェクターが持参できるなら地方レベルの勉強会なら一番小さい部屋でも問題ないかな。
ハッカソンや勉強会として使うには十分だと思います。
3 賃貸料が安い
参考価格としてプロジェクター無しの一番小さい部屋なら冷房費等込みで1000円を切ります。
手続きも比較的簡単で市の公共の施設なので勉強会等で使うのは問題ないようです。
4 同じ建物で懇親会ができる
大きなデパートの地下なので上の階では食事ところが満載です。
今の時期だと屋上でビアガーデンをやってるのでそのまま直行できました。

と今まで活用してなかったのが不思議なくらいの場所でした。
ただ懸念材料もあって

◯ 不安なポイント
1 ネットワーク系が不安
地下であるためにwimaxが入らないようです。
ただ携帯電話はSBでもちゃんと入るようなのでデザったりはできると思います。
会場では持参のPCでネットをされてる方が多くいたのでdocomoのモバイルルータなどは安定してつながるのかもしれません

◯ 予約は必須
当然といえば当然なのですがいきなりの予約は難しいです。
せめて一ヶ月前が無難だとは思いますが、大きな連休時等はやはり人気で取りにくくなるようです。

こんなところですが運用方法次第で回避は問題なくできると思います。
自分もWEB系の勉強会を行って行きたいと考えてるので開催場所として候補に入れたいと思います。


で肝心な勉強会ですが
#olbjp
でツイートされてる内容をまとめました。
これを見ればどんだけユルイ感じなのかは理解していただけるかと思いますw
実際の内容としてはscalaの発表をされた@razonさんのブログに一部まとめてあります。
寺元さんが発表されたFinds.jpは直接サイトを見てみるのがいいと思います。
農研機構はいろいろなサービスを展開されていて興味深いものがありました。
特にサービスの活用法としての一例として紹介された「過去の地図データを利用して液状化現象の原因を特定する例」はなるほど!と関心しました。
そしてGlassfishの発表をされた@zephiransasさんはこういった勉強会で発表されるのが初めてとのことでしたが、動画を交えた発表がとても分かりやすく、いつもネタLTなどで笑いをとるだけで全く知的財産として価値の薄い発表しかしない自分には胸が痛いレベルでした。
しかもしっかり動画をYouTubeに上げて、構築メモはブログに上げてる丁寧さは自分も見習いたいと思います。
と以上の三名による発表会でしたが大変盛況で有意義な時間を過ごすことができました。
で懇親会では方眼紙をdisったりSQLのわからないORマッパー使いをdisたり会社の上司をdisたりしたとかしなかったとか。

とそんなオープンラボ備後ですが来月は諸事情により開催されません。
少し寂しいですが余ったリソースで別の勉強会に自分は足を運んでみようと思います。
次回開催は9月になりますが次もみなさんに会場で会えることを楽しみにしております。