サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
lukesilvia.hatenablog.com
「先読み力」で人を動かす ~リーダーのためのプロアクティブ・マネジメント~ 作者: 村中剛志出版社/メーカー: 日本実業出版社発売日: 2008/03/27メディア: 単行本(ソフトカバー)購入: 11人 クリック: 190回この商品を含むブログ (40件) を見るを読み直したのをきっかけに、日頃仕事で意識しているポイントを整理する。 ポイント毎に、考え方、実行するための行動、ツールという3つの軸を意識して書く。また、(★)部分は本に書かれている内容ではなく、僕のメモ。 本書にかかれていないこと 方針が書かれている本なので、具体的な部分のフォローが必要 優先順位のつけ方。会社の戦略、業務知識の習得、経験と改善による精度の向上が必要 タスクに対する見積もりの方法。業務知識の習得、経験と改善による精度の向上が必要 基本的な考え方 プロアクティブな行動によって成果を出す ファインプレーではなく、
メソッド名と同じローカル変数がある場合はローカル変数が優先される - ’(rubikitch wanna be (a . lisper)) binding - I like Ruby too. これはfooがすでにローカル変数として宣言されているからそっちが優先された話でしょう。 foo.instance_eval { foo } # => # foo.instance_eval{ defined? foo } # => "local-variable" foo.instance_eval{ defined? bar } # => "method" 最初見たとき理解不能だった。 え、instance_evalってレシーバのコンテキストで評価されるんじゃないの?( ゚д゚) なんで、外側のスコープにあるfooが見れるの??? で、調べてみると。 instance_eval - Rubyist
MySQLを停止して、起動しようとしたらエラーした 停止 /etc/rc.d/init.d/mysql stop した後に 起動 /etc/rc.d/init.d/mysql start ここで失敗。何故か起動できない(泣) 試す まずは、mysqlとか打ってみる。当然起動しないで、以下のようにエラーする。 Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' エラーメッセージでググる 「Can't connect to local MySQL server through socket」エラーについて このエラーが発生する原因には以下の3つが考えられます。 ・MySQLサーバーが起動していない ・MySQLサーバーで使っているUNIXソケットとクライアントソフトで使っているUNIXソケ
先日、作っているアプリケーションにバグが発生しました。バグの内容は次のようなものでした。 同時に存在してはいけないはずのデータが、DB に存在する 整合性のチェックはアプリケーションレベルで行っている 一意制約のような単純なものではないので、アプリケーションレベルで実装 整合性のチェックロジックは正しい これに対し、バグは次のような状況で発生したと仮説を立てました。 ユーザがレコードを一括登録しようとする 登録ボタンを押したがレスポンスが遅い この間、整合性チェックが走っている ユーザはもう一度登録ボタンを押した 2回目の登録の整合性チェックが走り始める 1回目の登録の整合性チェックが完了、INSERTが始まる 2回目の登録の整合性チェックが完了、INSERTが始まる 2回目の登録の整合性チェックの間、DBにはまだ1回目の登録によるINSERTが実行されていないので、チェックを通過した 結
■テストコード まず、mail.txtを作成。参照:http://i.loveruby.net/ja/projects/tmail/doc/basics.html ▼最初にプロンプトからrunnerを使ってみよう。 C:\Rails\app\trunk>ruby script/runner 'MailHandler.receive(STDIN.read)' < mail.txt ※この時、mail.txtはRAILS_ROOTにあるとする。この例ではapp/trunk/mail.txt ▼ユニットテスト def test_receive MailHandler.receive(File.new(File.dirname(__FILE__) + '/../mail_template/mail.txt',"r").read) end ■参考 http://d.hatena.ne.jp/omoc
一昨日、vim でファイルを保存した時にGoogle Chrome で開いているページをリロードする - Slow Danceというエントリーを書きまして、AppleScript だとChrome に一瞬フォーカスを奪われてしまうのが問題と書きました。 しかし、Chrome はAppleScript に対応していたので、フォーカスを奪われることなくリロードすることができました。 ~/.vim/plugin/chrome.vim command! -bar ChromeReload silent !osascript -e 'tell application "Google Chrome" to reload active tab of window 1' command! -bar ChromeStartObserve ChromeStopObserve | autocmd BufWrit
HTML を編集している時に必須の機能。今回試した方法は、 AppleScript を使う ChromeReplを使う livereload の3つです。最終的に、(不満ながらも)AppleScript 版を使っています。 追記 不満はvim でファイルを保存した時にChrome で開いているページをリロードするのはAppleScript で十分でした - Slow Danceにて解消されました。 1. AppleScript を使う http://blog.cohtan.org/2008/03/vimhtmlyacss.htmlを参考にしました。 AppleScript の設置 ~/bin/chrome_reload.scpt tell application "Google Chrome" to activate tell application "System Events" to
環境 ruby 1.8.6-p399 rails 1.0.0 (;_;) Mac OS X 10.6.4 現象 irb は通常通り~/.irb_history に履歴をためていく rails のscript/console を起動すると、~/.irb_history の内容が上書きされ、先程までirb_history にあった最新の履歴が消えてしまう script/console の実行中も、~/.irb_history をtail すると、どんどん履歴が書き込まれていっているのだけれど、何故かscript/console を終了して、再度起動したタイミングでやはり元の内容に戻ってしまう。~/.irb_history を空にしてもscript/console を実行すると中身が復活することから、どこからかコピーされている感じ。 原因 未だソースとかを追っていない もしかしたらrvm 関連の
select_tag("student_status_id",options_for_select(options, @student.student_status.id)) select系は、[表示値,送信値]となっている。デフォルトは、名前のほうでなく、 送信値の方を与える。上の例では、(options,@student.student_status.name) としても何も起らない
Rubyベストプラクティス -プロフェッショナルによるコードとテクニック 作者: Gregory Brown,高橋征義,笹井崇司出版社/メーカー: オライリージャパン発売日: 2010/03/26メディア: 大型本購入: 9人 クリック: 307回この商品を含むブログ (47件) を見る を読んでいたら、標準CSV ライブラリの紹介が載っていた。知らなかったのだけれど、CSV ライブラリは1.9 系でFasterCSV に置き換えられたとのこと。 1.8 系以前のCSV ライブラリはそこまで使いやすいって感じじゃなかった。けれど、FasterCSV、1.9 系のCSV ライブラリを使うことで、CSV の操作をずっと簡単に行えることができるようになる! CSV 形式のファイルを読み込む 例えば、ヘッダつきのCSV ファイルを読み込むなら、次のように書く必要があった。 require 'csv
DB に日々のブックマーク数を保存している 指定した期間のブックマークの日別の数を表示 ヘッダには指定した期間のブックマークの合計を表示 というような場合を想定。 このような場合は、DB から取ってきた結果をComposite パターンを使った箱に入れると便利。 このくらいの用途だと「sum すればいいじゃん」という話になるけれど、 複数のテーブルからデータを取ってきた結果をComposite に入れて、ひとつのオブジェクトにまとめられて便利 Component とComposite の統一インターフェース(上の例ではCounts#count, Count#count)を持てるので、ポリモーフィズムを利用しやすい 入れ物に集計機能がついているので、DB 以外にmemcached から取得した結果に対して使えたりできる 等の利点はあるかなと思います。 また、Composite パターンはru
RubyKaigi2010 に行ってきた(1日目) - Slow Danceに続き、今年のRubyKaigi に行ってきたレポートを書きたいと思います!例によって興味があった内容をまとめました。Chad Fowler の基調講演の内容は情熱プログラマー ソフトウェア開発者の幸せな生き方を読むのが一番いいと思います。 また、内容に誤りがありましたらお手数ですが指摘いただけますと助かります。 Ruby powering 9 million dining tables(Cookpad) Cookpad CTO の橋本さん(@hashikem)によるCookpad のサービス、システム全般のお話と、id:secondlife さんが何故Cookpad に入社したかというお話を聴きました。 規模 9.89 M UU / month 83万レシピ 開発体制 ユーザにとって価値のあるものを作成するには
今年もRubykaigi に行ってきました。とても勉強になることが多かったので興味があった内容をまとめます。 まずは1日目から。2,3日目も後に書きます! もし間違い等ありましたら指摘いただけると助かります。 Conflicts and Resolutions in Ruby and Rails Rails のコミッタ達を迎えたトークセッション形式。 Rails2 と3 の違い Rails2 の上位互換でありながら様々な機能を盛り込んだ Rails のそれぞれのパーツをRails の外で使えるようモジュール化した Rails チームがRails3 構想時に描いたゴールは達成できたか Yes. 我々コアチームはよくやったと思う 最も良かったのは共通のAPI を作ったこと ruby1.9 対応をする上で難しかったこと encoding。常にencoding について考えなければならなくなった
以下の動作が実際どのような動きをしているかメモ。 class User < ActiveRecord::Base belongs_to :club end User.column_names => ["id", "club_id" ....] user = User.find(:first) user.club => #<Club:0x..... belongs_to の動作を読む Rails は1.0.0 とかなり古い。読む中心のディレクトリは以下の通り。 /usr/local/lib/ruby/1.8/gems/activerecord-1.13.2/lib/active_record associations.rb ここに、belongs_to メソッドがある。 def belongs_to(association_id, options = {}) # オプションが正しいか確認 o
とんでもない見落としをしていた。こんなテストコード書いてた。 fixtures :pay_types def test_record o = Order.new(:pay_type_id => pay_types(:one)) assert_equal o.pay_type, pay_types(:one) ... end このテストは通りますが、やってはいけない書き方です。何がいけないかというと、「:pay_type_id => pay_types(:one)」の部分。 以下の例をみるとおそろしさが分かる。 Loading development environment. >> o = Order.new(:pay_type_id => PayType.find(2)) => #<Order:0x22f8080 @new_record=true, @attributes={"name"=
MySQL に限らず、SQL のNULL の仕様には何回か「えっ」と驚くことがあったのでメモしておこうと思います。5.1 版の日本語マニュアルがなかったものについては、4.1 のマニュアルを参照しました。 そもそもNULL は何を意味するか NULL は未定義または、不明を意味する。「電話番号を持たない」ということを表現する場合は、NULL ではなく、空の文字列を使う。 NULL 値というものを SQL 初心者はよく混乱します。SQL 初心者は、多くの場合、NULL が空文字 "" と同じであると考えてしまいます。これは違います。たとえば、以下のステートメントは完全に別のものです。 mysql> INSERT INTO my_table (phone) VALUES (NULL); mysql> INSERT INTO my_table (phone) VALUES (""); どちらのス
要件 バックアップはmysqldump バックアップファイルは1週間前のまで残して欲しい 8日以上前のものは消す 簡単じゃんと思ったら案外罠があった。 設定 バックアップ MAILTO="youraddress" PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/home/admin/bin 0 4 * * * mysqldump -u root -p rootpass --default-character-set=utf8 --hex-blob --single-transaction --master-data=2 dbname | gzip > /var/backup/mysql/dbname_`date +"\%Y\%m\%d_\%H"`.tar.gz crontab において「%」はメタ文字なの
最近立て続けにレースコンディション問題に遭遇したのでメモ。 レースコンディション(競合状態)とは、複数のプロセスやスレッドが共有リソースに対して何らかの操作をする際に、処理のタイミングによって結果が異なってしまう状態のこと。よくトランザクションの解説の際に銀行口座の例として紹介されるおなじみのやつです。 今回は、アプリケーションの書き方によって発生するレースコンディションと、MySQL のテーブル定義時の制約不足で発生するレースコンディションについてそれぞれ紹介したいと思います。 どちらの場合も共有リソースはDB で、条件を満たすと意図しない形でデータが保存されてしまいます。 サンプルアプリケーション サンプルアプリケーションとして、簡単なアクセス解析機能付きの短縮URL ツールを考えます。 アクセス解析機能として、以下のような機能を持つとしましょう。 URL毎 にクリック数を計測できる
Linux-DB システム構築/運用入門の8章「インデックスのチューニング(前編)」を読んだので、インデックスの基本について実際に手を動かしながら勉強してみようと思います。 内容としては、クエリを実行する際に、「インデックスだけにアクセスした場合」と、「データにもアクセスする場合」のI/O 回数の違いが、パフォーマンスにどれだけ影響を与えるか調べてみるというものです。 環境 MySQL Ver 14.7 Distrib 4.1.22, for pc-linux-gnu (i686) using readline 4.3 ストレージエンジン MyISAM 今回は、インデックスだけにアクセスした場合と、データにもアクセスする場合のパフォーマンスの違いについて調べたいので、インデックスの構造が「キーの値, データの位置」となっているMyISAM の方が調査環境に向いていると判断しました。 テスト
普段仕事でRails を使っている身ですが、Rails 2.x 系を使っているものが1つもない。結構前からRails 3 の話題がでてきている今、そろそろRails 2.x をまともに使っておきたいと思ったので、まずはREST について調べました。最初にREST について調べたのは、REST がRails 2.x (実際には1.2.x から)で導入された最も大きな概念だからです。 REST とは REST とはアーキテクチャスタイルである アーキテクチャスタイルとはデザインパターンのようなもので、システムを設計する上での方針をまとめたものである。 REST は「REpresentational State Transfer」の略である 直訳すると、「(リソースの)表現可能な状態の転送」。あるリソースの状態を表現したものがサーバからクライアントに転送されるのがREST。ここにでてきた「リソー
今までCarbon Emacs を使っていたのですが、カスタマイズによって動作が重くなったり少し不満に思っていました。そうした中、Emacs23 がリリースされたり、Carbon EmacsからCocoa Emacsへの流れも来ていました。 僕もCocoa Emacs に移行しようと思ったのですが、Web+DB の記事やRails ユーザにVim を使う人が多いことを知り、ふと食わず嫌いだったVim を試してみようと思いました。 少しカスタマイズしてある程度使えるレベルになったので、まとめておきたいと思います。 環境 Mac OS X(10.5.8) Vim のバージョン macvim-kaoriya(7.2 KaoriYa 20090802) Mac OS X 用 Vimのいろいろを見ると分かる通り、Mac でvim を使うにも色々種類があります。 僕の場合は、ターミナルと別に使いたかっ
mala さんのMySQLにおけるbulk insert と bulk update - 金利0無利息キャッシング – キャッシングできます - subtechのエントリーを見て, MySQL でbulk update ができることを知り, 丁度欲しい機能だったのでとりあえず動くだけのメソッドを実装. # User.extend BulkExecuteMethods # User.update_multi([:id, :name, :age], [[1, 'bob', 11], [2, 'mary', 21]]) # # refs # http://dev.mysql.com/doc/refman/4.1/ja/insert.html # http://subtech.g.hatena.ne.jp/mala/20090729/1248880239 module BulkExecuteMet
今年はRubyKaigi に行ってきました。今回聴いたセッションの内、いくつかのメモを残します。全てを1エントリーにまとめるのは量的にも厳しいし、エントリの切り方としても微妙なので小分けにして書いていきます。 あくまでメモなので間違いがあるかもしれません。特にコードについては詳細はメモしていなかったので必要な部分は自分で補完したりしました。 というわけで、最初は「株式会社万葉 大場さん」のセッションです。 Pragmatic Patterns of Ruby on Rails - 現場で役立つRuby on Railsパターン(大場 さん) 学生時代はAPI 仕様書を読むのが好きだった大場さんは、周りに同じような趣味を持つ人がいなくて孤独だった。Ruby コミュニティの人達に出会い感動し、自分も何かしたいと思ったと最初におっしゃっていました。 概要 今回のセッションの要点は次のようなことで
OSX のデフォルトのscreen はpbcopy が動かない問題とかがあり、今までは開発版のscreen を使ってました。ですが、開発版の方はZenTestにくっついているautotest と連携する際にステータスラインの部分がきちんと動かなかったりしてました。 そこで、tscreen に移行したらどちらも解決!「~/.screenrc」もそのまま使えるので便利。縦分割もできます。 インストール screen のコピーモードでコピーしたものをpbcopy に渡すパッチをあてる このパッチをあてておけば、screen のコピーモードでコピーしたものをそのままペーストできるので便利。 cd ~/src wget http://www.steve.org.uk/Software/tscreen/dist/tscreen-0.4.9.tar.gz tar xzf tscreen-0.4.9.ta
会社のWindowsのFirefoxでトラブルに見舞われたので、解決策をメモ。環境は、以下の通り。 Windows XP Professional Version 2002 Service Pack 2 Firefox3(Build 2008052906) 現象 Firefoxの検索バーやロケーションバーに日本語を入力すると、Enterを押した時点で入力した文字が繰り返し入力される。 例えば検索バーでGoogle検索 「入力したテキスト」⇒「Enter後に検索バーに表示される文字列」 「aaa」⇒「aaa」(英数字はおk) 「あああ」⇒「ああああああ」(検索は「ああああああ」でなく、「あああ」で行われる) 「日本語」⇒「日本語日本語」 解決手順 まずはFirefoxを再インストール 今思えば、最初に再インストールする前に調査するべきでした。原因究明を十分にしないで対応するのは間違い。(原因
前回のエントリーデータベースを用いたセッションデータ管理についてで、MySQL とメモリの関係について良く分からない部分があると書きました。 実はここに関する理解はかなり曖昧な部分があって、調査して追記します。とくにメモリ利用量について。mysqld のプロセスが利用できるメモリの上限が、32bit OS の場合は3G 程度ということは、innodb_buffer_pool_size もこの制限を受け、これについての警告が、先に紹介したリファレンスマニュアルのものという理解だけどいいのだろうかというのが1つ。 2 つ目は、この理解があっているとすると、4G 以上のクラスのメモリをつんだサーバをDB サーバとして利用する場合、64 bit OS でないとリソースの有効活用ができないか。それとも、先に書いたとおり、OS レベルのキャッシュとして利用できるから、結果としてデータファイルを読み込む
Web アプリケーションとは切っても切れないセッション機構。DB ベースでセッション管理を行なって得られた知見と、それを元に考察した結果をまとめてみます。 セッションデータの特性 DB で管理される他のデータに比べ、セッションデータはかなり特殊です。主な特徴は次のような感じ。 データが増加するのが速い 定期的な削除が必要 頻繁に更新される リクエスト毎に読みに行く必要がある このデータを読めないとアプリケーション全体にアクセスできない アクセス頻度が高いということです。あと、1つ目の特徴からセッションデータについては意識的に管理してやる必要があります。 現在の環境 アプリケーションの領域が少し特殊で、セッションデータがやたらたまります(ユーザ数何百万のサービスとかそういうのではないです)。 RDBMS MySQL 4.0.22 ストレージエンジン InnoDB レコード数 6千万 テータサ
知りませんでした。Gem って、yum とかと同じで、パッケージ管理をするものだと思ってました。今回、Gem のアップデートがあったということで、以下のように「0.9.4」から「1.2.0」にアップデートしたら、「RMagick 1.13.0」が動かなくなった。 最初に、gem をアップデートした。 $ gem update --system しばらくして、作っているアプリケーションのテストを通してみると。 Started E........ Finished in 0.547 seconds. 1) Error: test_create_image?(PhotoTest): NoMethodError: undefined method `resize_to_fit' for # C:/RailsS/rixi/trunk/config/../app/models/photo.rb:212
flymake でリアルタイム文法チェック - とりあえず暇だったし何となく始めたブログ を参考に設定。 設定後はこうなる 文法エラーが検知されると、エラー部分がハイライトされる 文法エラーは「ruby -c 編集中のファイル」でチェックされる エラー内容をミニバッファで確認できる 設定 Emacs のバージョン GNU Emacs 22.2.50.1 (i386-apple-darwin9.4.0, Carbon Version 1.6.0) of 2008-07-17 on seijiz.local flymake の設定 参考サイトにあるflymake の設定を「.emacs.el」に追加する。 僕の場合、Carbon Emacs に付属している「rails.el」を使っていたので、以下のように設定した。「(require 'rails)」だけでもflymake を有効にできるけど、
次のページ
このページを最初にブックマークしてみませんか?
『LukeSilvia’s diary』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く