プログラム全般 / アルゴリズム

データ型を変えたことによる影響について考える

■ はじめに メソッド・クラスなどのI/Fでデータ型を変えた場合に コンパイルエラー以外で、どのような影響が発生する 【1】 実数(double・float) => 整数(int) に変えた場合 1-1)割り算で小数が切り捨てられる 例:C# 【修正前】 public double Wid…

画像処理 ~ 補間方法について ~

■ はじめに * 以下の関連記事の続き。今回は、補間方法。 画像処理 ~ 幾何補正について ~ https://blogs.yahoo.co.jp/dk521123/38073336.html ■ 補間 / 内挿(ないそう) /再配列(リサンプリング) `#`補間方法略 1最近傍補間(ニアレストネイバー)NN法(N…

画像処理 ~ 幾何補正について ~

■ 幾何補正(geometric correction) `#`補正方法`必要な最小データ数`備考 1ヘルマート変換(一次等角変換、相似変換)2点Helmert Transformation 22次元アフィン変換3点affine transformations 32次元擬似アフィン変換(共一次変換)4点pseudo-affine transfo…

【IT英語】クラス名などで、-er が付く単語

■ Provider * 他のプログラムにデータや機能など何かを提供・供給するために作られたクラスのこと http://e-words.jp/w/E38397E383ADE38390E382A4E38380.html ■ Helper * そのまんま。補助するクラス。 ■ Handler [1] プログラム中で関数やサブルーチンなど…

【IT英語】IT / プログラム / 数学 で使用する英単語

■ 画像・図形 画像・図形操作 `日本語`英語備考 拡大/縮小Scaling (up/down) or Zooming (in/out) 回転Rotation 平行移動Translation 剪断(せん断)Shear 色調 `日本語`英語備考 明るさBrightness 彩度Saturation 色相Hue(ヒュゥー) https://www.webcolor…

ビッグエンディアン / リトルエンディアン

■ エンディアン (Endian) * バイトオーダー(byte order) * データをバイト単位で見たときの並べ方 ■ ビッグエンディアン (Big Endian) * 最上位のバイトから下位に向けて順に記録・伝送する方式 例 4バイトのデータ「00000001 00000010 00000100 00001000」…

スマートフォン / タブレット に対応したサイト構築で気を付ける事項

■ はじめに PC だけでなく、スマートフォン / タブレット に対応したサイト構築で 起こった問題点について、メモをする。 【1】 数字の羅列が電話番号として認識 * スマートフォン / タブレット(iPad)だと、電話番号として認識してしまい、リンクになってし…

【非同期】非同期に関する用語

■ はじめに 非同期に関する用語について、まとめる 目次 【1】排他制御の仕組み 1)セマフォ(semaphore) 2)ラッチ(Latch) 3)ミューテックス (mutex) 【2】その他 1)シグナル(Signal) 2)クリティカル セクション (critical section) 3)ア…

【アルゴリズム】 シンプレックス法 / 動的計画法 / メモ化再帰 / 分割統治法

■ 用語 シンプレックス法 / 単体法 (simplex method) * 線形計画問題(LP:Linear Programming)を解くためのアルゴリズム 解説動画 動的計画法(Dynamic Programming, DP) * メモ化 + 分割統治法 分割統治法(Divide-and-Conquer method, conquer = 征服する) …

浮動小数点と誤差

はじめに * Excel、Excelマクロ、JavaScriptなどの小数で使用すされている浮動小数で誤差が出て、 困ったのでメモ。 浮動小数点(floating-point number)とは? * コンピューターで小数を扱う方式のひとつ 利点 * 扱える範囲が広い 欠点 * 計算時の誤差は生じ…

【アルゴリズム】ナップサック問題 [1] ~ 貪欲法 ~

■ ナップサック問題(knapsack problem) * 『価値と重量が決まっている複数の品物を、耐荷重が決まっているナップサックに詰め込んだ場合、 その耐荷重を超えないように詰め込める品物の価値の合計が最大になる組み合わせを求める』という問題 * 詳しくは以…

【アルゴリズム】モンテカルロ法

■ モンテカルロ法(Monte Carlo method)とは... * 「乱数」を用いてシミュレーションを何度も繰り返すことにより、「近似解」を求める手法 ■ 使用例 例1:円周率の計算 => 正方形内に乱数を用いて多数の点を一様に打ち、円の中にある点の個数によって求め、 …

【プログラム】素数を求める ~エラトステネスのふるい~

■ 素数(Initial number)とは * 1より大きい整数の内、1と自分自身以外の整数では割り切れないような整数をいう(1は含まない) ■ サンプル 例1:普通に求める SampleInitialNumber1.java public class SampleInitialNumber1 { public static void main(String…

【プログラム】メモリ領域 ~静的領域 / スタック領域 / ヒープ領域 ~

メモリ領域 * プログラムの実行時に利用される記憶領域 1) 静的領域 2) スタック領域(Stack) 3) ヒープ領域(Heap) 静的領域 * 以下の用途で使われる + 外部変数(グローバル変数) + 静的変数(static変数) スタック領域 * 以下の用途で使われる + ローカル変数…

【アルゴリズム】 動的計画法 ~ フィボナッチ数列 を例にして~

■ はじめに http://blogs.yahoo.co.jp/dk521123/34536714.html で再帰を使ったフィボナッチ数列の処理は、同じ処理を何度か呼び出すといった無駄な部分がある 例:再帰処理で、5番目のフィボナッチ数を計算した場合 calculateFibonacci(5) => 3 + 2 | +-> ca…

【プログラム】 再帰処理 ~ 階乗 と フィボナッチ数列 を例にして~

■ 再帰処理(Recursive processing) * 繰り返し処理をスマートに実現するプログラミング・テクニック 勘所 1) 特定の引数(階乗の場合「0」、フィナボッチ数列の場合「先頭は0、次は1」)の場合は戻り値を確定しておく 2) 1) でない場合は、引数の値を変え…

【プログラム】リファクタリング

■ はじめに リファクタリング * プログラムの外部仕様を変えずに、内部構造を分かりやすく変更すること ■ Duplicate Code (重複したコード) 解決方法 * Extract Method => 重複した処理をメソッドに抽出する ■ Long Parameter List (長い引数リスト) 解決方…

【プログラム】良いプログラムを書くために ~ 有名な格言 ~

■ はじめに プログラムの有名な格言を纏める 目次 【1】略語 1)KISS (Keep it simple, stupid) 2)DRY (Don't Repeat Yourself) 3)YAGNI (ヤグニ。You Aren't Gonna to Need It.) 4)TSTTCPW (The Simplest Thing That Could Possibly Work) 【2】UN…

【プログラム】コメント文があった方がいいプログラム・パターンを考えてみる

■ はじめに 「コメントを書く派」と「コメントを書かない派」がいる。 個人的には、コメントは書いた方がいいと思うが、「コメントを書かない方がいい派」を言い分は 以下のような意見を聞いた。 「コメントを書かない方がいい派」の意見 [1] 可読性のあるプ…

【Web開発】Web開発時での注意

全く動作しないと思った場合 * 現在のWEBシステムではJavaScriptはほぼ必須である。 全く動作しないと思った場合、JavaScriptがオフっていないかを確認する ⇒実際、これでミスったので...

【プログラム】良いプログラムを書くために... ~ コーディング編 ~

■ 変数 スコープは狭くする 以下のように、変数のスコープはできるだけ狭くするといい。 ブロック内のローカル変数 => メソッドのローカル変数 => private 変数 => protected変数 => public変数 メリット * 一度に注意しておくべき事項が減り、理解の助けに…

【プログラム】正規表現 全般

【1】予備知識 エスケープが必要な文字 \ * + . ? { } ( ) [ ] ^ $ - | 上記の文字の前に「\」を付ける 詳細は以下を参照。 http://www.javadrive.jp/regex/ini/index4.html 【2】サンプル * まず、感じをつかむための例を載せる No パターン 概要 備考 01…