ハッシュ – 簡単すぎる例

ハッシュ関数のイメージを掴むために、簡単な例を考えてみる。

まず、任意の文字列が与えられたとき、文字列中の全ての文字コードを加えた値を返す関数を考える。

この関数を以下のような文字列で実行すると、1文字加えたり入れ替えただけで結果が違ってくるのがわかる。

長い文字列で試してみると、1文字入れ替えると値が変わってくるが、1文字分の足し込むコードが変わるだけなので、大きな変化は期待できない。

この方法で致命的なのは、同種の文字を順序違いで並べても結果が同じになる点。

このやり方は、あまりに単純すぎて使えない。

 

Evernoteでノートが読めなくなった件

症状

Android版のEvernoteで特定のノート(多数)を読もうとしたとき、”このノートをロードできません”とダイアログに表示されて、リロードボタンを押しても反応がない。

当初は検索結果で少し古いファイルで発生していたが、そのファイルを直接読もうとしたときにも同じ症状になった。

PC版のEvernoteアプリでは問題はなく読める。

対処方法

概要

Evernoteのバージョンを7.16から7.15にダウングレードする。

注意点

  • apkファイルのダウンロードができない場合の対応が必要
  • apkファイルのインストールが進まない場合の対処が必要
  • Evernoteが勝手に7.16にアップグレードされるのを抑止する必要がある

手順

apkファイルのダウンロード

Androidのほか様々なアプリケーションの旧バージョンをダウンロードできるuptodownから7.15のapkファイルをダウンロードする。このとき、WiFi接続で作業すること。

Android端末のブラウザからuptodownに飛び、Android→Evernote→V7.15を選択。

トラブルと対応

  • Androidオリジナルのブラウザ、ドルフィンブラウザではダウンロードできなかった
    • オリジナルのブラウザでは”安全な接続が確立できませんでした”と表示されて進まない
    • ドルフィンブラウザでは何の反応もない
  • Chromeを使うことでダウンロードできた

apkファイルからインストール

ブラウザのダウンロード履歴から”evernote-7-15.apk”を選択してインストール。

トラブルと対応

  • apkの内容が表示された後、”次へ”ボタンを押しても反応がなく、次へ進めない
    • “キャンセル”ボタンは機能し、ダウンロード履歴の画面に戻れる
  • 常駐アプリで影響があるものを停止させる
    • 設定→アプリケーションの管理→実行中タブ→関連アプリを選択・停止
    • 今回は”Battery Mix”のみが影響していた

アプリの自動更新を禁止

V7.15をインストール後の同期中には元の通りファイルが読めていたが、同期後にV7.16に自動更新されてしまって元のようにノートが読めなくなってしまった。

これを回避するため、Google Playでアプリの自動更新を禁止する。

  • Google Playのメニューから、設定→アプリの自動更新→アプリの自動更新しない、で自動更新を禁止
  • これで全アプリの自動更新はされないが、通知をonにしておけばアプリごとの確認は可能

Evernoteにログイン・同期

Evernoteにログインすると、自動的にノートが同期される。

 

HTML5 – 大きなテーブルのスクロール

横幅が長いテーブルの表示

セルの内容が連続した長いASCII文字列の場合、それが一つのワードとみなされて改行されず、表が横に伸びて表示が乱れる。

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb cccccccccccccccccccccccccccccccccccccccc
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb cccccccccccccccccccccccccccccccccccccccc
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb cccccccccccccccccccccccccccccccccccccccc

通常の英文の場合は、表示領域の幅に合わせてワード境界で自動改行される。

The rain in Spain stays mainly in the plain Daisy, Daisy, Give me your answer do! Salagadoola mechicka boola bibbidi-bobbidi-boo
The rain in Spain stays mainly in the plain Daisy, Daisy, Give me your answer do! Salagadoola mechicka boola bibbidi-bobbidi-boo
The rain in Spain stays mainly in the plain Daisy, Daisy, Give me your answer do! Salagadoola mechicka boola bibbidi-bobbidi-boo

マルチバイト文字の場合は、各文字がワード扱いになり、任意の位置で自動改行される。

いいいいいいいいいいいいいいいいいいいい ろろろろろろろろろろろろろろろろろろろろ はははははははははははははははははははは
いいいいいいいいいいいいいいいいいいいい ろろろろろろろろろろろろろろろろろろろろ はははははははははははははははははははは
いいいいいいいいいいいいいいいいいいいい ろろろろろろろろろろろろろろろろろろろろ はははははははははははははははははははは

横スクロール

基本形

切れ目のないASCII文字列を画面幅に合わせて横スクロールさせたい場合。

実行例

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb cccccccccccccccccccccccccccccccccccccccc
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb cccccccccccccccccccccccccccccccccccccccc
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb cccccccccccccccccccccccccccccccccccccccc

 

自動改行の抑止

英文やマルチバイト文字列の場合、スクロール表示させようとしても、自動改行されて常に表示領域に収まるように表の幅が調整されるので、スクロールが効かない。

そこで空白(ワード境界)での改行を抑止させると、折り返されずに票の横幅が長くなり、横スクロールの対象となる。

実行例:英文

The rain in Spain stays mainly in the plain Daisy, Daisy, Give me your answer do! Salagadoola mechicka boola bibbidi-bobbidi-boo
The rain in Spain stays mainly in the plain Daisy, Daisy, Give me your answer do! Salagadoola mechicka boola bibbidi-bobbidi-boo
The rain in Spain stays mainly in the plain Daisy, Daisy, Give me your answer do! Salagadoola mechicka boola bibbidi-bobbidi-boo

 

実行例:和文

いいいいいいいいいいいいいいいいいいいい ろろろろろろろろろろろろろろろろろろろろ はははははははははははははははははははは
いいいいいいいいいいいいいいいいいいいい ろろろろろろろろろろろろろろろろろろろろ はははははははははははははははははははは
いいいいいいいいいいいいいいいいいいいい ろろろろろろろろろろろろろろろろろろろろ はははははははははははははははははははは

 

表幅の固定

自動改行の抑止では、一文が一行となって表の幅が広すぎる。適当なところで折り返したい場合には、表やセルの幅を指定するとよい。

幅指定の際は、ピクセルやセンチ/インチなどのデバイス依存単位より、emなどの文字相当の単位がよい。

実行例:英文

The rain in Spain stays mainly in the plain Daisy, Daisy, Give me your answer do! Salagadoola mechicka boola bibbidi-bobbidi-boo
The rain in Spain stays mainly in the plain Daisy, Daisy, Give me your answer do! Salagadoola mechicka boola bibbidi-bobbidi-boo
The rain in Spain stays mainly in the plain Daisy, Daisy, Give me your answer do! Salagadoola mechicka boola bibbidi-bobbidi-boo

 

実行例:和文

いいいいいいいいいいいいいいいいいいいい ろろろろろろろろろろろろろろろろろろろろ はははははははははははははははははははは
いいいいいいいいいいいいいいいいいいいい ろろろろろろろろろろろろろろろろろろろろ はははははははははははははははははははは
いいいいいいいいいいいいいいいいいいいい ろろろろろろろろろろろろろろろろろろろろ はははははははははははははははははははは

幅と高さの指定

幅と高さをピクセル単位で指定した例。

 

実行例

aaaaaaaaaaaaaaa bbbbbbbbbbbbbbb ccccccccccccccc ddddddddddddddd eeeeeeeeeeeeeee
aaaaaaaaaaaaaaa bbbbbbbbbbbbbbb ccccccccccccccc ddddddddddddddd eeeeeeeeeeeeeee
aaaaaaaaaaaaaaa bbbbbbbbbbbbbbb ccccccccccccccc ddddddddddddddd eeeeeeeeeeeeeee
aaaaaaaaaaaaaaa bbbbbbbbbbbbbbb ccccccccccccccc ddddddddddddddd eeeeeeeeeeeeeee
aaaaaaaaaaaaaaa bbbbbbbbbbbbbbb ccccccccccccccc ddddddddddddddd eeeeeeeeeeeeeee
aaaaaaaaaaaaaaa bbbbbbbbbbbbbbb ccccccccccccccc ddddddddddddddd eeeeeeeeeeeeeee
aaaaaaaaaaaaaaa bbbbbbbbbbbbbbb ccccccccccccccc ddddddddddddddd eeeeeeeeeeeeeee
aaaaaaaaaaaaaaa bbbbbbbbbbbbbbb ccccccccccccccc ddddddddddddddd eeeeeeeeeeeeeee
aaaaaaaaaaaaaaa bbbbbbbbbbbbbbb ccccccccccccccc ddddddddddddddd eeeeeeeeeeeeeee
aaaaaaaaaaaaaaa bbbbbbbbbbbbbbb ccccccccccccccc ddddddddddddddd eeeeeeeeeeeeeee
aaaaaaaaaaaaaaa bbbbbbbbbbbbbbb ccccccccccccccc ddddddddddddddd eeeeeeeeeeeeeee

Illustrator – 基本操作

表示

表示範囲の移動 [SPC] + Drag
拡大 [CTRL] + [SPC] + Click
縮小 [CTRL] + [ALT] + [SPC] + Click

編集

選択 v
ダイレクト選択 a
ペンツール p
アンカーポイント追加 [Shift] + [+]
アンカーポイント削除 [-]

 

Illustrator – 画像の配置~リンク/埋め込み

概要

単に画像ファイルをレイヤにドラッグ・アンド・ドロップすると、画像のリンクが埋め込まれる。

これに対して画像ファイルそのものを埋め込みたい場合は「配置」メニューから画像を配置する。

手順

  1. メニューから「ファイル」→「配置」でダイアログ起動
  2. 配置したいファイルを選択
  3. 下方の「リンク」チェックボックスを選択
    • on→リンク配置(link)
    • off→埋め込み配置(embed)

 

Linuxコマンド – ln

概要

ファイル/ディレクトリへのリンクを作成する。リンクにはハード・リンクとシンボリック・リンクの2種類がある。

ハードリンク

ハードリンクは、ソースのiノード番号をターゲットとして持ち、ソースが移動されたり、名前が変更されても有効。

実行例

  • 1~4行目でソースとその内容を確認
  • 5行目でハードリンクを作成
  • 6~7行目でリンクを確認
  • 8~9行目でリンクで参照されるソースの内容を確認
  • 10行目でソースの名前を変更
  • 11~12行目、変更後もハードリンクは有効

シンボリックリンク

シンボリックリンクでは、リンクファイルにリンク先にソースへのパスが保存され、これを参照してソースがアクセスされる。

ソースの位置や名前が変更されてもリンクファイルのパスは変わらないため、変更後のソースにはアクセスできなくなる(デッド・リンク)。

実行例

  • 1~2行目でソースの内容を確認
  • 3行目でソフトリンクを作成
  • 4~5行目でソフトリンクを確認(パスが表示されている)
  • 6~7行目でソフトリンクからソースの内容を表示
  • 8行目でソースの名前を変更
  • 9~10行目、変更後はソフトリンクからアクセスできない

 

HTML5 – IE互換性

CSSの指定前の処理(IE対応)

IE8以下ではHTML5に対応していないため、新要素は無視されてしまう。IEをHTML5に対応させるJavaScriptがhtml5shivサイトで公開されており、これを最初に読み込んで対応する。

  • 新要素に対してCSSの設定をしている場合、スクリプトがCSSの設定をオーバーライドしないよう、スクリプトの記述をCSS呼び出しの前に置かなければならない。
  • IEの判定部分を<!–[if IE]>としている例もある。
  • HTML5ではscript要素のtype属性の初期値は”text/javascript”として設定されているので省略可能。

IEの条件付きコメント

Microsoft Internet Explorer (MSIE)において、HTMLソースコード中にある条件付きのステートメント。 IE5で初めて導入され、IE9までサポートされた。IE10以降この機能は廃止され、単なるコメントとして扱われる。

コメントの種類 記述
標準のHTMLコメント <–コメント–>
下の階層が隠れる <!–[if expression]>HTML<![endif]–>
下の階層が見える <![if expression]>HTML<![endif]>

下の階層が隠れる条件付きコメント

ブラウザがIEの場合のみHTMLが解釈され、IE以外の場合はブラウザからHTMLが見えない。たとえば、ブラウザがIEの場合のみスクリプトを実行するような場合。

下の階層が見える条件付きコメント

以下は、Microsoftのデフォルトの記法で、ブラウザがIEの場合にはHTMLが解釈されず、IE以外のブラウザにはHTMLが見える記法。

の表現をIEから見ると、ブラウザがIEなのでifの中身は無視される。一方IE以外のブラウザからみると前後のタグ自体が無視されるため、ifの中身だけが見えて実行される。

この記法は正当な(X)HTMLに準拠したものではなく、IE以外のブラウザで前後のタグが無視されることを期待しているにすぎない。そこで、W3C標準を順守するため、以下のような表現が考えられる。

この記法は、正当な(X)HTMLである。ただし条件式のパターンによっては、条件が真となる場合に、HTMLの解釈の前に”–>”を表示してしまう。

 

HTML5 – 標準形・ひな形

全体構成

  • DOCTYPE宣言で始める
  • html要素の中にhead要素とbody要素を記述
  • head要素の中には、meta要素、title要素と、必要に応じてスタイル設定のための要素を記述

DOCTYPE宣言

  • XHTMLに比べて簡略化
  • ブラウザなどにHTML5であることを明示
  • DOCTYPE宣言がないと、ブラウザによってはレンダリングモードが互換モードとなりCSSの解釈が意図と異なるレイアウトとなる場合がある
  • DOCTYPE宣言によって、主要なブラウザは標準モードとなる。

html要素

lang属性による言語の指定

  • htmlタグのlang属性で言語を指定し、ブラウザ・検索サイトなどに伝える。

head要素

文字コード指定

  • head要素内のmeta要素で文字コードを指定する
  • HTML4以前の記述も可能だが、HTML5ではより簡略な表現が可能
  • この宣言より前のものは文字化けの可能性があるため、head要素の冒頭に記述

title

  • head要素内のtitle要素で指定
  • [タイトル]がブラウザのタイトルバーに表示される
  • 検索サイトでの検索結果のタイトルにも使われる

CSS設定

外部ファイル指定

  • head要素内のlinkタグの属性で指定
  • HTML5ではrel属性の値が”stylesheet”の場合のtype属性の値は”text/css”として設定されているので省略可能

CSSの直接記述

  • head要素内のstyle要素の中にCSSの文を直接記述

QGIS – クリッピング

概要

たとえばあるエリアの地図と、そのエリア内だけ鉄道や道路のベクタを切り出して扱いたい時がある。このようなときは、広域データの鉄道や道路のベクタデータのうちエリア内のみ切り出す「クリッピング」を行う。

ここでは、東京23区内の鉄道路線と駅をクリップする例を示す。大まかな手順は以下の通り。

  1. 23区の地図データを切り出し、外形データを作る
  2. 上記の外形データで鉄道路線と駅の全国データをクリップ

地図データの切り出しと外形データの作成

地物の切り出し

地物を切り出す手順で、23区のみ抽出して保存する。このデータはレイヤとして後に利用する。

外形データの作成

切り出した23区のデータの外形を融合(dissolve)処理によって作成・保存。このデータはクリッピングのために一時的に利用するだけ。

以下の図は、23区の外形ポリゴンと全国の鉄道路線データ、駅データを重ねたもの。

qgis-tokyo-ward-outline-and-railway

クリップ処理

メニューから、ベクタ→空間演算ツール→クリップでダイアログを表示させる。

qgis-clipping-dialog

  • 「入力レイヤ」には、クリップされるデータを指定(この場合は鉄道路線データ)
  • 「レイヤをクリップする」データには、クリップ範囲のデータを指定(この場合は23区の外形データ)
  • 「クリップされた」データには、クリップ後のデータを保存するファイルのパスを指定

実行結果は以下の通り。

qgis-tokyo-ward-clip-railway

 

viコマンド

カーソル移動

w 次の語の先頭に移動
b 前の語の先頭に移動
^ 行頭に移動
$ 行末に移動
[CTRL] + f 次のページに移動
[CTRL] + b 前のページに移動
G 最終行に移動
Gn n行目に移動

入力・編集

a カーソルの右から挿入開始
i カーソル位置から挿入開始
o 現在行の下に1行挿入し、行頭から入力開始
O 現在行の上に1行挿入し、行頭から入力開始
J 現在行と次の行を結合

削除

x カーソル位置の1文字を削除
X カーソルの左の1文字を削除
dd 現在行を削除
dw カーソル位置の1語を削除
d^ 行頭からカーソル位置まで削除
d^ カーソル位置から行末まで削除

カット・コピー(ヤンク)

行のカット・ヤンク

  • カットは対象行でdd
  • ヤンクは対象行でyy

貼り付け

貼り付ける行の上の行にカーソルを置いてp

任意位置のカット・ヤンク

開始位置でv→カーソルで範囲選択後にddまたはyy

pを入力したポジションの後に内容が貼付けられる。