Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

2013-09-01から1ヶ月間の記事一覧

Ubuntu | OS起動時にアプリをオプション付きで起動

概要 OS起動時にアプリをオプション付きで起動 詳細 OS起動時にアプリをオプション付きで起動するためのbashを作成します。 自動起動するアプリケーションに登録してもよいのですが、 自動起動時はCompizConfigのビューポート設定が効きません。そのため、OS…

Ubuntu | Window情報の確認をする

概要 Window情報の確認をする 詳細 Window情報の確認方法について。 CompizConfig等の設定で必要なWindowClassやWindowNameを確認するには下記を行う。下記コマンドを入力して、対象ウインドウをクリックする。 ウインドウ名の確認 ※参考のためFireFoxを選択…

Ruby | Array | permutation

概要 配列から引数n個の要素を選んだときの順列を求める。 詳細 permutationメソッドは、配列から引数n個の要素を選んだときの順列を求める。 サンプルコード # encoding: utf-8 ary = Array.new(3) ary.fill {|x|x += 1} ret = ary.permutation # permutati…

マルチスレッドデザインパターン | Thread-Specific Storageパターン

概要 Thread-Specific Storageパターン 詳細 スレッドの入り口は1つでも、内部で固有領域が用意されておりスレッドごとに 別々に保存・取得するパターンです。 別名 ・Per-Thread Attribute ・Thread-Specific Data ・Thread-Specific Field ・Thread-Local …

Ruby | Array | flatten

概要 自身を再帰的に平滑化した配列を生成 詳細 flatten は自身を再帰的に平滑化した配列を生成して返します。 lv が指定された場合、lv の深さまで再帰的に平滑化します。 サンプルコード # encoding: utf-8 require "pp" def println(ary) print "#{ary}\n…

Ruby | Array | fill

概要 配列に指定した値を一括設定する 詳細 配列に指定した値を一括設定します。 サンプルコード # encoding: utf-8 require "pp" def println(ary) print "#{ary}\n" end ary = Array.new(5) ary.fill("@") println ary ary.fill("!", 2, 2) println ary ar…

peopleware | きっとそこは楽しいところ

概要 きっとそこは楽しいところ 詳細 書籍 ※書籍中の和訳では「混乱」と記載されている箇所ですが、 原文が「Chaos」なのでここでは「混沌」と記載します。楽しさは秩序よりも混沌からくる。 混沌を得るには以下を行えば良い。 ・試行プロジェクト あらたな…

Ruby on Rails | Reek | ReekのUtilityFunction警告がclass << selfに対応していない

概要 ReekのUtilityFunction警告がclass 詳細 ReekのUtilityFunction警告がclass class << self def class_method # : 実処理 end end を def self.class_method # : 実処理 end で書かないと、ユーティリティ関数のチェック(UtilityFunction)に引っかか…

VMWare | VMWarePlayerのVMをコピーする

概要 VMWarePlayerのVMをコピーする 詳細 VMWarePlayerのVMをコピーする。 必要な作業は以下 ・VMのフォルダコピー ・コピー後に、ルート配下の下記ファイルをリネーム 旧名称.nvram => 新名称.nvram 旧名称.vmdk => 新名称.vmdk 旧名称.vmsd => 新名…

Ruby on Rails | Webric ServerをDeamonで起動、終了する

概要 Webric ServerをDeamonで起動、終了する 詳細 Webric ServerをDeamonで起動、終了します 設定 サーバー起動用bash start.bash ※-dのオプションがデーモン起動 #!/bin/bash bundle exec rails s -d -e production サーバー起動用rakeタスク start.rake d…

マルチスレッドデザインパターン | Two-Phase Terminationパターン 〜 とあるブラック企業と社畜

概要 Two-Phase Terminationパターン 詳細 スレッドの処理をメインの処理と終了処理に分けて 安全にスレッドを終了するパターンです。 このようにしっかりと終了処理を行って実行を終えることを graceful(優雅な、上品な、礼儀正しい)と表現します。 注意点 …

peopleware | 生産性の高いチームを育てる

概要 生産性の高いチームを育てる 詳細 書籍 共通の目標を持つこと。 ただ一緒に開発しているだけではチームとはいえない。 現実 現実ではただ一緒に開発しているケースの方が多そうだ。 特に下請け案件などは、よっぽど積極的にチームをなじませるようなキ…

studistory | イテレーション2 | CSSの設定で一覧部の見栄えを良くする

概要 CSSの設定で一覧部の見栄えを良くする 内容 CSSの設定で一覧部の見栄えを良くします。 ソースコード studistory.css table { width: auto; border-spacing: 0; font-size:14px; } table th { color: #fff; padding: 8px 15px; background: #258; backgr…

マルチスレッドデザインパターン | Worker Threadパターン

概要 Worker Threadパターン 詳細 作業対象が発生するまで待機し、発生して初めて作業を行うパターン。 別名Background Thread。 注意点 ・Thread Per Messageパターンは都度スレッドを起動していたが、 Worker Threadパターンは既存スレッドを使いまわして…

マルチスレッドデザインパターン | Thread-Per-Messageパターン

概要 Thread-Per-Messageパターン 詳細 一つのメッセージに対して1つのスレッドを割り当てるパターン。 依頼者が作業者に処理を依頼すると、該当作業は別スレッドで実行され 待機する必要がないため依頼者は即別の作業を行うことが出来ます。 これにより、プ…

マルチスレッドデザインパターン | Read-Write Lockパターン

概要 Read-Write Lockパターン 詳細 スレッドの処理に置いて読むことと書くことの意味は異なります。 ・読み込み中に他のスレッドが読み込みをしても問題ない ・読み込み中に他のスレッドが書き込みすると本来読み込みたい内容と異なるため問題がある ・書き…

マルチスレッドデザインパターン | Producer-Consumerパターン 〜 れいほうシステムとねっけつ商事のアジャイル開発

概要 Producer-Consumerパターン 詳細 生産者はデータを作成するスレッド。 消費者はデータを利用するスレッド。 生産者、消費者はどちらも1〜N存在します。 両者の間に橋渡し役を用意します。 生産者と消費者が1対1の場合はPipeパターンとも呼びます。 サン…

Template Methodパターンを適用したが,各継承クラスの類似度が高い場合にメタプログラミングにより重複をなくす

臭い名 Template Methodパターンの継承クラスの重複 臭い英名 Duplicated Template Method Child. リファクタリング名 メタプログラミングによる重複の除去 リファクタリング英名 Apply meta programming to remove duplicated code. 改善理由 Template Meth…

backborn.js

概要 JavaScriptのMVCフレームワークbackborn.jsについて 詳細 設定 項目 内容 backbone-rails導入 http://d.hatena.ne.jp/tbpg/20130829/1377783986 backbone-railsサンプルページの作成 http://d.hatena.ne.jp/tbpg/20130829/1377786275 underscore.jsのwr…

backborn.js | underscore.jsのwrapを利用してフック付きのViewを作成し、フラッシュメッセージを実装する

概要 underscore.jsのwrapを利用してフック付きのViewを作成する 詳細 underscore.jsのwrapを利用してフック付きのViewを作成します。 複数画面共通の処理や、開発用のデバッグトレースの出力、 フラッシュメッセージの実装などに利用可能。 サンプル フック…

Ruby on Rails | Rails+MiniTestでカスタムマッチャーを作成する

概要 Rails+MiniTestでカスタムマッチャーを作成する 内容 Rails+MiniTestでカスタムマッチャーを作成します。 手順 Gemfileに下記を追加 gem "minitest-matchers", "~> 1.3.0" サンプル 仕様 ・任意のモデルの内容を検証する ・指定したハッシュのキーで、…

Ruby | metric_fu | 特定の箇所のコードの臭いを無視したい場合 〜 臭いものには蓋をする

概要 特定の箇所のコードの臭いを無視したい場合 詳細 特定の箇所のコードの臭いを無視したい場合について。 metric_fuはコードのメトリクス分析をしてくれる便利なツールですが、事情つきで 臭いを放置したい場合があります。 しかし、そのままにしておくと…

Ruby | RDocでドキュメントコメントの一部を出力対象外にする

概要 RDocでドキュメントコメントの一部を出力対象外にする 詳細 RDocでドキュメントコメントの一部を出力対象外にします。 メソッドヘッダーに記載はしておきたいが、APIドキュメントには含めたくないような 内容がある場合に出力対象外としたいです。その…

peopleware | 人材を揃える

概要 人材を揃える 人材の選び方について 書籍 標準的な人材を採用し、標準基底に準じて作業させることを重視してはいけない。 優秀な技術者は標準的ではなく、標準基底にはめ込むと生産性を落とす。 人材の育成、規定・標準化等などによる生産性向上分より…

Capybara | Capybaraでブラウザ標準ダイアログを操作する

概要 Capybaraでブラウザ標準ダイアログを操作する方法 内容 Capybaraでブラウザ標準ダイアログを操作する方法について。 下記コマンドで対応可能。 ただし、下記はドライバーがSelenium時のみ利用可能のため Poltergeistでは動作しない。 ブラウザ起動有・…

マルチスレッドデザインパターン | Balking 〜勇者はメタルスライムとだけ戦います

概要 Balking 詳細 Balking=立ち止まる、躊躇する、引き返すの位。野球のボークもこの単語。 実行されると困る条件の場合、実行せず処理の手前で実行を中止する。 実行可能な条件の際に実行するGuarded Suspentionパターンと反対の発想。 Guarded Suspentio…

studistory | イテレーション2 | TODO終了用Subiime Text2 Plugin

概要 TODO終了用Subiime Text2 Plugin 内容 TODO終了用Subiime Text2 Pluginを作成します。 仕様 下記フォーマットの作業開始済みTODOがあったとして、終了Pluginを実行すると - title,summary,estimate,2013/09/15 23:45:46,,下記のようになる。 - title,su…

studistory | イテレーション2 | TODO開始用Subiime Text2 Plugin

概要 TODO開始用Subiime Text2 Plugin 内容 TODO開始用Subiime Text2 Pluginを作成します。 仕様 下記フォーマットのTODOがあったとして、開始Pluginを実行すると - title,summary,estimate,,,下記のようになる。 - title,summary,estimate,2013/09/15 23:45…

studistory | イテレーション2 | TODO追加用 Sublime Text2 スニペット

概要 TODO追加用 Sublime Text2 スニペット 内容 TODO追加用 Sublime Text2 スニペット 仕様 下記フォーマットのTODO追加用スニペットを作成する。 - title,summary,estimate,,, スニペット <snippet> <content></content> <tabTrigger>todo</tabTrigger> <scope>source.yaml</scope> </snippet>

マルチスレッドデザインパターン | Guarded Suspention

概要 Guarded Suspention 詳細 スレッドを待たせてインスタンスの安全性を確保するパターン。 別名guarded wait,spin lock。 サンプル仕様 クライアントとサーバーがキューを利用してリクエストをやりとりする。 クライアントは0.0〜0.9秒に1回キューへリク…