くだらないWebサービス作った

学校の体験入学があって #upcamp に行きたかったけど行けなかったので、おうちハッカソンしてました。
そのときは Chrome 拡張作ってたんですけど、なんか Unstable な API を叩いてたせいかうまく動きませんでした。(nash716/Process-Killer · GitHub
そこで、方向転換して Web サービス作り始めました。
作り始めたときはとっくに #upcamp 終わってて、若干アレ臭漂ってましたが4時間ほどで作りました。

あれは私のベンツですけど。

node + MongoDB で動いてます。ホスティングは heroku と MongoLab を使いました。
好きなものの消費量をカウントするアプリです。
8割のコードが他のサービスの使い回しなので、バグ怖いです。

是非遊んでみてください。

オラブル(オランジーナ+RedBull)

オランジーナおいしいですよね。
僕の場合、オランジーナを飲むと不思議な力がどこからか湧いてきます。
しかし結局は炭酸飲料。RedBullをはじめとするエナジードリンクには敵いません。

「ああ、オランジーナがエナジードリンクになったらどんなに素晴らしいことだろう!」と24時間365日、寝る間も惜しんで考えていたところ、不意に「RedBullと混ぜれば良いんじゃね…?」と思いつきました。
そして今日、念願の夢が叶いましたので、この場にてご報告させていただきます。

オラブルの作り方

必ず自己責任で行ってください。

準備
  • RedBull (今回は185mlのものを使用しました)
  • オランジーナ
混ぜる

オランジーナとRedBullの比率は、2:3か1:2くらいが良いと思います。RedBull多め。

飲む

オランジーナ生まれの地であるフランスに感謝しつつ、味わって飲みましょう。

片付ける

みなぎってきたところで、片付けをしましょう。
デキる(男|女)になるためには、この作業は必須です。

おわりに

この世には、怖い人たちが作り出したユンブルなるものもありますので、興味のある方はそちらも如何でしょう。
参考:ユンブル by yuzuhara [クックパッド] 簡単おいしいみんなのレシピが125万品
しつこいようですが、オラブル・ユンブルの作成、摂取は自己責任でお願いします。

dotCloud + node + MongoDB

久々に使ったら設定ファイルの書き方ど忘れ&細々とした部分が変わっていたのでメモ。
自分用なので雑です。

アプリケーションの構成は以下の通り。

application
    - server
        - server.js
    - public
        - css とか js とか
    - views
        - ejs とか

1. dotcloud.yml を書く

server:
    type: nodejs
    approot: server
db:
    type: mongodb

タブが入ってると怒られるので、空白に置換した。

2. server/package.json を書く

{
	"name": "myapp",
	"version": "0.1.0",
	"dependencies": {
		"moduleName": "version"
	}
}

バージョンは "*.*.*" の形式じゃないと怒られる。

3. server/supervisord.conf を書く

[program:node]
command = node server.js
directory = /home/dotcloud/current

4. push する

$ pwd
/path/to/application
$ dotcloud create app
$ dotcloud push app .

5. MongoDB のコンフィグを入手する

$ dotcloud info app.db
config:
    ...
    mongodb_password: password
    ...
...
ports:
    ...
    url: mongodb://root:password@host:port
...

6. MongoDB にユーザを作る

$ dotcloud run app.db mongo
# mongo
MongoDB shell version: 2.0.2
connecting to: test
> use admin
switched to db admin
> db.auth('root', 'password');
1
> use myappdata
> db.getSisterDB('admin').auth('root', 'password');
1
> db.addUser('myappdatauser', 'my_password');
1

7. サーバのスクリプトを書き換える

var mongo = require('mongodb');

var server = new mongo.Server('host', port, {}),
    db = new mongo.Db('myappdata', server);
	
db.open(function() { db.authenticate('myappdatauser', 'my_password', function() { }); });

おわり。

おまけ

ログを見る

$ dotcloud logs app.server

ssh

$ dotcloud ssh app.server

このサービスを制限付きとはいえ、タダで提供してくれるのは非常にありがたいですね。

#seccon 行ってきたレポート

19, 20日に開催された、SECCON CTF に参加してきました!

非常に楽しかったです!!
実行委員の方、筑波大学の方、参加者の皆さん、どうもありがとうございました!

以下日記
(CTFに熱中しすぎて、CTF中の記憶が曖昧なので、CTFについての記述は少なめです)

一日目

朝8時頃に家を出ました。
つくばエクスプレス、耳痛くなりますねアレ。
つくば駅周辺、大都会すぎて田舎民にはまぶしかったです。
競技中はひたすら画面とにらめっこしてました。
解けそうで解けないのが非常に悔しかったです。
さらに、ちょうどエアコンの風が出てくるところ付近の席だったようで、半袖半ズボンでCTFに臨んだことを後悔しました。
競技終了後は、交流会でピザとコーラとうまい棒をいただきました。ありがとうございました!

お持ち帰りした問題をみんなで解いていました。
RedBullを飲むと逆に眠くなる怪症状や、突然のアクシデントに見舞われながらも頑張りました。
Webの問題は競技時間中でないと解けないのが痛いですね。

二日目

夜に「こんな感じで行こう」と思っていた方向で問題を解いていたのですが、通りませんでした。
1時間くらい試行錯誤したところで何とか解けました。この問題に10時間くらい使った気がします。
その後いろいろな問題に手を出していたところでCTF終了。
アキバで僕含め6人でラーメン食べて家に帰りました。

まとめ

今回自分はWebの問題を主に解いていたのですが、大きめ(300pt)の問題は1問しか解けず、能力不足を痛感しました。
次回参加するまでにさらに技術磨いておきます!!

結論

大都会つくば

暗号のような何か

Twitterに3回ほど投下したのですが、未だに正解者が居ません。
暗号の定義をよく理解していないのですが、たぶん暗号では無いと思います。
イメージ的には、文字化けした文字列を読めるように処理する感じです。
ちなみにMac以外でちゃんと表示されるかは確認していません。

5rWB55쾎ڟ踆搀

分かったらリプなりコメントなりで教えてもらえるとうれしいです。

ヒント:処理を2回すれば答えが出てきます。

4/25追記:Winでも、表示は豆腐でしたがちゃんと解読できました。

5/2追記ヒント2:行う2つの処理のうちの一つはbase64に関係しています。