読者です 読者をやめる 読者になる 読者になる

makoラボ

日常や勉強会や技術ネタ

Okayama.rb #100 『祝100回記念スペシャル!』に参加してきた

毎週木曜日に、ココスに集まってハンバーグを食べてきたRubyに関する何かを行ってきたOkayama.rbですが100回を迎える事が出来ました。

それを記念して開催されたOkayama.rb #100 『祝100回記念スペシャル!』に参加して来ました。

発表してきた

せっかくなので何かしゃべるかということで、joinsを使った時にエラーになった話をしました。

ちょっとだけ内容の話を。

別々のデータベースを使用しているテーブルのモデル同士でjoinsを使用した場合にエラーになります。

考えてみれば別データベースなのでjoin出来ないので、当然といえば当然かなと。

eager_loadもjoinするのでだめ、includesも条件によってはeager_loadを呼ぶので一応除外。

それぞれのテーブルにクエリを投げるpreloadであれば問題なくそれぞれのデータを取得できるので、今回はこちらを採用しました。

おわり

今週は100回記念ということで土曜日のスペシャルバージョンでしたが、来週からは通常営業になります。 ちょとご飯を食べながらRubyやプログラミングの話をしたいなって方はぜひ参加していただければ!

okaruby.doorkeeper.jp

第18回 岡山Ruby, Ruby on Rails勉強会で発表してきた

久しぶりに開催された岡山Ruby, Ruby on Rails勉強会でKnokout.jsについて発表してきました。

最近の業務でKnokout.jsを使ってるのですが、今までjQueryで書いてた表示・非表示処理やらがすっきりかけるのがいいですね。JS用のクラスを付けなくてもいいし・・・

Knokout.jsはJSライブラリなので既存のプロジェクトも入れやすいので、jQueryのドム操作で疲弊している人ぜひ使ってみてください。

Dapperでテーブル値パラメータを使う

今関わっているプロジェクトでDapperを使ってるのですが、ストアドにテーブル値パラメータを使おうと思った時にちょっと分からなかったので調べてみました。

こちらのスタックオーバーフローにも書かれているようにDataTableを使えば渡せるようです。

例えば下記の様な定義のストアドがあった場合

CREATE TYPE dbo.UserTableType AS TABLE
    ( UserID int, UserName nvarchar(50) )

CREATE PROCEDURE spAddNewUser 
    (@tvpNewUser dbo.UserTableType READONLY)

Dapperでテーブル値パラメータを渡す場合のコードは

// パラメータとして渡すようにDataTableを準備
DataTable userTable = new DataTable();

userTable.TableName = "tvpNewUser";
userTable.Columns.Add("UserID", Type.GetType("System.Int32"));
userTable.Columns.Add("UserName", Type.GetType("System.String"));

// 登録するデータをDataTableにセット
for (int i = 1; i < 4; i++)
{
    DataRow row = dt.NewRow();
    row["UserID"] = i;
    row["UserName"] = "新しいユーザ" + i;
    dt.Rows.Add(row);
}

// パラメータとしてDataTableを渡してストアドを実行する
var data = connection.Query<SomeType>("spAddNewUser", new { tvpNewUser = userTable
}, ...);

こんな感じでDataTableを作成して渡せばちゃんとストアド側でパラメータとして受け取れるようです。

でもなんかスマートじゃないのでもうちょっとうまいこと出来ないものか・・・

第29回 岡山WEBクリエイターズ「年末スペシャル2014」で話してきた

これは大都会岡山 Advent Calendar 2014の20日目の記事です。土曜日担当も今日が最後です。

前日は@patorashさんのお家紹介完結編でしたでした。 #ぱとしお新居ツアッーの開催が待たれますね!(2回め)

第29回 岡山WEBクリエイターズ「年末スペシャル2014」で話してきた

はい。我らが軍団長に重圧をかけられながら発表してきました。

死霊は諸事情で公開出来ないのですが、BootstrapのJavaScriptライブラリ便利だよーという話をしてきました。

伝えたかったこと

この辺りが伝わっていればいいなと思います。

あともう一つ

12/22にボクがフロント周りを担当したクレオフーガがリニューアルOPENするステマをしてきました。

みなさんお手柔らかにお願いします・・・

明日は!

明日は大都会が誇るリーサルウェポンきよくらさんです。

昼休みにイオン岡山に行って来た

f:id:mako_wis:20141210121134j:plain

これは大都会岡山 Advent Calendar 2014の13日目の記事です。

前日は@patorashさんのお家自慢でした。 #ぱとしお新居ツアッーの開催が待たれますね!

さて本題です。 いま岡山でもっとも熱い話題といえばもちろんイオン岡山OPENhttp://aeonmall-okayama.com/ですよね! ということで、先日のお昼休みに突撃してきました。

巨大な吹き抜け

f:id:mako_wis:20141210122407j:plain

まず印象的なのは建物中心部にある1階から4階までの吹き抜け空間です。 写真に写ってる巨大なスクリーンには、たまに店内を取材している様子が映し出されていたりします。 吹き抜けの周りには休憩用のイスやそれに付随する軽食店が並んでいて、のんびりするには良いエリアです。

空中庭園

f:id:mako_wis:20141210121841j:plain

吹き抜けがある4階層を抜けて5階に行くと現れるのが空中庭園です。 周りにはカフェとかもあったりするので春とかにのんびりするにはいい感じですね。今の季節だと寒いですが・・・

夜はライトアップ

f:id:mako_wis:20141130183407j:plain

夜はこの空中庭園がライトアップされます。こちらも綺麗なので夜にブラっと立ちよるのもいいかもしれませんね。 ※別の日に撮影しました

まとめ

昼休みに出かけたのであまり店内を見て回れなかったのが少し残念でした。 まだ、オープンしてすぐの週だったせいか平日の昼にもかかわらず人が多かったです。 飲食店街も人が多くて行列が出来てたりとかして、お昼休みに食べに行くならちょっと時間をずらして行った方が良さそうです。

今回紹介した以外にも沢山の店舗があったりとか、TV曲のスタジオがあったりするイオン岡山。 岡山駅周辺にありますので、駅に立ち寄った際にブラっと立ち寄ってみてはいかがでしょうか?

明日は@bleu48さんです

すごい合同勉強会に行ってきた

すごい勉強会が広島であるとのことで行ってきた。

すごい合同勉強会2014 in 広島は、広島近隣のITコミュニティの合同勉強会だそうです。

記念すべき第一回は東京や福岡からも講師の方が来られてなかなか豪華な感じになってました。 当日のスライドや動画はこちらのページにまとまってるようなので興味のある方はどうぞ。

さて、自分ですがせっかくなのでLT枠で登壇してきました。

内容としてはクックパッドさんの開発コンテストに参加した感想とかを話してきました。

今回伝えたかったことは事前準備大事ってことでした。

24時間以内に何かしらのアプリを提出しないといけないので、事前に出来る事をやっておくとより作りたいものに集中出来るかなと。 今回のコンテストもアプリの仕上げ段階で色々とトラブルに見舞われたので、事前準備がなかったらどうなってたことやら・・・

また、コンテストで作成した名札作成サービスのNemCaの宣伝をするという裏の意図もあったわけですが、LTの最初のほうで時間を取り過ぎてしまいあんまりアピール出来なかったのが心残りでした。

おわり

そんなわけで色々な話が聞けた合同勉強会。岡山では聞けないメンツの話が聞けたのは非常に刺激になって良かったなと思いました。やっぱりたまには県外の勉強会におじゃまするのは良いことですね!

ちなみに岡山でも12/13に合同勉強会 in 大都会岡山 -2014 Winter-という勉強会が開催されますので、こちらも良かったらどうぞ!

ja.ymlでNoを書くとfalseが表示される

ちょっとハマったのでメモ

ja.ymlに

 item_number_prefix: No

と書いてerb側で

<p>
 <%= t(item_number_prefix) %>
</p>

と書くと何故かfalseが表示される・・・

以下のように書くと解決

 item_number_prefix: "No"

おまけ

ちなみに

 hogehoge: YES

と書くとtrueが表示されます