2012年6月28日木曜日

wgetでPOSTする&POSTデータの+記号が消える

みなさんLinuxのコマンドであるwgetつかってますか?
簡単に出来ることを並べると

・ 再帰的なダウンロードの自動化
・ ログインが必要なサイト監視
・ xmlやJSONの取得
・ データのPOST

など大活躍。
こちらのページはoptionの一覧を詳しく説明してるので一読の価値あり!

ダウンロードコマンドwgetのオプション一覧(linux)

その多彩な機能のひとつ、「データのPOSTする方法」でちょっとハマったのでメモ。
例えば下記のコマンドを実行するとdataと言うnameでhogehogeをPOSTします。
 
wget --post-data 'data=hogehoge' http://hoge.jp

例えばPHPプログラムだけでPOSTするのは結構な手間ですが利用すると実装が楽になります。
また他にもmailのエイリアスを利用した内容の自動転送とかが容易になります。
(両方セキュリティ上の懸念点はあるので仕様と相談してくださいね!!)
ついでにPOSTだけしたい(サイトのhtmlを取得しない)場合は

--spider

を引数でつけてやるとファイルが無限増殖しません。
で実際の使い方はphpなどでsystem関数などに入れて実際のPOSTデータは変数っての多いと思います。
例えばphpだとこんな感じ。

`wget --spider --post-data 'data=" . $data . "&time=" .$time . "' http://hoge.jp`;

(PHPのバッククォートは shell_exec() と等価です)
POSTの数を増やしたい時は&で繋げば増やせます。
でここで大事なのがbase64などの記号の入った内容をPOSTする場合。
wgetのPOSTは中途半端にエスケープまたはURLencodeをしてるようです。
例えばPOSTの際に+を半角スペースに置き換えてしまいます。
つまり

$data = 'hoge+hoge';

をwgetでPOSTすると受け取り側(例はPHP)は

echo $_POST['data']; //←hoge hoge と出力される

となります。
これにより

・ base64変換したバイナリ
・ mail添付ファイルなのどのmimeの内容

などをPOSTした際にちゃんと復元が出来なくなります。
これの対策としては
POSTする対象のデータを事前にURLencodeしてからコマンドの引数にしてやること。
同じくPHPで$dataの中身がbase64encodeされたデータなどで+があるとすると。

$data = 'hoge+hoge';
$data = urlencode($data);

としてから$dataをコマンドに渡せばOKです。
ということで具体的な事例がググっても出てこなこなかったのでメモとして残して置きます。

2012年6月25日月曜日

PostgreSQLユーザ会の中国支部長になっちゃった&ウサギィに潜入捜査してきた

表題の通り、JPUGの中国支部長になりました。
こんだけ大きなコミュニティの支部長をするというのはとても光栄なことです。
そして就任時のあいさつでお話させていただきましたがPostgreSQLは万能なRDBです。
そして今後はhtml5によって業務・基幹系をWEBアプリとして作成する案件はどんどん増えてくると思います。
そうなった時にはWEBサイトとして相性のいいMysqlに対してPostgreSQLはより多くの長所を持っています。
これは今後、自分がやりたいことの一つの答えですので今後はどんどんPostgreSQLを広げて行きたいとおもいます。
つか総会のあとの懇親会で当たり前だけどみんなPostgreSQLの知識がすごすぎてやばかったw
俺もスピーカーとして堂々と伝えれるようにしっかり勉強せんとイカンですわ。
まずは今度リリースされる9.2の仕様をしっかり勉強しておきます。


そして東京に遊びに来たついでにと今、Twitterでも注目されてるウサギィにお邪魔してきました。
以前からTwitterでウサギィの社長さんをフォローさせて頂いてて、流れるツイートから「すっごい楽しそうに仕事してる会社だなぁ」と感じて興味ありまくりでした。
なので直接の面識ないけどプッぱなしでアポ取ったらすんなりオッケーいただきました。
(こういう懐の深さもすごい)
てなわけで今回の東京遠征の最大の収穫とも言える @usagee_jpさんとの会合!!
まずはウサギィさんの本社を見させて戴いた感想として

・ すっげーおしゃれ!!
(水槽とかあるしインテリアは凝ってるしヤバイ)
・ 20インチオーバーのディスプレイを各人二枚が標準装備
・ 各人に仕事用のデスクトップPCがある(OSはそれぞれ自由)
・ 更に作業者はMBAとか持って作業してるらしい。

「仕事環境は素晴らしいモノを用意する」っていう最大の福利厚生に対する経営者からの明確な答えがそこにあって、
「こんなとこで仕事したい!!」って感じるものでした。
こういう良い環境で仕事をされてるところってのが一見でわかると会社は会社の品質というかプロダクトの品質の良さは想像に難くないですね。
で更にお互いの簡単な紹介を交えながら会社の運営の話を聞いてみた感想として

・ @usagee_jpさんは俺と同じ歳!!!←マジビビった
・ 物作りの考え方に非常に共感を覚えた
・ 一度紙にデザインを簡単に落としこんでしっかりとUIを検討するのは非常にいいと思った
・ 難しい仕事こそやるっていう方向性・ 社員にそれぞれ多くの自由と権利を持たしてる=社員はそれだけ優秀
・ HTMLとCSSが出来るセンスのいいデザイナー募集中らしい
(※ただし可愛い女の子に限る?)
・ この人頭いいわ←俺と頭の作りが違うんじゃないかなw

話題になった会話の代表としては



ていうのがありました。
当たり前なことなんだけど周囲を見渡すとコレが当たり前じゃないってすごい捻じれですよね。
こんな感じで本当に本当多くの刺激をいただきました。
聞けば聞くほど「あーこういう感じの会社を自分も作りたい」っていう未来の自分の目標に対するすごい良い目標を見つけれたと思いました。
今回は前日に飲み過ぎて体調も不良だし、時間も短いものでとっても勿体無いことをしました。
次回はしっかりと時間を調整してしっかりとお話をお聞きしたいと思います。
突然の訪問にもやさしく対応していただき、本当にありがとうございました!!
@usagee_jpさんと機会があれば是非是非、ご一緒に仕事がしたいですね。


というわけで刺激的な週末を過ごせました。
27歳というと同世代でも色々と格差が目立ち始めるころ。
自分もみんなに刺激を与えるような尖った部分を磨いていきたいですね!!

2012年6月11日月曜日

「勉強が何の役に立つのか」について俺的見解

世の中で「勉強が何の役に立つか」と頭がいい人達が本気だして考えたみたい。
読んだエントリーは


「勉強が何の役に立つのか」について本気出して考えてみた

 

勉強が何の役に立つのかを全力で考えた。

 

「こんなこと勉強して何の役に立つの?」と聞かれた時、言葉を尽くせない大人が知性を殺す



と上の3つ。
勉強が何の役に立つの?ってのは誰もが考えたり、そんな議題を聞いたことがあるでしょう。
それぞれ紹介している解は「よそはよそ、ウチはウチ」で返されたり「文句を言わずに勉強しなさい!」って言われたりすることを考えればすごく良い解答だったと思う。
だけどこれって頭の良い(勉強をしてきた)人の解だよなーっと思った次第です。
俺はね、勉強は色んなことの役に立ってるのは間違いないし、そんなことは今の中高生たちの多くはわかってると思う。
多分、今の中高生は「勉強は受験対策でそれ以上はない」って見てしまってるんじゃないかなと。
だから「勉強することで人生が充実する可能性が見出せない」からそういうことを聞いてくるんじゃなかろうか。
また何かを創造すること、世界を成長させていくことは「頭の良い人がやること」で「自分には関係の無い遠いところの話」って思っちゃってるんじゃないかなと。そういう子たちに勉強の必要性を説くのは難しい。
そういう子が仕事に対しても「お金もらえればいい」程度になって、意識低い大人になっちゃう。
少なくとも俺はそうだった。
そんな自分が変われたのは

・ 楽しそうに仕事をする人が勉強熱心だった
・ その人と仕事をすると今までが嘘みたいに楽しかった!
・ その人を真似て勉強し始めたらすっごく楽しかった←いまここ

これだけなんだけどこういう単純なもんなんだと思う。
眼をキラキラさせながら「こういうことしたらこういうことが出来るんだよ!凄くね?マジで凄くね!?」って言えて、一緒に楽しめる大人が少ないんだろうなーと思う。
そんな経験が今の子供達には必要なんだろうなとは思う。
俺も家に帰って娘に「仕事つれー超つれー」って言うことはさすがにないんだけど「パパはこんなこと出来るんだぞー」って目をキラキラさせながら言えるようになりたい。
仕事もそんな人達としたい。

と話が脱線してきたので無理矢理まとめる。
「勉強が何の役に立つか」っていうのは上記の人達が言うとおり色んな所で役に立ってる。
だけどそれがわかったからと言って勉強する意義が見えてこない。
だから言葉の尽くせない大人に当たると向上心がどんどん無くなる。
そんなスパイラルになってるんじゃないだろうかね。

まぁ要は周囲の大人に魅力がないから子供がそんなこと考えるんじゃないかなっ!!

2012年6月5日火曜日

Jquery.ascensor.jsつかったプレゼンと勉強会

オープンラボ備後&岡山JS行ってきた。
とは言っても既に一週間以上達、それぞれの講師の方が資料をあげてくださったり、職人がまとめてくれたりしてるのでそちらを参考に。
(かずさんときよくらさんの資料が見つけれませんでした、ごめんなさい。)


オープンラボ備後

Twitterまとめはこちら

1 playframeworkの紹介 javaWEBフレームワーク 吉田さん

オープンラボ備後でPlayframeworkのこと喋ってきたAdd Star

2 初めてのRails rubyWEBフレームワーク 山本さん

3 次世代JavaScritpUIフレームワーク!?“Knockout.js”を先取りしよう 保住さん

4 phpのFrameworkを選ぶコツ 俺

okayama-js


Twitterまとめはこちら

これの資料とかみんな公開してんのかな?
Twitterのまとめに上がってないヤツの仕入れ先があれば是非教えてください。
(@maeponさんとか知らないのかな?)

ついでに自分はOSH@2012のリベンジってことでこれしてきました。

そしてオープンラボ備後はJquery.ascensor.jsをつかってこれをしてきました。

phpこそ最強なのだ!!

ついでにFirefoxをお使いの方は音が出ません。
逆にChromeとかお使いの人は音が出るのでご注意ください。
で内容としては前者の三人のプレゼンが素晴らしい&当日駆動資料作りだったので内容が薄くてすんません。
伝えたかったことは

・ Rubyみたいな先進的なことは少ないけどRailsのいいとこを取り入れたFrameworkはPHPにもあるんだよ!

ことです。
後は補足としてRubyって開発者のための言語で無いものを楽しく作るのにすごく適した言語だと思うのだけど、phpは成果物を作るための言語だと思うのです。
なので車輪の再開発的な要素をなくすために標準の関数が山ほどあるし、あれもこれもとFrameworkがやるようなことでもPHPでに載せてあったりするわけで。
 なのでスピーディに目的を達成するための言語としてPHPは出来る子なので皆さんも優しく見守ってくれたらいいんじゃないかなw


でこれだけだと大したアウトプットになってないのでプレゼンの資料作りの方法を簡単に説明しておきます。
ブラウザでプレゼンしたい人の参考までに。

1 音楽の出し方
html5で可能になったaudio要素を使ってます。
細かい実装方法はこちらが分かりやすいです。
今まではflashだったりブラウザのプラグインだったりに頼ってたところがたったこれだけで実装出来るのは大変便利ですね。
ただブラウザによって流せる拡張子が違うのでそこが今後の課題かも。

2 タイトルのフォント
CSS3のWEBフォントを使ってます。
やり方としては

<link href='http://hogehoge.com/css?family=hoge' rel='stylesheet' type='text/css'/>
 
とCSSの読み込みと同じようにWEB上のフォントを読み込み

h1 {
    font-family: 'Love Ya Like A Sister', cursive;
    font-size:100pt;
}
とこんな感じでCSSでフォントを指定して上げるだけ。
日本語のWEBフォントもモリサワとかが出してたりするので、
今後はこういうプレゼンとかで大活躍するかもですね。
 
3 Jquery.ascensor.jsの使い方
デモにも書いてありますが
<div class="contenu">で括った範囲が一ページです。
またmyscript.jsというのがconfig的な役割を果たしており、
 
・ AscensorMapでMAPの広さ
・ ContentCoordでMAPのつなぎ方
・ Navigで右下にMAPの表示の有無
 
などなどが設定できます。
#house1の数字で該当のMAPに飛ぶこともできるます。
MAPの広げ方次第ではただのコマ送りじゃない遊び要素のあるページも作れそうです。
後は3ページ当りからクリックすると表示が次々出たりしますが、
これはJQueryのshow()とhide()を使ってます。
限られた時間(1時間ちょっとくらい)でとりあえず書いた感があるので、
自分のソースは汚いですがJQueryを触ったことが無い人の参考になれば幸いです。


とこんな感じですかね。
最近はブラウザでのプレゼンも珍しく無くなって来ましたが、
パワポにはない表現がある+WEBのいい勉強になると思います。
興味が有る人は是非試してみてください。
というわけで今日のところはこのへんで。