- content_for :foo do
%p One
- content_for :foo do
%p Two
%h1 Hello, World!
2回同じ名前で呼んでも大丈夫みたいです。便利ー。
- content_for :foo do
%p One
- content_for :foo do
%p Two
%h1 Hello, World!
2回同じ名前で呼んでも大丈夫みたいです。便利ー。
僕の中で曖昧だったので、ユーザー分類を元にLokkaの開発方針をまとめてみました。
上(人数が多い)、下(人数が少ない)
上(影響が少ない)、下(影響が大きい)
@nkmrshnさんの素晴らしいまとめ。Optionを使ってるコードとかまだ他で見たことないので素敵ですw
作成したLokkaプラグインのまとめ - nkmrshnの日記
- プラグインで使用するgemを、Gemfileと別にプラグイン側で管理する方法。(現状:Lokka本体のGemfileに書くしかない。)
- プラグインで使用するi18nのen/ja.yml。(現状:Lokka保体のen/ja.ymlに追記するしかない。)
- プラグインの読み込む順番。(現状:読み込む順番を設定できない。)
- プラグインの有効・無効。(現状:public/plugin/lokka-<プラグイン名>は全部有効。)
- プラグインのアップロード・削除機能。(現状:ターミナルのコマンドなどでプラグインファイルを追加・削除する必要がある。)
- public/admin/layout.hamlのdiv#aside(左側サイドメニュー)にプラグインのメニュー項目を追加。(現状:layout.hamlに追記するしかない。)
コメント欄に書いたらエラー?が出たのでココに書きます。(以下俺)
おおお、すばらしいまとめありがとうございます!
最後の6点は僕もどう本体を実装すべきか悩んでおります。
という感じです。
やっぱりプラグインを書いてみた人本人でないとわからない点が沢山あるとおもいますので、「こうしたほうがいい」というところがあればお教えいただけると嬉しいです!
何故オライリーの本を買うのか - komagata [p0t]
以前こんな事を書きましたが、これはある種の宗教的イニシエーションやショッキングな体験、感動的な出来事、などといったものと同じく自分の脳の構造の変化を起こすものだと思います。(苦痛と快楽がセットになってるし)
脳を神経系の繋ぎ直しによるプログラマブルなハードウェアだと仮定した場合、ある一定上のショックを受けるとそれに影響を受けた構造の最適化が行われるというようなモデルを想像してしまいます。
20歳で職業プログラマーになってから12年間で上記のような事を繰り返すうちに大分偏った構造になっていて、それを意識した学習方法を選択するのが新しい事を覚えるには特に大事だと最近強く意識しています。
"直近の目的に繋がらない知識は寝ると忘れてしまう"、"3年より昔の事は殆ど忘れてしまう"、"直近の目的に繋がる知識は簡単に覚える事ができる"といったメリットとデメリットを持つ脳ミソに訓練されてしまったように思えてなりません。
デメリットも結構感じていて、例えば僕は小中高と特別幸福でも不幸でもない普通っぽい学生時代を送ったとは思いますが、それにしても学生時代のことを殆ど覚えていません。色々あったはずなのに・・・。
多分、デスマとかを乗り切る為にそういう記憶を犠牲にしてインフラのバッドノウハウとか微妙な関数とかを覚えることに使ってしまってるんでしょう・・・。
色んなタイプがあると思いますが、例えば、大学で物事を体系的に勉強することでその先の確かな成果を幾度も体験して来た人にはキッチリと基礎から学習する方法が習得しやすいだろうし、僕の様に現場から入ってしまった人は、まず目的に必要なものをでっち上げ、後でそれの裏にある背景や理論を勉強すると、
「なるほど〜 だからアレはあーなってたのかー!」
と楽しく学習することができます。順番が逆だと寝れば忘れてしまうので1日しか持ちません・・・。
この脳の構造はちょっと嫌ですが、12年も繰り返し洗脳?されてきた脳を変えるには薬物を使ったり、うつ病の治療に使われる電気ショックとか、生死の境をさ迷う体験とかをしないと駄目っぽそうです・・・。
Parens Language in Scheme on iOS - * *scrap*
同作者のソースコードビュアー”Source Code”は滅茶苦茶便利じゃないですかコレ。
http限定だけどGit, Mercurial, Subversion, zip, ファイル直指定に対応。githubやbitbucketの公開リポジトリにあるソースをサクっとダウンロードして閲覧できます。
リポジトリじゃなくても読みたいテキストをzipに固めてdropboxとかに突っ込んでおけばOK。
糞便利過ぎる!俺が求めてたアプリはこれだ!
長文テキストを読むのが一番楽なデバイスはiPadよりPCよりiPhone(多分Androidも同じ)だと思います。
自分のiPhone時間(=移動中)の中で気になっているフェーズがあります。それは"はてブおもしろ"とかのゴシップを読むフェーズです。俺的iPhone時間優先順位は下記のようになっています。
この4と5を気になるプロジェクトのソースコードを読むことにあてられたらいいのになと常々考えていました。githubをsafariでみてもイマイチ読み辛いし断念していたのですが・・・。
このアプリで解決です!
気になるプロジェクトをgithubからダウンロード。
Sinatra 1.1の変更点押さえとかなきゃなー。
sinatraのように1ファイルが長いプロジェクトに特に向いてますな。sinatra/base.rbで殆どの処理が書いてあるし。
画面に収めたい場合はランドスケープしてピンチイン。
黒背景じゃないと落ち着いてコードが読めない人の為に設定できる。syntax highlightingがあるともっと嬉しいんだけどな。line wrapは別に要らないかな〜?
基本的にGithubにあるものだけでiPhone時間は十分なのでGithub専用でも構わない。syntax highlightingありのアプリでもっと快適Code Readingしてるぜぇという方がいたら教えてください。
それは兎も角、かなりのLife changingアプリでした。
Source Code for iPhone and iPod touch on the iTunes App Store
LokkaにWordPressでいうwp_options的なサイト固有で何でも入れとける場所を作りました。(Lokkaではscript/console的なのは irb -r init.rbで出来ます)
% irb -r init.rb
>> Option.aksmet_key
=> nil
>> Option.aksmet_key = 'hoge'
=> "hoge"
>> Option.aksmet_key
=> "hoge"
>> Option.all
=> [#<Option @name="aksmet_key" @value=<not loaded> @created_at=Sun, 31 Oct 2010 00:01:02 +0900 @updated_at=Sun, 31 Oct 2010 00:01:02 +0900>]
lib/lokka/option.rb from komagata's lokka - GitHub
ソースは上記の通りです。name / valueしか持たないテーブルにmethod_missingでいれているだけです。
上の例の様にプラグインで値を保存したい時に、プラグイン毎にイチイチテーブルを作るまでもないもの(akismetのkeyとか)を保存する場所として用意しました。
% irb -r init.rb
>> @site = Site.first
=> #<Site @id=1 @title="Test Site" @description="description..." @theme="default" @created_at=Sun, 31 Oct 2010 00:06:39 +0900 @updated_at=Sun, 31 Oct 2010 00:06:39 +0900>
>> @site.akismet_key
=> "hoge"
また、Siteクラスのインスタンスから代入以外はOptionにproxyするようにしました。
追記:optionsテーブルが増えたので最新にした方は $ bundle exec rake db:migrate お願いします。
(コイツがバイクみたいで速すぎる)
28日に発売されたカルネージハートエクサをPSPにダウンロード購入して3日目。プレイ時間は18時間。社会人失格だ。
ストーリーの前半、チュートリアル部分はとりあえず模範解答をメニューからペーストできるのでそれを繰り返してるだけでクリア出来る。それまではシミュレーションだが実践に入ると同時にチュートリアルは終了というわけだ。
真面目にチュートリアルをやると一つ一つパズル並にちゃんと正解を見つけないといけないのでかなり大変。でも言うとおりやれば本当に理解できる。俺はメンドイのでカンニング連発で終わらせた。
チュートリアルが終わると「自律型って面倒だなあ・・・」とげっそり。
「操縦型で火力ある車両型でも作って全弾撃ち尽くし外交(@鳥肌実)すればクリアできるだろう」
そんなふうに考えていた時期が俺にもありました。(@バキ)
まず、やってみて感じたのが、操縦型は結構大変ということです。想像以上に敵の移動速度や弾のスピードが速いし、操作も複雑なのでやるとかなり神経を使います。逆に自律型は最初はホントにアホで弱いけど、改良するたびに確実に強くなっていくため、「今回は気を抜いてやられてしまった」ということがありません。何度もリトライするのも自律型なら気軽にできます。
また、「3分間敵を足止めしろ」といったミッションもあるのが新鮮でした。敵を倒すと新しいのが湧いてくるため、なるべく直さないように、弱体化させつつ逃げまわるような動きが求められます。(なるべく弱い武器を使ったり)
というわけで自律型オンリーで進めてきたんですが、既に全ての操縦を人間がやるような操縦型ではまず勝てないような相手ばかりになってきました。
バイクみたいに外周を凄いスピードで回りながら地雷をばら撒くヤツ。ニュータイプ並の動きで後ろに回りこんで格闘してくるホバー型のヤツ。
こんなん操作で捉えきれません。スピードが速すぎて普通に弾打ってもまず当たらない。
恐らく操縦型も基本的には自動で、「全体を見て攻撃すべきターゲットを選ぶ」とか「戦況を判断して遠距離型から近距離型に切り替える」などといったプログラムするには難しいところを補っていく形になるんだと思います。
3機中1機しか操縦出来ませんが、他の2機と通信できるので、全体に指示を出していく監督的なプログラムになっていくのだと思います。そっちはそっちでやりごたえがありそうです。
また,これはある程度予想できたことだが,やはり本作は“操縦型”に軸足を置いている印象だ。それはチュートリアルにも現れており,シナリオモードではまず“操縦型”,つまりプレイヤーがリアルタイムでOKEを操作するタイプの解説が行われる。
とりあえず昨日・今日と遊んだざっくりとした感想。ちなみに俺は初代とZEUSの途中までしかやってないので操作性の進化など「前作からあったよ」という点にもイチイチびっくりしたことは言っておきたい。
まず、チュートリアルが凄まじい。殆ど新しいプログラミング環境を覚えるのと同じ量の学習が必要なこのシリーズはまともにチュートリアルを作るとハンパない量になってしまう。(初代の投げっぱなし振りを見よ)
ところが、ストーリーに「家庭教師にロボットのプログラムを習う」というのが含まれてるのでストーリーを進めながら異常な程親切なチュートリアルが進む。これは見習いたい。ソーシャルアプリはかなり遊びながら覚えられるような作りになっているが、流石にここまで徹底的に超長いチュートリアルを飽きさせず作っている本作にはかなわない。
初代から裏技など、何らかの形でユーザーが直接ロボットを操作する方法が提供されていたが、今作は実にカルネージハートらしい方法でユーザー操作を取り入れている。
プログラミング的に言えば、「キーイベントが取れるようになった」と言えばわかりやすいと思う。(アナログパッドのX軸Y軸の値も取れるなどかなり本格的)
「十字キー右を押すと右に移動する」
という動作を実現するには、
もちろん、上下左右、左右旋回、武装選択、攻撃などが予めよくあるキーに割り振られたプログラムもプリセットで存在する。しかしそれも単に自分でも作れる物の模範解答でしかなく、それを元に細かくカスタマイズをすることができる。
チュートリアルで関心したのが、まず上記のような"操縦型"のプログラミングを習い、プログラミングに慣れ、課題で敵を倒す爽快感を味合わせた上で、「じゃあ今度は今やったのを全自動で処理するロボットを作ってみましょう」という流れになるところだ。
例えば、敵と自機の間に障害物がある場合、操縦型なら単に目視して回りこめばいいだけだが、自律型の場合は"敵の追跡"と"障害物の回避"という部分を完全自動化する必要がある。
しかも面白いのが、基本的にロボットは3対3で戦うのだが、プレイヤーは一人しかいないのだからもちろん操縦型は1機しか操縦することができない。残りの2機は必ず自律型をプログラミングする必要があるというところだ。
操縦型もカルネージハートは可能な操作があまりに多いので(武装が5種類、オプションが3種類、移動方法も通常移動、旋回、緊急移動にジャンプ。更に機体ごとの特殊動作が2種類などある)人間の操作で全てをコントロールするのはウメハラじゃないと無理がある。そこで「◯ボタンを押したら、前方90度の範囲で一番近い的に武装1を4発発射する」などマクロの様に操作を補う形でプログラムすることができる。まだやったことは無いが、後ろ方向の50m以内に格闘体制に入っている敵がいたら全ての処理を中段して自動的に前にジャンプするなどといったプログラムも可能だろう。
また、初代ではやはりある程度後半で手に入る機体や武装の方が強いという感じだったのが最新作では機体だけでも37種類もあるのに、それぞれが一長一短(オールラウンダーもそれ固有の弱点がある)で、スペックだけでは分からない使い勝手などもあり、面白い。
まだプログラマーになってもいなかった初代発売時(1995年)と比べると確かに、「無制限の環境でプログラミングしたい」と思わないでもないが、制限があるからこその固有の面白さがある。
PSPがあれば簡単にダウンロード購入できるのでプログラマーの人もそうでない人も是非やってみて欲しいと思う。
Publickeyにスポンサー広告の依頼があったそうです。別に僕は知り合いでも何でもないんですが、好きなサイトだったので何か嬉しい・・・と思ったら、
感謝! Publickeyに初めてスポンサー広告が入りました - Publickey
しかし今年の夏、7月にはサイバーエージェント様から、イベントの集客のためにと広告の依頼があり、そのときに初めて2週間のバナー広告とタイアップ記事広告を掲載させていただきました。
サイバーエージェントのStartups2010が初めてのバナー広告だったのか。これはびっくり。何故ならPublickeyにStartups2010の広告が載ったのは一部、僕のせいであるかもしれないからです。
今年の7月中旬頃、スペイシーズで@ebiharahideyukiさんが、
@ebiharahideyuki「来月頭のイベント、かなり大きい会場借りちゃったのに申し込みまだ全然少ないですよ。ヤバイっすよ。」
@ebiharahideyuki「広告とか出したいんですが、エンジニアの人達って普段どういうサイトを見てるんですか?」
僕と@dandasoはそれぞれ「Publickey」「Agile Cat」をオススメしておきました。
僕「Agile Catって何?」
@dandaso「Hadoopとかのブログでよく見てます。」
僕「(手元で検索して)、へーって、ちょwww、この猫wwww、これがAgile Cat?www 適当に自分ちの猫とってGIMPで切り抜いたんじゃないの?www」
(これをきっかけに購読するようになりました。3ヶ月前までは存在も知らなかったなんて今では考えられません・・・)
@ebiharahideyuki「へー、こういうサイトがあるんですねー」
という単なる軽い雑談だったんですが、数日後には両方のサイト共に広告のってるし、Publickeyにはタイアップ記事まで上がっててびっくりしました。はやっ。
一応、僕も自分なりの支援エントリーを書いてみたんですが、そんな必要もなくイベント当日は盛況だったみたいです。
丁度その時期、Publickeyってすげーいいサイトがある!って自分の中でブームだったんです。今ははてブ常連ですが、その時は「マイナーだけど密かにスゲー良いサイトじゃね?」「Publickeyの良さが分かるのはわしだけで十分じゃ」などと思っていたのです。(振り返ってみれば結構みんな知ってたわけですが・・・)
きっかけは確かPerl5と6の開発におけるコミュニティの内部事情のエントリだったと思います。
Perl 5は生き返った! 新たな前進を再開したPerl - Publickey
ビジネスな視点と開発者の視点のバランスが丁度良く(開発者に寄り過ぎぐらいが丁度良い)、"TechCrunchとInfoQの中間ぐらいの塩梅のメディア"が欲しいと思ってた自分にハマりました。
@ebiharahideyukiさんが集客したいイベント、Starups2010の対象は"起業志向のあるエンジニア"とのことだったのでPublickeyなんてぴったりじゃね?って思った次第です。
Java 4-everのエントリも面白かったなあ。
マイクロソフトに厳格な一家を襲う悲劇。Javaよ永遠なれ - Publickey
少年は青年となり、禁じられた技術をこっそり友人と試すようになる。「こいつはスゲー、ロバストで、セキュアで、ポータブルで、スケーラブルじゃんか!」
要するに何が言いたいのかというと、「僕の様な仕事でも趣味でもコードばっかり書いてる様な糞プログラマーが喜ぶサイトを作ることも、こういう経路でお金を持った企業とつながることがある」ということです。
そういった背景にはソーシャルアプリのヒットなどによりエンジニアの需要(社会的価値)が上がっている(のか?)ことも関係してると思います。
Publickeyのような(僕にとって)良質な記事を書くサイトがちゃんと運営してるくらい儲かるような状況になっていくのは喜ばしいことです。実際にちゃんと集客できたという実績もあることだし、どんどんそういった広告が入るといいですね!
典型的な一日のスケジュール
要はコードを書いてるんですが、一応、就業時間内は仕事のコード、それ以外は趣味のコードと必ず分けるようにしています。
仕事ではLispパーカーのサイトやHelp me, hackers!等を書き、趣味ではLokkaを書いています。帰ってから毎日4時間はLokkaを書いているんですが、なかなか進みません。自分で書きつつ、他のRubyプログラマーの方に興味を持ってもらえるようにしないといけないなと思っています。
ネットのお陰で暇の潰し方などいくらでもある昨今、他人の興味やコミットメントは貴重な資源だとつくづく感じています。(ニコ動見てたら楽しく一日を終わらせることなど容易)
そんな中、ruby1.9.2対応などで沢山コミットしていただいた@tyabeさんがLokkaのコミッタになってくれました。(要はgithubリポジトリのcollaboratorsに追加)
あざーす!