2018-10-01から1ヶ月間の記事一覧

二分探索の実装

二分探索 二分探索やバイナリサーチとは、ソート済み配列に対する探索アルゴリズムの一つである。コンピュータで扱うデータは、多くの場合ある項目によって整列され管理されており、そのような場合はより効率的なアルゴリズムを適用することができる。二分探…

【Perl】for/foreach/whileの使い分け

まずはforeachで書けないか考える まず最初にforeachを使って書けないかを考える。foreachはループを最も簡単に書けるので、foreachで十分なのであれば、foreachを使う。foreachは繰り返しをするための条件を指定することができない。 my @animals = ('Cat',…

番兵法を用いた線形探索の実装

概要 線形探索は、配列の先頭から各要素が目的の値と等しいかどうかを順番に調べる。等しいものが見つかった時点でその位置を返し探索を終了する。末尾まで調べて目的の値が存在しなかった場合はそのことを示す特別な値を返す。アルゴリズムの効率は悪いが、…

探索

探索 探索(英: search)とは、特定の制約条件を満たす物を見つけ出す行動のことである。 探索アルゴリズム 探索アルゴリズムとは、大まかに言えば、問題を入力として、考えられるいくつもの解を評価した後、解を返すアルゴリズムである。まず解くべき問題を…

ラウンドロビンスケジューリングのアルゴリズムをPerlで実装してみた

概要 ラウンドロビン・スケジューリングは、オペレーティングシステムなどにおけるプロセスなどに関するスケジューリング規則のひとつで、単純な部類に分類される一種である。実行可能状態にあるプロセスに、順番にプロセッサを割り当てる。順番に交代する、…

マークアップ言語/JavaScript系概要

マークアップ言語 概要 マークアップ言語とは、文字の並びであるテキストに適当な指示を挿入して文字の形や大きさ、段落、見出しなど文章の構造と体裁を指定するためのコンピュータ用言語である。目印をつける(Markup)というのは、文書の各部分が、どのよ…

sudoの設定ファイルsudoersについて

概要 Linuxでは例えばユーザーの追加や削除やプロセスの管理など、管理者以外が操作するとシステム運用にリスクを伴う。そのため、Linuxシステムにとって重要なコマンドは、rootのような管理者だけが実行できるようにするのが一般的だ。一般ユーザでrootユー…

ジョブ管理システム

ジョブ管理システム 概要 ジョブ管理システムとは、複数のジョブ(プログラム、バッチ処理)の起動や終了を制御したり、ジョブの実行・終了状態の監視・報告などを行うソフトウェアである。「ジョブスケジューラ」、「タスクスケジューラ」とも呼ばれる。な…

逆ポーランド記法で与えられた数式の計算結果を出力するアルゴリズムの実装

逆ポーランド記法 逆ポーランド記法(Reverse Polish Notation, RPN)とは、数式の記述方法で、演算子を被演算子の後に記述する表記法である。日本語では、後置記法とも呼ばれたりする。この記法は、演算の優先順位を指定する括弧が不要な点が特徴のひとつで…

シェルソートをPerlで実装してみた

シェルソート シェルソート(Shellsort)は、in-placeな比較ソートのアルゴリズムの一種である。シェルソートは、バブルソートあるいは挿入ソートの一般化と見なすことができる。ソートの方法は、まず、間隔の離れた要素の組に対してソートを行い、だんだん…

ソートアルゴリズムの安定性

安定ソート 安定ソート(stable sort)とは、ソート(並び替え)のアルゴリズムのうち、同等なデータのソート前の順序が、ソート後も保存されるものをいう。つまり、ソート途中の各状態において、常に順位の位置関係を保っていることをいう。 use strict; us…

選択ソートをPerlで実装してみた

選択ソート 選択ソート(selection sort)は、ソートのアルゴリズムの一つ。配列された要素から、最大値やまたは最小値を探索し配列最後の要素と入れ替えをおこなうこと。最悪計算時間がO(n2)と遅いが、アルゴリズムが単純で実装が容易なため、しばしば用い…

バブルソートをPerlで実装してみた

バブルソート バブルソート (bubble sort) は、ソートのアルゴリズムの一つ。隣り合う要素の大小を比較しながら整列させること。最悪計算時間がO(n2)と遅いが、アルゴリズムが単純で実装が容易なため、また並列処理との親和性が高いことから、しばしば用いら…

挿入ソートをPerlで実装してみた

挿入ソート 挿入ソート(insertion sort)は、ソートのアルゴリズムの一つ。整列してある配列に追加要素を適切な場所に挿入すること。平均計算時間・最悪計算時間がともにO(n2)と遅いが、アルゴリズムが単純で実装が容易なため、しばしば用いられる。安定な…

アジャイル開発の種類

スクラム開発 概要 スクラム開発はアジャイル開発の代表的な手法の一つで、中でも“チームのコミュニケーションを重視した手法”である。ラグビーで両陣が、8名ずつ肩を組んで一つの集団を作り、ぶつかり合う際のフォーメーション「スクラム」が語源。その姿か…

システム開発手法

ウォーターフォールモデル 概要 プロジェクトによって工程の定義に差はあるが、開発プロジェクトを時系列に、「要求定義」「外部設計(概要設計)」「内部設計(詳細設計)」「開発(プログラミング)」「テスト」「運用」などの作業工程(局面、フェーズ)…

分岐予測

分岐予測 分岐予測とは、プログラム実行の流れの中で条件分岐命令が分岐するかしないかを予測することにより、命令パイプラインの効果を可能な限り維持し、性能を高めるためのCPU内の機能である。条件分岐は、分岐せず (not taken) に分岐命令直後に続く命令…

アドネットワーク、アドエクスチェンジ、DSP、SSPの仕組み

アドネットワーク アドネットワークとは 2008年頃から出てきた、広告媒体のWebサイトを多数集めて「広告配信ネットワーク」を形成し、多数のWebサイト上で広告を配信する広告配信手法である。多くのWebサイトを媒体とすることで、全体では多くのトラフィック…

関数型言語

関数型言語 関数型言語とは、関数型プログラミングを基本スタイルとして推奨する機能を持つプログラミング言語、関数型プログラミング言語の略称である。何をもって関数型プログラミングとするか、関数型プログラミングを行っているコミュニティ内でも正確な…

memcachedの分散アルゴリズム

memcashedの分散 memcachedは「分散」キャッシュサーバと言われていますが,サーバ側には「分散」の機能は備わっていない。サーバ側には当連載の第2回,第3回で前坂が紹介したメモリストレージの機能のみが組み込まれており,非常にシンプルな実装となってい…

memcashed,Slab Allocator

memcashed 多くのWebアプリケーションは,RDBMSにデータを格納し,アプリケーションサーバでそのデータを引き出してブラウザ等に表示させている。しかしデータが大量になったり,アクセスが集中すると,RDBMSの負荷があがり,データベースのレスポンスが悪化…

連結リスト

連結リスト 連結リストは、配列のように各要素を連続的に並べることをしない。各要素は、メモリ上に飛び飛びの位置に置かれており、それぞれを何らかの方法で「連結(リンク)」する。 要素が、A→B→C→D のように、先へ先へと連結されていくものを線形リ…

二分木/二分探索木

上記概念図において、○の部分を節(ノード)、線の部分を枝と呼ぶ。この概念図で上下を逆さまにしてみれば、木のような形をしていることが分かる。これが木構造と呼ばれる由来である。ここで、ある節から見て、その1つ下にある節のことを子と呼び、逆に1つ…

データ構造

データ構造 データ構造(data structure)は、計算機科学において、データの集まりをコンピュータの中で効果的に扱うため、一定の形式に系統立てて格納するときの形式のことである。多くのプログラムの設計において、データ構造の選択は主要な問題である。こ…

Rails Command

rails new 指定のディレクトリにRailsアプリケーションのスケルトンを作成するコマンド。 rails server / rails s Railsのサーバーを起動するコマンド。 bundle install (—without 環境名) / bundle bundle install とは、bundlerというgemを使って、Gemfile…

Rails関連用語

DSL(ドメイン駆動言語) ドメイン特化言語(DSL:Domain Specific Language)とは、 ある特定の種類の問題に特化したコンピュータ言語のことである。様々な問題に対応できる汎用的な言語ではない。 IDE 統合開発環境(とうごうかいはつかんきょう)、IDE (Integr…

IDEF1XによるER図の記述

IDEF1X IDEF1Xは,IDEF(Integration Definition)と呼ばれる,システムをさまざまな側面から分析してモデリングを行うための方法の1つで,おもにデータベースの概念設計においてER図を記述する方法としてよく使用される。IDEF1Xでは,ERモデルにおける実体…

DB設計基礎

データベースの設計 データベース設計とは,データベースによってデータを管理できるように,現実の世界を抽象化してデータモデルを作成していく作業である。データモデルはデータベースをどのように構成するかということを定義したものである。優れたデータ…

トランザクション

トランザクション データの追加・更新・削除、SQL 文で言うと「INSERT 文」「UPDATE 文」「DELETE 文」についての処理のまとまりをトランザクションと呼ぶ。上記 3つのデータ操作文は、お互いに関連をもっていて、連続して実行されることにより、意味のある…

SQL文実行の高速化

WHEREの左辺で算術演算子や関数を使わない WHERE句の左辺に算術演算や関数を指定すると,インデックスが使われない。例えば, SELECT NAME FROM CUSTOMERS WHERE SAL - TAX > 1000 とすると,たとえSALフィールドにインデックスが定義されていてもテーブル…