2012年7月20日金曜日

変態アドベントカレンダー in Summer : ATNDの7日目

この記事は変態アドベントカレンダー in Summer : ATNDの7日目です。

昨日の記事はdproject21さんの

たった一人で数万ステップを扱う変態プロジェクトを支えた技術

でした。
私は数万行もソースを読み書きとか経験ありませんので勉強になりました。
また他の方たちのように変態的なプログラミングスキルはありません。
ですので今日は最近一番勉強してるPostgreSQLの話書きます。

PostgreSQLと言えば高機能・高可用性から多くの実績があります。
コミュニティも活発でソフトウェアのバージョンアップも早く、また日本語ドキュメントも豊富。
(ここまで宣伝)

そんなPostgreSQLですが先日お邪魔した勉強会でこんな場面がありました。



という大変素晴らしい状況になった理由は
ursmさんの素晴らしい発表のおかげ(発表資料)です。
というわけで今日はPostgreSQLの変態的な素晴らしいところを少しだけお伝えしようと思います。

■データ型
ursmさんは配列型を取り上げており、素晴らしい反響でした。
参考までにデータ型の最新のドキュメントはこちら
ぱっと見ても色々データ型がありますね。
その中でも変態的なのは

・ 論理値データ型
・ 幾何データ型
・ ネットワークアドレスデータ型


あたりでしょうか。
というか複合型とか類似データ型とか変態的過ぎて私も勉強不足です(*´ω`*)
例えば幾何データ型を使うと位置情報の計算もスムーズ?に実装できます。
実際に私も使ったことがありますので参考までにどうぞ
データ型に関しては使い方次第で凄く便利になるので是非。

■参照系
ursmさんは中間参照→LIKE '%hoge%'でもINDEXが有効になるpg_trgmのお話でした。
全文検索については9.1以降でも強化されており、ぜひ一度こちらのドキュメントを一読ください!!
そして私がオススメする参照はSQLのウインドウ関数
MySQLを普段使ってる人はあまり馴染みがないかもしれません。
実際の使い方はこちらがわかりやすいですね。
要は行を集約せずに比較することができます。
例えば県別に並べたお店のデータを人気順に並べたい。
こういった場合は県でPARTITION BYして人気データのカラムでソートしてやれば出ます。
これは大変便利です。

以上のとおり、触りの部分ばかりでしたが機会があれば是非PostgreSQLを使ってみてください。
他にもPL/SQLであったり、レプリケーションであったりと取り上げたいところは多々あります。
ですが今日のところは仕事中なのでこのへんで。
明日はtanago238さんです。
どんな変態的な内容なのか楽しみですね!!
それでは引続き変態アドベントカレンダー in Summer : ATNDをお楽しみください。

2012年7月5日木曜日

ssh経由でデータベースに繋ぐ方法

お客さんの鯖にsshでログインしてターミナルでDBを触ってるサバンナの住人の方へ。
実際のところよくある風景だと思います。
自分もコレがかなり煩わしく、phpMyAdminすら入れれない状況でした。
そんな状況を解決する方法はsshトンネル。

Mysqlでは

A5:SQL Mk-2 から SSHトンネルを利用して MySQL へ接続する


こんな感じでSSHクライアントを使ってローカルのSQLクライアントを利用することができます。
LinuxやMacはいいけど問題はWindowsにsshクライアントが標準でついていないこと。
ここではcygwinを例にしてますがcygwinを入れるのはちょっと…って人向けに代替案。

1 Git shell
GitHubを使って居る方でGitHub for Windowsをインストールしてる人はついてきてるはず。
これはcygwinと一緒でsshクライアントがついてくるのでこちらを使ってコマンドを叩けます。
具体的には起動させて以下のコマンドを叩きます。

ssh -N -L 3307:127.0.0.1:3306 ログインするユーザ名@ログインするサーバ -i 鍵

な感じ。
鍵を使っていない場合は -i から後ろはいりません。
A5を使ってる方は後はリンクの通り、接続情報を入力すればつながります。
私はこの方法で繋いでいます。
Githubがまた一歩好きになりました(関係ない)
ついでにLinuxやMacの人はターミナル立ち上げて同じコマンドを叩けばいけます。

2 PuTTY
Windowsのsshクライアントとしてはメジャーなクライアントかと。
こちらはメールをssh経由で使う方法ですがトンネルの作り方は参考にどうぞ。
GUIで出来き、分かりやすいのでオススメです。

3 Tera Term
Tera Termもメジャーなsshクライアントですね。
ここで紹介する例はリモートデスクトップ用のトンネルの作り方ですが参考にどうぞ。

 
基本的にsshでトンネルさえ作ればローカルにつなげるのと同様にサーバに接続できるようです。
データベースに繋ぐ時は

・ データベースに実際につないでいるのは接続先のユーザ
・ SQLクライアントからはlocalhostにつないでいるように見える

と言う点に注意です。
具体的にトンネル時にサーバ側に指定するポートですが、defaultは

・ mysql 3306
・ postgreSQL 5432
・ Oracle 1521

です。
自分はsshでトンネルしてA5でPostgresもMysqlも繋いでいます。
他の例ではPostgresにpgAdminで接続できるそうです。



ということで現場で生psqlでSQLを書いてたりして苦労してる方は是非一度お試しください!!

2012年7月3日火曜日

第14回オープンラボ備後

祝2周年ということで今回のオープンラボ備後は合宿でした!
場所は府中アンテナさんに提供して戴いた元呉服屋の雰囲気のある建物。
懸念していた暑さは雨のお陰で和らぎ過ごしやすい一日でした。
ということでその内容。
 

初日

まずはセッション3つ。
その雰囲気はTwitterまとめを御覧ください。

【タイトル】「 OpenStreetMap * はじめました
【発表者名】丸市さん


オープンソースの地図作りのお話。
OSMは福山でも4月に開催され、大変好評でした。
やはり自分のやったことが形になると言うのは嬉しいものです。
特に驚いたのがOSMへのコミットの敷居の低さ。
最近はGPSのデータを収集するデバイスが増えてきたのでエンジニアじゃない人も是非。
天気がいい日に府中とかの散策兼OSMなんかは楽しそうですね♪



【タイトル】「わたしと、Facebook」
【発表者名】戸田さん


エンジニアではない経営者から見たFBの話。
自分の周りはエンジニアばかりなのでこういうuser目線のお話は大変勉強になりました。
またFBの広げ方と言うか楽しみ方の話を聞いて、Google+の失敗点も見えた気がします。
WEBアプリを作る側として、こういった向こう側意見を聞く機会を定期的に持つべきですね。
良い教訓になりました。

 
 
【タイトル】「ふりかえり ワークショップ(仮)」
【発表者名】懸田さん
アジャイルのふりかえりを知るためのワークショップ。
今回は折り紙を使ったワークショップでしたが毎度のことながらこういうのは楽しいですよね。
個人的にはプロトタイプを作る大切さ(技術基盤を早めに確立させること)感じました。
プロジェクトと言うかチームとしての仕事の進め方は自分の大きな課題ですね。
懸田さんとは機会があればエンジニア・経営者としての仕事の取り組み方のお話をしたいです。



と3セッションあっと言う間でした。
またこの後は呉高専の佐々木くんのアーク放電のデモがありました。
目の前で放電とかインパクトスゴすぎ!!
コレはもうOSC広島のオープンラボ備後枠確定ですw
本当に大型新人をgetできたのは収穫です。
岡山に負けず、広島も盛り上げて行きたいですね!!

そしてデモを見た後は日帰りの人はここで終了。
その後は「ドキッ、男だらけの大懇親会!」ってことでお泊り組8名で鍋。
お酒を呑んだりしながらトークは朝4時すぎまで続きました。
(一番白熱したのはお好み焼きについてでしたがw)

そして私が寝てる間にみんなはうるう秒の確認をしたりした二日目。
朝ごはんはカレーを自炊して食べ、やっとここからハッカソン。
それぞれが自分でテーマを決めて午前中はガリガリソースを書きました。
私は前回のエントリーに書いたGithub上にWEBサイトを構築するのとCSSFramework。
無事、このようにGithub上にサイトをつくれました。

オープンセミナー広島@2013予定地 

またCSSFrameworkついてはこちらの資料をどうぞ。

CSSFramework
(適当にclickしたら画面がひらいたりしますw)

他にはKinectを使ったアプリを作ったり、Androidアプリの開発をされてる方もいらっしゃいました。
最後はそれぞれの成果物を発表し、カレーうどんを食べて終了。
終始雨だった天気も最後は晴れて素晴らしい合宿となりました。

最後になりましたが、場所を提供していただいた府中アンテナさん、ありがとうございました。
また主催として多忙な中、準備をしてくれた@lopes_nbさん、ありがとうございました。
そして料理担当のがみさんをはじめ、参加してくださった皆さん、本当にありがとうございました。

次回からは弓本さんから主催がその他に変わるかもしれません。
ですがオープンラボ備後はみんなで育てているコミュニティです。
作りたいこと、試したいこと、みんなに話したいこと、なんでもチャレンジするからラボなのです。
ですので興味がある方、イベントを開催したい方はお気軽にご連絡、ご来場ください。
自分もWEB、RDBと好きなことでオープンラボ備後をどんどん活用して行きたいと思います。

ということでまた2年周期ぐらいで合宿ができたらいいですね!!

2012年7月2日月曜日

GitHubでサイトを公開する方法

先日、オープンラボ備後の合宿でひむひむ(@eielh)に教えて貰ったことをメモ。

やりたいことは

http://hogehoge-test.github.com/

みたいな感じでGithubを使ってWEBサイトを作る方法。
てなわけで簡単なメモ残しときます。

まずはGithubにアカウントと作ります。
なんだよコレ!って人は適当にググってこんな感じのサイトでお勉強してください。
でアカウントを作ったら公開するためのorganizationsってのを作ります。
organizationsは組織というか開発するためのグループみたいなもんだと認識してます。
作り方は









手抜きなのは許してw
するとorganizationsを作る場所になります。




 でcheckが通ったら作成!!
 ボタンは下にスクロールすると出てきます。



ここで知り合いのGithubユーザがいれば管理者として追加できます。
やり方はアカウントを入力してADDを押すだけ。
管理者を追加する必要がない場合は青枠のボタンをポチッとな。


黄色部分が作ったorganization nameになっていればOK
次は青枠を押してRepositoryを作成。



次はRepository nameをつけてcheckが通れば作成!
※Repository nameは○○.github.com.gitと言った感じで
 
.github.com.git

を末尾につけて下さい。
(これがアクセスするときのURLになります)



この画面になれば下準備は終了。






日頃からGit使ってたり、CUIが得意な方はページに書いてあるとおりにするとプッシュできます。
Repositoryと同名のプロジェクトを作ってGitの初期化をします。
NetBeansのGitの使い方は公式を参照するといいです。

1 まずはhtmlファイルを作ってcommit

2 gh-pages というブランチを作成
このブランチを作ることで
http://hogehoge-test.github.com.git
のURLでアクセス出来るようになります。
またこれが表示されるサイトのソースになります

3 リモートリポジトリにmasterとgh-pagesをプッシュ

するとGithubにメールがくると思います。
メールが来たらhttp://リボジトリ名でアクセスして表示すれば成功。
後はcommitとプッシュを繰り返してサイトを作ってみてください。
htmlなら表示できるのでJavaScriptやCSSなど使えます。
例えばTwitterBootstrapを使えば告知サイトなどはすぐ作れる思います。
一度慣れると非常に簡単でDNS等の設定も要らないので

・ すぐ作りたい
・ ソースは見られても良い

と言ったニーズのモノはどんどん活用していくといいと思います。
ドキュメントなんかもみんなで改修できるので公開方法として使うのはいいかもしれませんね。
ということで自分もこれを使ってGitの勉強と言うことでOSHの告知サイトを作ってみようと思います。
一緒に作りたいって人はこちらまでどうぞ

オープンセミナー広島@2013予定地