スキップしてメイン コンテンツに移動

Developers Summit 2009 (デブサミ)に行ってきた

今日Developers Summit 2009に行ってきたので、自分が見聞きしてきた講演での内容を、簡単にまとめみる。


モダンPerlプログラミング


Perlは主にウェブ系のプログラミング言語とか簡単なバッチ処理系のときに使う言語というイメージがあるけど、実はテストツールとしても十分優れているし、テストに使える道具は一通りそろってるから便利なんだよというお話。

[テストフレームワークが言語として実装されている]
Makefile.PL makeでテストする際のテスト方法を定義。
make makeコマンドでMakefile.PLに基づくテスト実行準備をする
make test テストの実行

[TAP(Test Anything Protcol)]
→テキストベースのテストプロトコル
→テキストベースなのでPerlに限らず、多言語で対応している。

[Webアプリのテスト]
Apache::Testを使うと便利!
→テスト環境で、Apacheの設定ファイルを変更したいなどとき、他の人がテストを行っていると、それが終わるまで待たなければならない。
→Apache::Testを使うと、Apacheの起動~テスト実行~Apacheの停止までを自動で行ってくれる。
→他の人がテストを行っていたとしても、それぞれ毎にApacheを立ち上げるため、設定ファイルも実行されるポートも全て個別に自動で割り当てて行われる。そのため複数人開発の環境でテストしていてもそれぞれバッティングすることはない。


ひよこクラブ ver.Engineer


主に講演者の経験による学習方法と情報の共有について。
Java、JavaScript、PHP、PerlのそれぞれのWeb系言語を得意とする人たちが、
それぞれの日々の学び方について紹介してくれていました。

4人が共通して言っていたことは、INPUTとOUTPUTをやっていこうということ。
分からないことはググるなり本なり調べるというのも大事だけど、やったことを、自分がいま探してきたインターネットの海へ投げ込んでみるのも良いよということ。
ブログなり掲示板なりWebページでも何でも良いけど、やったこと(覚えたこと)について書いてみる。
それが中途半端な状態であっても分からなくても良い。間違っていても構わないし恥ずかしくもない。
これが後にあとから検索して読んだ人の役にも立つし、自分の履歴にも成果にもなるということ。
あと、にぽたん曰く「ググって情報が出てこない!ならば俺がその情報を出るようにしてやる」ということ。

今回発表した人たちも「output」を実践してきた人たちで、それによって今回このような形で大勢の前で発表しているのだということ。
みんなも間違いも正解も、失敗を恐れず「知」を共有していけば、こうやって発表したりする機会があるかもということ。
むしろ、新しい人たちがこうやってどんどん発表しあって、どんどん技術コミュニティを発展させていけたら良いよね!ということ。

ブログ持ってる割には、今まで書くことすら面倒臭がって書く回数もかなり少なかったけど、もうちょい活用していってみようかなと改めて思った。
なので、これからさっそく実践していこう。

コメント

このブログの人気の投稿

iPhone7はApple Payでゲーム系ICカードとしても使えるか?

先日発売されたiPhone7をはじめiPhone6以降の機種で、日本でもようやく、Apple Payが使えるようになりました。
iPhone7は長年ユーザーが待ち望んできた防水対応もさることながら、日本向けiPhone7/7 Plusでは、NFCだけでなくFeliCaを搭載し、Apple PayではJR東日本のモバイルSuicaやEdyが使える、というのが今回の注目にもなりました。
Apple Payが始まることで、こちらも日本のユーザーが待ち望んでいたモバイルSuicaをはじめとする、国内の様々な場所で使われている非接触IC系サービスの恩恵を受けられるようになります。



ということは、非接触系ICカードを利用している場所の一つである、ゲームセンター。ここにある数々のゲーム筐体、最近では非接触ICカードリーダーが備え付けられていて、独自の電子マネー機能を持ち合わせたり、カード情報を読み取ってプレイヤーのプレイデータを読み込むのに使用されたりしています。これらは果たしてiPhone7でも使えるのか…。
検証
まず、現在国内で主流の非接触IC系ゲームプレイカード(以下、プレイカード)は下記の種類があります。

e-AMUSEMENT PASS (コナミ)
Aime (セガ)
バナパスポート (バンダイナムコ)
NESiCA (タイトー)
※これ以外にもあるかもしれませんが、自分が主に音ゲーを好んでやるため、音ゲー機種が出ているサービスのみを対象にしています。

これらのサービスに対応する機種でiPhone7のApple Payが使えるか検証してみます。

さくらのクラウドでマストドンのインスタンスをサブドメインで作る

タイトルに「の」と「で」が多すぎますが気にせずいきますこんばんは。

さくらのクラウドで、いま話題のMastodon(マストドン)のインスタンスを作成してみました。
Mastodonは普通にソースを展開して自分で普通にセットアップする方法や、Docker-composeを用いた方法などがありますが、さくらのクラウドでは、スタートアップスクリプトを用いて、管理画面から必要な項目を入力、スクリプトを選択するだけで簡単に立ち上げることができるようになっています。

さくらのクラウドのMastodonスタートアップスクリプト 実は少し前にこの方法で立ち上げたりもしていたのですが、本当に簡単でサクサクできてもの自体は30分程度で完了します。
管理者ユーザーを作成するには、通常のユーザー登録と同じ手順で画面からユーザーを作成後、一度コンソールからログインして、mastodonユーザーで下記のコマンドを実行する必要があります。

# su - mastodon % cd ~/live % bundle install % RAILS_ENV=production bundle exec rails mastodon:confirm_email USER_EMAIL=登録時のメールアドレス % RAILS_ENV=production bundle exec rails mastodon:make_admin USERNAME=作成したユーザーID mastodon:confirm_email でメール受信確認をスキップして承認済みに、mastodon:make_admin で指定したユーザーを管理者に設定します。

これでインスタンス管理者として様々な操作をGUI上から行えます。

同類の記事は恐らく既にたくさんあるので、詳しい作り方に関してはそちらを参考にしてください。

気になるところが 上記のさくらのクラウドニュース内で記載されているMastodonスタートアップスクリプトでの構築方法に関する記事内で、一つ気になるところがありました。
それが
※サブドメイン(例:mstdn.example.com)には対応していません。 という記述部分です。

つまり、このスタートアップスクリプトを利用した場合、サービス専用のドメインを用意する必要があります。
既存のドメインをなるべく利用したい場合には向…

PHPで相対パスから絶対URL(URI)を作成する

HTMLページをパースしてURLを取り出す処理を書いていたのですが、ページ内のリンクなどが全部絶対URLで記述されていれば非常に楽なのですが、現実としてそうでもなく、ページによっては相対パスで書かれていたりして、正規表現で偏にリンクからURLを抜き出すだけではうまくできませんでした。

そこで少しググってみたら

PHPで相対パスから絶対URL(URI)を作成する|PHPプログラムメモ|プログラムメモ

という記事を発見!おぉ、これは便利!
と思って使わせてもらおうと思ったのですが、いくつかテストしてみて、相対パス処理で不備があるなーと思ったところがあったのでちょっと改良させてもらいました。

37~38行目は正直いらない気がしたのですが、 PHP 5.3 のCLIでWindows上でテストした際に、なぜか \/ (アルファベットのVではなく、\/ ) で出力されたのが気になったので、無駄かもしれないけどあえて記述。
あと $parse の初期化もここまでする必要ないけど、念のためNotice対策を…w

相対パスから絶対URLする関数

< ?php
/**
* 相対パスから絶対URLを返します
*
* @param string $base ベースURL(絶対URL)
* @param string $relational_path 相対パス
* @return string 相対パスの絶対URL
* @link http://blog.anoncom.net/2010/01/08/295.html
* @link http://logic.stepserver.jp/data/archives/501.html
*/
function createUri( $base = '', $relational_path = '' ) {

$parse = array (
'scheme' => null,
'user' => null,
'pass' => null,
'host' => null,
'port' => null,
'path' => null,
'query' => …