選択ソートを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フィールドにインデックスが定義されていてもテーブル…

DB基礎知識

RDBMS リレーショナルデータベースを管理するためのソフトウェアの総称である。リレーショナルデータベースのデータの2次元的広がりを効率的に扱うために用いられる。RDBMSは大きく分けて,(1)SQL文の解釈などを実行する部分と,(2)ディスク・アクセスなどを…

Laravel基礎知識

Laravelとは Laravel は、MVCのWebアプリケーション開発用の無料・オープンソースのPHPで書かれたWebアプリケーションフレームワークである。2011年に初版がリリースされた。 MVCフレームワーク Laravelは、MVCフレームワークを採用している。アプリケーショ…

phpのmigrationに時間がかかった件

$ php artisan make:migration [テーブル名] $ php artisan migrate上記の2番目のコマンドを実行するとエラーが発生して、解決するまでにかなりの時間を要した。 [xxxx@localhost:forum]$ php artisan migrate Illuminate\Database\QueryException : SQLSTAT…

TCP/IP

TCP/IP TCP/IPという言葉は、TCPとIPという2つのプロトコルだけではなく、IPを利用したりIPで通信したりするときに必要となる多くのプロトコル群の総称として使われる。TCP/IPをインターネットプロトコルスイートと呼ぶこともある。これは、インターネット…

OSI参照モデルについて

パケット通信 データをパケット(ネットワークを流れるひとかたまりのデータ)とよばれる単位に分割し送受信を行うもの通信方式のこと。 プロトコルの標準化 かつて、各メーカーは独自のネットワークアーキテクチャ、プロトコルを使用していたが、異なるメーカ…

プログラミング言語の種類

プログラミング言語 プログラミング言語とは、計算機に対して動作手順、動作方法、動作内容などを適切に指示するために用いられる、人工的に構成された言語体系のことである。計算機は、機械語と呼ばれる中央処理装置が直接解釈できる命令を実行することによ…

アルゴリズム入門

アルゴリズムとは あることを達成するための手順のこと。コンピュータの世界では、データ処理、数値処理、組み合わせ計算、シミュレーションなどの問題を解決するための手順をアルゴリズムと呼ぶ。どのアルゴリズムを選択するかによって計算時間が大きく変化…

~/.vimrc 初期設定

syntax on set tabstop=4 set autoindent set expandtab set shiftwidth=4 set fileencodings=utf-8 set fileformat=unix set nocompatible set whichwrap=b,s,h,l,<,>,[,] set backspace=indent,eol,start set scrolloff=5 set mouse=a set ttymouse=xterm2…

Screen

screenとは 1つのターミナル内で、仮想的に複数の端末を起動することを可能にするアプリケーションのこと。 ~/.screenrcの設定 # ~/.screenrc # 文字コード設定 defutf8 on defencoding utf8 encoding utf8 utf8 # screen起動時のメッセージをoff startup_me…

AWS関連

AWS AWS(Amazon Web Services)とは、Amazon.comにより提供されているクラウドコンピューティングサービスである。クラウドコンピューティングは、インターネットなどのコンピュータネットワークを経由して、コンピュータ資源をサービスの形で提供する利用形…

システム開発の流れ

システム開発とは 業務を効率的に改善したり、従来の手法では出来なかったことを実現するためにプログラムを組んでシステムを作り上げること。 システム開発の流れ 開発プロセスの基本を学ぶ | 日経 xTECH(クロステック) 要件定義 要件定義とは、利用者が…