Tbpgr Blog

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

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

アルゴリズム | A*探索(A-Star探索)

概要 A*探索(A-Star探索) 内容 ゴールが分かっている場合にゴールまでの推定値を利用して最短経路を解く。 推定距離は実際の値と同じかそれより小さい必要がある。 典型的な例としてはゴールまで何も障害物が無いと想定して、直線距離を推定値にする。 ア…

peopleware | オフィス環境と生産性

概要 オフィス環境と生産性 詳細 書籍 オフィス環境と生産性について、各種調査結果のエビデンスなどを 元にした解説等が展開されている。 ・広く、作業に集中できる仕切り付きのオフィス環境の方が生産性が高い。 ・オフィス環境を節約する微々たるコストよ…

リーンソフトウェア開発 | ポカヨケ

概要 ポカヨケ 詳細 ミスを抑止する仕組みを作ること。 ミスの許されない重要な装置のボタンが左右2つ同時に押さないと動作しないようになっていたりなど。 システム開発に置き換えると、手動タスクの自動化がある。 手動タスクは手順の数だけミスが発生する…

Ruby on Rails | metric_fu | 設定

概要 metric_fuの各種項目設定について 詳細 まずは.metricsファイルを作成。その中に個別のメトリクスツールの設定ファイルへの参照を設定します。 例はCaneの設定ファイルの設定コードです。 .metrics MetricFu::Configuration.run do |config| config.con…

Ruby | 文字列のプレースホルダーにハッシュを設定する

概要 文字列のプレースホルダーにハッシュを設定する 詳細 文字列のプレースホルダーにハッシュを設定します。 サンプルコード # encoding: utf-8 hash = {hage: "hage", hige: "hige", hoge: "hoge"} message = "%{hage}, %{hige} , %{hoge}" % hash print …

リーンソフトウェア開発 | あんどん

概要 あんどん 詳細 問題の発生をいち早く知らせ・解決するための仕組み。 行灯が由来。システム開発においてはCI時に発生したテストのエラーを知らるメール等が あんどんにあたる。こだわりの現場(楽しむ現場?)ではCI失敗時に物理的な パトランプやそれ…

リーンソフトウェア開発 | かんばん

概要 かんばん 詳細 作業を可視化するツール。物理的な場合は、壁やホワイトボードに区切り線を設けて 状態ごとのタスク(ストーリー)を付箋などで貼り付けて 可視化する。PCで利用する際はJIRA+GreenHopper等のソフトを利用する。最もシンプルな分類として…

peopleware

概要 書籍peoplewareについて。 キーとなる概念をまとめると共に、現実のプロジェクトに置き換えて 活かす方法や現状分析を行います。 詳細 項目 内容 人材を活用する http://d.hatena.ne.jp/tbpg/20130911/1378913820 オフィス環境と生産性 http://d.hatena…

peopleware | 人材を活用する

概要 人材を活用する トラブルの要因は技術よりも人間が大多数 書籍 技術的な問題がプロジェクトの失敗の主要因となることは少なく、 人間的な問題の方が主要因となる。 にも関わらず失敗の要因を技術のせいにしがちである。 現実 過去参加してきたプロジェ…

アルゴリズム | 幅優先探索(breadth first search=BFS)

概要 幅優先探索(breadth first search) 内容 幅優先探索は木やグラフを探索するためのアルゴリズム。 アルゴリズムは根から始まり、隣接ノードから探索する。 全ての隣接ノードを探索し終わったら次の深さのノードを探索する。 別名「横型探索」。 特徴 空…

アルゴリズム | 深さ優先探索(depth first search=DFS)

概要 深さ優先探索(depth first search) 内容 深さ優先探索は木やグラフを探索するためのアルゴリズム。 別名「縦型探索」。以下、処理フロー。 ・開始点を決める ・隣接するノードへ移動 ・ノードがなくなるまで進む ・ノードがなくなったら一つ戻り、未訪…

Ruby on Rails | Capybaraテスト用のDBクリア処理を独自実装する

概要 Capybaraテスト用のDBクリア処理を独自実装する 内容 Capybaraでjsを含むテストを行う際のDBクリア処理を独自実装します。 Capybara+RSPec構成の時はDBCleanerで同様の内容を行ったのですが、 Mini::Test(ActiveSupport::TestCase)の際はDBCleanerが…

studistory | イテレーション1 | 検索処理の実装

概要 検索処理の実装 内容 検索処理を実装します。 仕様 ・年月による検索 ・対象データとなる月ごとの学習履歴データはjson形式の文字列をjavascriptの変数としてファイル生成済み。 該当ファイルをすべてincludeして利用する。イテーション1ではjsファイル…

studistory | イテレーション1 | HTML基本フォーマットの作成

概要 HTML基本フォーマットの作成 内容 HTML基本フォーマットの作成をします。 今後の工程でJavaScriptにより動的にタグを出力する際のテンプレートとなります。 仕様 ・HTML5のタグを利用してマークアップする ・CSSでの見栄え調整は後のイテレーションで行…

studistory | イテレーション1 | TODOフォーマットからJSONへの変換

概要 TODOフォーマットからJSONへの変換 内容 TODOフォーマットからJSONへの変換をします。TODOフォーマット例 20130906_todo.yml title: 2013/09/05 contents: - 準備,日次 作業準備 アクティビティの割り当て メールチェック,0.5,2013/09/06 01:32:20,2013…

studistory | 学習履歴管理ツールstudistoryの要件

概要 学習履歴管理ツール studistoryの要件 前提 ・日々のデータは1日1ファイル単位で下記フォーマットで作成してあるものとする。 下記は入力途中の状態。 各項目はタイトル、要約、作業見積もり(1=30分)、作業開始時間、作業終了時間、作業時間 title: 2…

リーンソフトウェア開発 | デミングの14項目

概要 デミングの14項目:Deming's 14 Points 14項目(和) No Points 1 競争力を保ち・雇用を生み出すために製品とサービスの改良を恒常化する 2 新しい考え方を取り入れること。我々は新たな経済時代にいる。挑戦に目覚め、責任を学び、革新へのリーダーシッ…

リーンソフトウェア開発 | リトルの法則

概要 リトルの法則 詳細 リーンソフトウェア開発では顧客満足を高めるために素早く開発を行う必要がある。 そこでリトルの法則を利用して、開発を改善する。リトルの法則とは待ち行列理論において ・長時間平均化した顧客数L ・長時間平均化した到着率λ ・長…

リーンソフトウェア開発 | バリューストリームマップ

概要 バリューストリームマップ 詳細 バリューストリームマップとはリーン開発・トヨタ式生産方式で利用されている手法であり、 製品・サービスの流れを表す図。 これによって、サービスの全体像への理解を深めたり、ムダを発見し改善するためのたたき台とな…

アルゴリズム | クイックソート

概要 クイックソート 内容 最良計算量および平均計算量はO( n\log n )。 ソート仕様 ・適当な数(ピボットという)を選択する ・ピボットより小さい数を前方、大きい数を後方に移動 ・二分割された各々のデータを、それぞれソートする(再帰) コード quick_…

Ruby on Rails | Railsプラグインの開発時にrakeタスクを作成する方法

概要 Railsプラグインの開発時にrakeタスクを作成する方法 内容 Railsプラグインの開発時にrakeタスクを作成する方法について。 プラグインのプロジェクト内ではなく、プラグインをGemとして利用する側で 使うrakeを想定しています。 作成手順 ・デフォルト…

Ubuntu | ターミナル起動時の表示サイズ・表示位置の指定

概要 ターミナル起動時の表示サイズ・表示位置の指定 詳細 ターミナル起動時の表示サイズ・表示位置の指定します。 geometryオプションで表示位置を指定します。 設定例 gnome-terminal --geometry=80x20+0+0 gnome-terminal --geometry=80x20+0+500 gnome-t…

Ubuntu | OS起動時、自動起動設定してあったターミナルが勝手に最大化される事象への対応

概要 OS起動時、自動起動設定してあったターミナルが勝手に最大化される事象への対応 詳細 OS起動時、自動起動設定してあったターミナルが勝手に最大化される事象への対応について。 対応手順 CompizConfigで下記の設定を行います。 ※CompizConfigがインスト…

アルゴリズム | マージソート

概要 マージソート 内容 データを分割し、それぞれをソート後、結果をマージする。 分割統治法。最悪計算量O(n log n) コード merge_sort.rb # encoding: utf-8 class Array def merge_sort s = self.size return self if s == 1 lesses = self.pop(s >> 1) …

アルゴリズム | 挿入ソート

概要 挿入ソート 内容 整列してある配列に追加要素を適切な場所に挿入すること。 平均計算時間・最悪計算時間がともにO(n2)。 ソート仕様 ・左端から順にN番目の要素をN-1番目までの要素と比較して、自分より小さい値と大きい値の間に挿入する。 コード inse…

アルゴリズム | 選択ソート

概要 選択ソート 内容 最小値を探し、先頭から順に並べていくソート。 O(n2)と低速だが実装が容易。 コード selection_sort.rb class Array def selection_sort max = self.size - 1 (0..max).each do |i| min = i ((i + 1)..max).each do |j| min = j if se…

アルゴリズム | データ構造

概要 データ構造 内容 データ構造について 構造名 概要 リスト・ベクター 追加・削除・検索時のコストが高い。一定容量で領域確保するため任意の要素へのアクセスは早い 連結リスト 前後へのリンク構造を持つため追加・削除時のコストはその前後の要素しか影…

アルゴリズム | バブルソート

概要 バブルソート 内容 基本交換法、隣接交換法ともいう。 最悪計算時間はO(N2)。 ソート仕様 ・左端から順に隣り合う要素を比較し、左の方が大きければ右の要素と入れ替える。 ・右端まで到達したら再度左端から比較を行う。 ・要素数=Nとして、N回の比較…

アルゴリズム

概要 アルゴリズム 内容 探索 項目 URL バイナリサーチ http://d.hatena.ne.jp/tbpg/20130831/1377968008 深さ優先探索 http://d.hatena.ne.jp/tbpg/20130909/1378735858 幅優先探索 http://d.hatena.ne.jp/tbpg/20130910/1378820207 A*探索 http://d.hatena…

アルゴリズム | 冪剰余の計算

概要 冪剰余の計算 内容 冪乗の剰余を計算。 書籍「アルゴリズムを学ぼう」より。 書籍のサンプルはJavaのコードだったが、Rubyで書いてみた。1.オーソドックスに計算 2.a*b mod c = (a mod c) * (a mod c) mod c を利用 3.2の計算中の個別の結果を再利用…