2012-01-01から1年間の記事一覧
やりたいこと ◯抽象クラスNewsを継承した、FollowStartNewsやTweetFavNewsなど具象クラスを使うことで、タイプコードを削減する。 ◯News一覧を見るときに、News.all.each{|news| news.body}で、その内容が見たい。 ◯なおかつnews.bodyの内容はFollowStartNew…
現在作っているGithub風のアプリケーションでは、Controllerが実在するファイルシステムのブランチを切り替えることがある。Controllerでブランチの操作を意識し、モデル側ではブランチを気にしないで済むという構成。 当初はControllerにrender, DB操作, fl…
まぁなんか適当なタイトルですが。。。最近知人からTDDについて少し教えて欲しいと言われました。かくいう自分も、正直に申し上げて約1年間全くテストを書かずにRails開発をしていました。あのブラウザをリロードしまくるやつです。で、これじゃいけないなと…
Railsのサンプルってほぼ必ずミニブログ=Twitterなんだけど、Twitterのfollowing(フォローの対象となった人)/follower(フォローしている側)のリレーションって考えると意外とめんどくさい。ざっくり、UserとUserが多対多で結ばれることは想像がつくが、その…
やりたいこと GithubのFeedのようなものに、さらにTweetを混入させたTLを作成したい。 (こっちが新しい) ・(octolion)「この機能を作ったので、取り込んで!」 ・octolionさんがにpull requestを送りました ・octodogさんがにstarをつけました ・(octocat) …
今更かよって感じですが、最近は非常にアプリケーションの設計の難しさを痛感しています。そもそも設計の難しさを形作るのは大きく2つだと思います。1つは、アプリケーションは生き物であるということ。つまりある時点でベストな設計が、次のイテレーショ…
def set_revision(kommit) repo = kommit.repository.repo Dir.chdir(repo.working_dir) do `git commit -m "#{kommit.message}"` branch_name = kommit.init_at.try(:name) || "master" output = `git rev-list #{branch_name}` newest_revision = output.s…
最近こんなユニットテストを書いた。◯spec/models/kommit_spec.rb describe Kommit do it "return git message" do @user = create(:user) create_repository_for(@user) @repository.master.posts.create({title:"hoge",body:"fuga"}) @kommit = build(:kom…
今作ってるGithub風のものはデータストアとしてRDBMSも使っているんですが、レポジトリ本体はファイルシステムとして、素のgitレポジトリで管理しています。 で、ファイルでデータを持つというのはウェブアプリではあまり聞かないような気がしますが(あって…
ObserverとはActiveRecordが提供する、モデルに対するイベント処理を可能にするRailsの機構です。もちろん同様のことはモデル中に before_create :メソッド名 の形で記述すればいいわけですが、Observerを用意することで別ファイルに出き、見通しがよいこと…
某大手ソーシャルゲーム企業で球団を持ってない方の会社のCTOの方(以下Fさん)と幸運にも少しお話させていただく機会があった。私よりも13コ上で、私よりも5年も若い時からプログラミングをされていたというから約20年近いキャリアギャップが存在し、僕ごと…
詳解UNIXプログラミング 第4章 ファイルとディレクトリ from Takaya Kotohata
・カーネルとOSの違い 「Linuxカーネル」と「Linux OS」は違う。OSには、シェルや開発環境、GNOMEなど様々なソフトウェアパッケージが含意される。一方で、カーネルはただひとつのプログラムで構成されていて、コンピュータを構成するすべてのハードウェアと…
RailwayJSを3週間近くいじって、少しはまりやすいところについて解説したいと思います。まず、filterというのはcontrollerのアクションの前後で動作する処理のことで、具体的にはログイン済みであることを要求するページにアクセスする際にログイン済みかを…
DeNAの技術系インターンであるTechStuDIGに参加してきました。 一応当該インターンで得た情報をソーシャルメディア等に掲載することはやめてください的な紙にサインしたので、あまり深い話はせずに、来年以降のTechStuDIGの宣伝くらいにしたいと思います。ま…
やりたいこととしては ・chats/1 ・chats/2 などのshowのアクションに対して、オブジェクトとsocketを一対一対応させたい。 だからchats/1でのAさん、Bさんの会話はchats/2のCさん、Dさんの会話とは区別され、Aさんの発言をbroadcastしてもBさんにしか見えな…
※すでにnpmやmongodbの設定は済んでいるものとする。nodejsのサンプルがみんなオレオレコードばっかりで、どういうデザインパターンがいいのか悩んでいたら、Rails風のMVCを提供するフレームワークを見つけました。 一つがRailwayJSで、もう一つがTower.js。…
僕はふだんiMacか、27インチのディスプレイを使っているので画面が狭いということはありません。ただ、外出先などで開発する際、ノートの画面だけだと効率的に画面切り替えを行わないと作業効率がぐっと下がります。で、画面分割とかタブ切り替えとかを駆使…
ひさびさにRailsでハマりました。(この記事は過去にも書いたんですが誤りがあったので全面的に新しくしたものをうpします)◯やりたいこと ・User name:string type:string ・Teacher (Userを継承している) ・Student(Userを継承している) ・Item name:string…
JavaScriptアツいよ!とよく言われます。まぁ確かに僕はJavaScriptからプログラミングを初めたのでJavaScriptの可能性も難しさもある程度知っています。まず第一に、JavaScriptとRubyだと高度な話以前にメソッドの分かりやすさが違う。 Rubyなら "12345".to_…
大学3年生なので、まだ本格的な就活は先なんですが周りでもちらほらとインターンという言葉が聞こえるようになって来ました。 私の場合、「野村」とか「博報堂」とか言われても全く興味ないんですが、技術的な勉強に繋がりそうな会社のインターンには興味を…
メールサーバにpostfixを使っているんですが、これでひどく詰まったのでご紹介。Railsでは基本メールの設定はconfig/environments/XXX.rbの中に書きます。 config.action_mailer.smtp_settings = { :enable_starttls_auto => true, :address => '127.0.0.1',…
本当はテスト勉強しないといけないんですが、BGMがほしいなと思ったので、洋楽のマイリストから一括でダウソするコード書きました。これだけの行数で実現できるとは、さすがruby。 require 'rubygems' require 'open-uri' require 'rss' require 'niconico' …
前回までで、Capistrano側からunicornの再起動ができるところまで行きました。Railsアプリは他にも、各種のプロセスを同時に立ち上げることが多いです。当たり前ですがnginxの再起動は不要です。APサーバ上で動くもので必要なものをリスタートさせると良いで…
ここが山場になります。私はここでかなりどん詰まりしました笑◯Amazon EC2 ◯Cent OS 6.2 ◯Ruby 1.9.2 ◯Rails 3.2.1 ◯rvm 1.14.2 ◯unicorn 4.3.1 ◯Capistrano 2.12.0 ◯nginx 1.2.1 ◯mysql 5.5.25unicornほかのインストール(Gemfileに記述) gem 'unicorn' gem …
構成◯Amazon EC2 ◯Cent OS 6.2 ◯Ruby 1.9.2 ◯Rails 3.2.1 ◯rvm 1.14.2 ◯unicorn 4.3.1 ◯Capistrano 2.12.0 ◯nginx 1.2.1 ◯mysql 5.5.25 Railsアプリ用のステージング環境を構築しました。今回はWebサーバのnginx、APサーバのunicorn、DBサーバのmysqldをすべ…
もともと技術系ブログは読む側だったんですが、①自分の設定や開発メモをブログとして公開したほうがあとから参照しやすい ②ある程度、似たような境遇・環境の人たちにとって反面教師にでもなれれば(笑) ③詰まった時とか教えてくれる神が現れるかも という事…