MW211 EXIT

devlog
Web画面設計/あるある(1)プルダウンのボタン化
2014年07月11日
ボタンを押す都度ボタン内容を変更することにより、
プルダウンメニューと同等のUIを実現できたと思ったが…。

…submitのタイミングがわからない。

ボタンが変わる都度submitしてたのでは無駄な画面更新が頻発する。
しかし、どこでボタンを確定したかはわからない(変化が止まったのを検知する?)。
となると、別途「確定」ボタンが…。
これでは本末転倒。
ボタンを変更しただけでは確定されないのでは意味がない。

プルダウンメニューはあなどれない。
分類:設計
設計/型大全
2014年07月02日
┌──────────┬───────────────┬───────────┐
│char_t              │character                     │文字( 8ビット文字)    │
│char                │character                     │                      │
├──────────┼───────────────┼───────────┤
│string              │character string              │文字列                │
└──────────┴───────────────┴───────────┘
┌──────────┬───────────────┬───────────┐
│numeric             │numeric                       │数値(小数)            │
├──────────┼───────────────┼───────────┤
│decimal             │decimal                       │小数                  │
└──────────┴───────────────┴───────────┘
┌──────────┬───────────────┬───────────┐
│short               │short integer                 │短精度整数            │
│signed short        │signed short integer          │符号あり短精度整数    │
│unsigned short      │unsigned short integer        │符号なし短精度整数    │
├──────────┼───────────────┼───────────┤
│int                 │integer                       │整数                  │
│signed int          │signed integer                │符号あり整数          │
│unsigned int        │unsigned integer              │符号なし整数          │
├──────────┼───────────────┼───────────┤
│long                │long integer                  │長精度整数            │
│signed long         │signed long integer           │符号あり長精度整数    │
│unsigned long       │unsigned long integer         │符号なし長精度整数    │
├──────────┼───────────────┼───────────┤
│long long           │double long integer           │倍長精度整数          │
│signed long long    │signed double long integer    │符号あり倍長精度整数  │
│unsigned long long  │unsigned double long integer  │符号なし倍長精度整数  │
└──────────┴───────────────┴───────────┘
┌──────────┬───────────────┬───────────┐
│int8_t              │signed 8-byte integer         │符号あり 8ビット整数  │
│signed char         │signed character              │(符号あり文字)        │
├──────────┼───────────────┼───────────┤
│uint8_t             │unsigned 8-byte integer       │符号なし 8ビット整数  │
│unsigned char       │unsigned character            │(符号なし文字)        │
│byte                │byte                          │( 1バイト文字)        │
├──────────┼───────────────┼───────────┤
│int16_t             │signed 16-byte integer        │符号あり16ビット整数  │
│(signed short)      │                              │                      │
│(signed int)        │                              │                      │
├──────────┼───────────────┼───────────┤
│uint16_t            │unsigned 16-byte integer      │符号なし16ビット整数  │
│word                │word                          │( 2バイト文字(2×1))  │
│(unsigned short)    │                              │                      │
│(unsigned int)      │                              │                      │
├──────────┼───────────────┼───────────┤
│int32_t             │signed 32-byte integer        │符号あり32ビット整数  │
│(signed int)        │                              │                      │
│(signed long)       │                              │                      │
├──────────┼───────────────┼───────────┤
│uint32_t            │unsigned 32-byte integer      │符号なし32ビット整数  │
│dword               │double word                   │( 4バイト文字(2×2))  │
│(unsigned int)      │                              │                      │
│(unsigned long)     │                              │                      │
├──────────┼───────────────┼───────────┤
│int64_t             │signed 64-byte integer        │符号あり64ビット整数  │
│(signed long)       │                              │                      │
│(signed long long)  │                              │                      │
├──────────┼───────────────┼───────────┤
│uint64_t            │unsigned 64-byte integer      │符号なし64ビット整数  │
│qword               │quadruple word                │( 8バイト文字(2×4))  │
│(unsigned long long)│                              │                      │
│(unsigned long)     │                              │                      │
├──────────┼───────────────┼───────────┤
│float32_t           │32-byte floating point number │32ビット浮動小数点数  │
│float               │floating point number         │短精度浮動小数点数    │
├──────────┼───────────────┼───────────┤
│float64_t           │64-byte floating point number │64ビット浮動小数点数  │
│double              │double floating point number  │倍精度浮動小数点数    │
└──────────┴───────────────┴───────────┘
分類:設計
設計/連番をグループ番号と枝番に変換
2014年07月01日
一定の周期でグループ化されている連番から、グループ番号と枝番を算出する方法。
┌──────────────────────────────────────┐
│                        Y座標                                               │
│      ┌─┬─┬─┬─┐                                                    │
│      │ 1│ 2│ 3│ 4│    1                                               │
│      ├─┼─┼─┼─┤                                                    │
│      │ 5│ 6│ 7│ 8│    2                                               │
│      └─┴─┴─┴─┘                                                    │
│ X座標   1   2   3   4                                                      │
└──────────────────────────────────────┘
例えば、上記の場合「7」は「2-3」(Y-X)みたいな感じに変換する方法。

単純に以下のようにやってしまうと、剰余がない場合にずれてしまう。
┌──────────────────────────────────────┐
│グループ番号 = (値 / グループ単位) + 1;  …商(端数切捨)                     │
│        枝番 = 値 % グループ単位;        …剰余                             │
└──────────────────────────────────────┘
上記の例でいえば、「8」は「2-0」ではなく「3-0」になってしまう。

よって、以下のように「-1」して0オリジンにしてから計算しなければならない。
┌──────────────────────────────────────┐
│                        商                                                  │
│      ┌─┬─┬─┬─┐                                                    │
│      │ 0│ 1│ 2│ 3│ 0                                                  │
│      ├─┼─┼─┼─┤                                                    │
│      │ 4│ 5│ 6│ 7│ 1                                                  │
│      └─┴─┴─┴─┘                                                    │
│  剰余   0   1   2   3                                                      │
└──────────────────────────────────────┘
つまり、以下のような感じになる。
┌──────────────────────────────────────┐
│グループ番号 = ((値 - 1) / グループ単位) + 1;  …商(端数切捨)               │
│        枝番 = ((値 - 1) % グループ単位) + 1;  …剰余                       │
└──────────────────────────────────────┘
注意が必要だ。
分類:設計
設計/ソフトウェア開発手法
2014年06月09日
代表的なソフトウェア開発手法をまとめてみた。

【ソフトウェア開発手法】
  ウォーターフォール型                        …  管理型一方通行開発
  反復型
    プロトタイプ型                            …  管理型先出反復開発
    スパイラル型                              …  管理型反復開発
    アジャイルソフトウェア開発(バザール方式)  …  自由型反復開発
      エクストリーム・プログラミング(XP)

【プログラミング手法】
  構造化プログラミング
  オブジェクト指向プログラミング
分類:設計
設計/UIの違い
2014年05月19日
【ボタンの配置】
┌──────────┬───────────────────────────┐
│┌───┐┌───┐│Microsoft(Windows,Office)                             │
││ はい ││いいえ││                                                      │
│└───┘└───┘│                                                      │
├──────────┼───────────────────────────┤
│┌───┐┌───┐│Apple(Mac,iPhone)                                     │
││いいえ││ はい ││Web系(=「戻る/進む」)                               │
│└───┘└───┘│                                                      │
└──────────┴───────────────────────────┘
────────────────────────────────────────
【メニューバーの配置】
┌──────────┬───────────────────────────┐
│┌────────┐│Microsoft Windows                                     │
││                ││                                                      │
││                ││                                                      │
│├────────┤│                                                      │
││メニューバー    ││                                                      │
│└────────┘│                                                      │
├──────────┼───────────────────────────┤
│┌────────┐│Linux                                                 │
││メニューバー    ││Apple(Mac)                                            │
│├────────┤│ブラウザ                                              │
││                ││Microsoft Office                                      │
││                ││                                                      │
│└────────┘│                                                      │
└──────────┴───────────────────────────┘
────────────────────────────────────────
分類:設計
設計/隠し情報とAjax
2014年04月20日
Ajaxでこっそり読み込み、非表示(display:none)にしておく。

このデータは、ソース上には見えてこない。

非表示なので、画面上にも見えてこない。

上手いこと隠蔽したと思ったけど、
FirefoxのFirebugであっさり見破られてしまうのであった。

だから、ボタンを押すまで結果がわからないで欲しい情報は
押した瞬間にAjaxで読み込むのがベストで
事前に読み込んで隠しておくということは見破られますよということです。
分類:設計
設計/md5によるパスワード隠蔽
2014年04月18日
md5で変換(PHPでは「md5()」)すると、不可逆変換なので、元の値が類推できない。
この特性を使って、パスワードをmd5変換後の値で管理し、
万が一それが流出してもパスワードを読み取られないようにする対策がある。
#照合は変換後の値で同一かを判定する
  変換前の値を知らないと変換後の値を生成できないという寸法

但し、そのまま変換してしまうと、変換表を使って逆算できてしまう。
#想定される頻出の文字列を実際に変換してみて以下のような変換表がつくれる。
  ┌────┬────────────────┐
  │ 変換前 │             変換後             │
  ├────┼────────────────┤
  │pass    │1a1dc91c907325c69271ddf0c944bc72│
  ├────┼────────────────┤
  │passwd  │76a2173be6393254e72ffa4d6df1030a│
  ├────┼────────────────┤
  │password│5f4dcc3b5aa765d61d8327deb882cf99│
  ├────┼────────────────┤
  │admin   │21232f297a57a5a743894a0e4a801fc3│
  ├────┼────────────────┤
  │abc     │900150983cd24fb0d6963f7d28e17f72│
  ├────┼────────────────┤
  │123     │202cb962ac59075b964b07152d234b70│
  └────┴────────────────┘
「1a1dc91c907325c69271ddf0c944bc72」を入手した場合は、元は「pass」と類推できる。
また、隣の人と同じ変換後の値であれば、元も同じだったと類推できる。

ということで、ユーザIDなどの一意な情報を組み合わせて(文字列結合)、
変換すればセキュリティが高まるだろう。

また、「ユーザID+パスワード」だけだと類推されてしまう可能性があるので
「ユーザID+パスワード+適当な文字列」とかにすれば、もっとよい。
分類:設計
設計/ドキュメントのフォルダ構成
2014年03月30日
  こんな感じか。(ひとつの案)
┌──────────────────────────────────────┐
│ドキュメント                                                                │
│├仕様書                                                                    │
│││・基本仕様書                                        ※外部向け  ※最新版│
│││・概要仕様書                                                    ※最新版│
│││・定数定義書                                                    ※最新版│
│││・電文仕様書                                                    ※最新版│
│││・共有メモリ定義書                                              ※最新版│
│││・ファイル定義書                                                ※最新版│
│││・共通関数仕様書                                                ※最新版│
│││・画面仕様書                                        ※外部向け  ※最新版│
│││・入力制限仕様書                                                ※最新版│
│││・実行環境定義書  #フォルダ構成も含む                          ※最新版│
│││・著作権定義書                                                  ※最新版│
││├データベース定義書                                                      │
│││  ・テーブル定義書  #ER図も含む                                ※最新版│
│││  ・ビュー定義書                                                ※最新版│
│││  ・トリガ関数仕様書                                            ※最新版│
││├詳細設計書                                                              │
│││  ・●●詳細設計書                                  ※非共有    ※最新版│
││├01初回開発                                                              │
││││・基本仕様書(初回)                                ※外部向け          │
││││・概要仕様書(初回)                                                    │
│││└詳細設計書                                                            │
│││    ・●●詳細設計書(初回)                          ※非共有            │
│││    ・単体評価項目&成績書                          ※非共有            │
││└02(改造プロジェクト名)                                                  │
││  │・改造基本仕様書(改造プロジェクト名)              ※外部向け          │
││  │・改造概要仕様書(改造プロジェクト名)                                  │
││  └改造詳細設計書                                                        │
││      ・●●改造詳細設計書(改造プロジェクト名)        ※非共有            │
││      ・単体評価項目&成績書                          ※非共有            │
│├評価書                                                                    │
││├01初回開発                                                              │
│││・総合評価項目&成績書                                                  │
│││・結合評価項目&成績書                                                  │
││└02(改造プロジェクト名)                                                  │
││    ・総合評価項目&成績書                                                │
││    ・結合評価項目&成績書                                                │
││    ・回帰評価項目&成績書                                                │
│├取扱説明書・手順書                                                        │
││  ・取扱説明書                                        ※外部向け  ※最新版│
││  ・保守手順書                                                    ※最新版│
│└販売促進資料                                                              │
│    ・(パワーポイント資料など)                          ※外部向け          │
└──────────────────────────────────────┘
  以下の三つのレベルに分ける(上流から下流へ、公開性が高いものから低いものへ)
    (a) 外部向け資料        …顧客にほぼ提示可能なもの、「ですます」調で記述
    (b) 内部向け共有資料    …開発者が共有する開発の核となる資料
    (c) 内部向け非共有資料  …担当者のみで閉じた資料、ブラックボックス的なもの
  開発の核となるのは(b)であり、これをもって開発プロジェクト全体の統制をとる。
  個々の担当者はあくまで(b)としての結果を出せばよく、
  その補助資料的な役割としての(c)がある(咄嗟の問い合わせに回答できるように等)。
  顧客向けには(a)を提供することにより、説明責任を果たすことになる。
  一方で、要求の元は顧客からのものなので、(a)が(b)の上流資料にあたることになる。
分類:設計
やることマトリックス
2014年03月29日
やらなきゃならないことに優先度をつけなければならないが、
緊急性はあるけど難易度が高いものに手をつけてしまうと、
他の残作業も積み重なって、総崩れになってしまう恐れがある。

ということで、独自に、以下の二次元分析をしてみた。
┌──────────────────────────────────────┐
│┌───────────────┬───────────────┬→難易度  │
││すぐやる                      │やれるように調整する          │   (高)   │
││・‥‥‥‥                    │・‥‥‥‥                    │          │
││・‥‥‥‥                    │・‥‥‥‥                    │          │
│├───────────────┼───────────────┤          │
││余裕がある時にやる            │やらないもしくは暇な時にやる  │          │
││・‥‥‥‥                    │・‥‥‥‥                    │          │
││・‥‥‥‥                    │・‥‥‥‥                    │          │
│├───────────────┴───────────────┘          │
│↓                                                                          │
│緊急性(低)                                                                  │
└──────────────────────────────────────┘
さっさとやってしまえて、実際にさっさとやった方が喜ばれるものから
手をつけてしまえばよい。
なぜなら、調整とか不要でボトルネックなく解決できるものだからら。
で、同じ乗りでやってしまおうと思えばやれるんだけど、
緊急性が低いものについてはぐっとこらえて後回しにしてしまう
(ここで優先度を見失ってはいけない)。
難易度の高いものについては、客観的にすぐの対応は難しいのだから
援軍要請や引き伸ばし工作など別の観点から攻めた上で、
環境がしっかり整った段階で始めるのがよい。
で、意外に差がつくのが、緊急性の低いものへの対応。軽視しない方がよい。
難易度に関わらず、暇をみつけて着実に解決しておくべきだ。
スキルアップおよび今後の予防につながるものだ。
分類:設計
設計/バージョン表記法
2014年03月28日
以下の三つの階層でバージョンを管理するのが一般的である。
┌─────────────┬────────────────────────┐
│(1) メジャーバージョン    │大規模な仕様の変更によりバージョンアップ        │
├─────────────┼────────────────────────┤
│(2) マイナーバージョン    │中規模な仕様の変更によりバージョンアップ        │
│                          ├────────────────────────┤
├─────────────┤小規模な仕様の変更によりバージョンアップ        │
│(3) メンテナンスバージョン├────────────────────────┤
│                          │バグの修正によりバージョンアップ                │
└─────────────┴────────────────────────┘
表記方法としては以下がある

【ピリオド二つ版】例:Ver.1.2.3
  ・1の部分…メジャーバージョン
  ・2の部分…マイナーバージョン
  ・3の部分…メンテナンスバージョン

【ピリオド一つ版】例:Ver.1.02a
  ・1の部分…メジャーバージョン
  ・2の部分…マイナーバージョン
  ・aの部分…メンテナンスバージョン

・アルファ版の場合は、末尾に「A」をつけたりする(「Ver.1.2.3A」)。
  ベータ版は「B」(クローズドベータ版は「CB」、オープンベータ版は「OB」)、
  リリース候補版は「RC」をつけるようだ。
  第一期リリース候補版の場合は「RC1」、第二期は「RC2」のように、
  さらに末尾に数字が付く場合もある。

・場面によってはメンテナンスバージョンについては省略される場合もある。

・初回バージョンは「1.0」で、それよりも前のドラフト版は「0.1」などが使われる。

・キャッシュが保持されるJavaScript外部ファイルやCSS外部ファイルについては
  参照URLの末尾に「?1.0」などと敢えてバージョンを埋め込んだ
  GETパラメータを付加することにより、
  画面リロードによるキャッシュ放棄をせずとも、
  バージョンアップ後のソースを強制的に読み込ませる手法がある。
分類:設計
前へ 1 2 3 4 5 6 7 8 次へ