本に書いてある通りやっても何故かバリデーションが通らない。
何度やっても「Password Missing password」と怒られるばかり。
物は試しとGoogleで似たような人がいないか検索してみるが それらしいものは見当たらない。
試しにModelを全コピするが一向に改善しないため、どうやらtypoではないようだ。
( 元々3.2系の本だから ちょいちょい仕様が変わってたりするんだよなあ…今回もその周りのにおいがプンプンする )
それでもって POST時にユーザから渡って来たログを出してみて、その値を確認してみた。
Parameters: {"utf8"=>"V", "authenticity_token"=>"c4yT/Bt6ypoDW5rl119tndpOZgLLAE4pv824XPZXRdM=", "user"=>{"name"=>"aef", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Create User"}
Unpermitted parameters: password, password_confirmation
==========================================
Unpermitted parameters: password, password_confirmation
{"name"=>"aef"}
=========================================
(続きを読む…)
ここ最近 せっかくプログラミング言語の作り方を勉強している最中だし、どうにか二郎のコール(いわゆる二郎語の一部)をプログラミング言語で再現できないだろうかと頭を悩ませていたが、最近ようやく ある程度形になってきたのでシェアする。
(正直な所、タイトルは「プログラミング言語」になっているものの、「やってる事ただのコンパイルじゃねーか」という感じになっちゃってます。 極めつけに「yaccとlex使ってるだけじゃねーか」って声が聞こえてきそうですが、どうか許してください )
test.jiroファイルの用意
以下は「二郎語」で書かれたファイル「test.jiro」である。「ニンニク入れますか?」を契機に、怒涛のコールが始まる。
「ニンニク入れますか?」「ヤサイニンニクアブラ」「ヌキ」「ヤサイニンニクアブラ」「ニンニク」「ニンニクアブラ」「ヤサイカラメ」「ニンニクアブラ」「ニンニクアブラカラメ」「ヤサイニンニクアブラ」「アブラ」「ニンニクアブラ」「ニンニクアブラ」「ニンニク」「カラメ」「ニンニク」「ニンニク」「アブラ」「カラメ」「ニンニクアブラ」「ヤサイアブラ」「ニンニクアブラ」「アブラカラメ」「ニンニクアブラ」「アブラカラメ」「ニンニクアブラ」「全マシ」「ニンニク」「ヌキ」「ヤサイアブラ」「ヤサイニンニクアブラ」「ニンニクアブラ」「全マシ」「ヤサイニンニクアブラ」「ニンニク」「ニンニクアブラ」「アブラカラメ」「ニンニクアブラ」「アブラ」「ニンニク」「ニンニク」「ニンニク」「ヤサイカラメ」「ヤサイニンニク」「ヤサイニンニクカラメ」
ソースコード(コール)内容: 「ニンニク入れますか?」「ヤサイニンニクアブラ」「ヌキ」「ヤサイニンニクアブラ」「ニンニク」「ニンニクアブラ」「ヤサイカラメ」「ニンニクアブラ」「ニンニクアブラカラメ」「ヤサイニンニクアブラ」「アブラ」「ニンニクアブラ」「ニンニクアブラ」「ニンニク」「カラメ」「ニンニク」「ニンニク」「アブラ」「カラメ」「ニンニクアブラ」「ヤサイアブラ」「ニンニクアブラ」「アブラカラメ」「ニンニクアブラ」「アブラカラメ」「ニンニクアブラ」「全マシ」「ニンニク」「ヌキ」「ヤサイアブラ」「ヤサイニンニクアブラ」「ニンニクアブラ」「全マシ」「ヤサイニンニクアブラ」「ニンニク」「ニンニクアブラ」「アブラカラメ」「ニンニクアブラ」「アブラ」「ニンニク」「ニンニク」「ニンニク」「ヤサイカラメ」「ヤサイニンニク」「ヤサイニンニクカラメ」
コンパイル
前述の二郎語によって記述されたコールをコンパイルするために、linux上で以下のようにコマンドを実行する。
./jiroparse test.jiro
すると、以下のように二郎語で書かれたコード(コール)をベースに「jiro.c」というC言語のファイルが出力される。
この中身を見てみると、二郎語によるコールがC言語に正常にコンパイルされてHello world が出力されていることがわかる( int main(void){ …、 return 0; } あたりの処理は割愛しております)。
printf("Hello World");
(続きを読む…)
構文解析をしていてちょっと詰まったのでメモ。
上記の構文規則に基づくとすると、
10 + 20 * 5 + 10 * (1 + 1)
の再帰ルーチンは以下のようになる。
(なお、 expression(), term(), factor() はそれぞれ上記の構文規則を実装した関数 )
(続きを読む…)
ご無沙汰しております。
週末でC言語のポインタ本読了してました。
Web系にいるものの、最近こういう低級言語に触れ合っているとなんとも言えない楽しさを感じるので 会社が終わるとそっちの方ばっかりいじってます。
ところで、ここ数日は色々と細かいタスクが増えてきたので 自分用に簡単なGTDのツールをつくろうとLINQまわりをいじっていました。
今回はXMLの保存・読み込みということで記事投稿。
準備
using System.Xml.Linq; // XDocument オブジェクトを使用する。
using System.IO; // ファイルの保存・読み出し時に必要。
とりあえずアセンブリ参照の追加。
XMLをつくってみる。
XDocument F = new XDocument();
F.Add(new XElement("RootNode")); // ノードの追加
F.Save(FileName);
これで FileName に指定したパス・ファイル名でxmlデータが保存される。
今回はこんな感じ。
<?xml version="1.0" encoding="utf-8"?>
<todolist />
※ XMLにルート要素の追加をせずに保存すると読み出しの際にランタイムエラー吐くので注意。
ちょっといじってみた感じ、よくあるXML操作関連のAPIのような操作性で直感的に操作できて良い感じ。
(続きを読む…)
お久しぶりです。
ブログを更新していないしばらくの間、WPFをいじくり倒してました。おかげさまで、超簡単なデスクトップアプリケーションならなんとかつくれるようになりました。
というわけで週末は勉強がてらWPFでクッキークリッカーっぽいものをつくって遊んでました。
そこで感じたのが、
複数ウィンドウでデリゲートとかイベントとか書いてるうちにクラス間の関係が密結合になってしまうということ。
こういう場合、一つのクラスの規模が大きくなってきて ある属性をクラス化して分離したくなった時とかになかなか面倒くさいので、
一つメディエータみたいな感じのクラスが欲しい。
でもエントリポイントがWPFの一クラスだとあまり綺麗な構造になりそうもないので、
いっそのことエントリポイントをWPFのクラスじゃなくて通常のC#クラスにしてしまって、WPFを分離してはどうか。
さらに各描画用インスタンスを保持するクラスを用意して、複数ウィンドウ間でのイベント処理を楽にしてはどうかという発想に至った。
(API化すれば良い気もするが)
*なお、この記事はC#/WPF超初心者が執筆しているので、参考にする場合は十分に注意してください。また、「いやそもそもこうした方が楽じゃね」っていうところに関してはどんどんご指摘いただければ幸いです。
(続きを読む…)