Hatena::ブログ(Diary)

みことメモ

2017-03-13 ErgodoxでMomentキーを使っていて困った話

Ergodoxを使っていて悩まされていたことが解決したのでメモ.
ErgodoxのMomentキー(以後Moキー),便利ですよね.
Moキーを押している間だけ別のレイヤーにすることができるので,普段私は記号や矢印キーのレイヤーと文字入力のレイヤーの切り替えにMoキーを使っています.

そんな中以下の現象に遭遇して長らく困っていたのですが,本日解決したのでメモしておきます.

現象:長押しでSHIFTに切り替わるキーを押した状態でMoキーを押し,先にMoキーを離すとその後にSHIFTキーから指を離してもSHIFTキーが押しっぱなしになる.※切り替え後のレイヤーではSHIFTに位置する場所には別のキーが設定されている

キーの設定をコードで表すと以下.

[BASE] = KEYMAP(
    MO(SYMB),
    SFT_T(KC_BSPC), ...
),

[SYMB] = KEYMAP(
    KC_TRNS,
    KC_DELT, ...
)

この状態でMoキーを先に離すとSHIFTが押しっぱなしと判定され,解除するには長押しSHIFTキーを押した状態で何か他のキーを入力しなければなりませんでした.

解決策:SYMBレイヤーも同じように長押しSHIFTキーを設定してあげる

[BASE] = KEYMAP(
    MO(SYMB),
    SFT_T(KC_BSPC), ...
),

[SYMB] = KEYMAP(
    KC_TRNS,
    SFT_T(KC_DELT), ...
)

上記コードにすると現象は発生することがなくなり,解決することができました.
Moキーを離すと実際にキーが押されているかどうかに関係なくSHIFTが押されたままになるのはなかなか厄介なものです.ドキュメントなどを読んでも切り替え後のレイヤーのMoキーに位置する場所はTRNSでなければならない,ということしかわからなかったのでなかなか手強かったですね.

何かこのことについて知識をお持ちの方がいらっしゃったら教えてくださるとうれしいです.

2017-02-18 nginxでtry_filesする際に=xxxがあるとrailsアプリにリダイレクトさ

nginxのサイト設定で以下のように書くと

location /zzz {
  alias ...;
  try_files $uri @rails_unicorn =404;
}

location @rails_unicorn {

}

@rails_unicornの設定が正しくても404ページの表示に移行してしまうようだ.
そういうものなのか,別の原因があるのかは不明.どうしてこういう挙動なのだろう?

後,同じサーバの場合はlocationは同じファイルに書いたほうが良いっぽい,
みたいな知見も得た.これも何かよくわかってない感じだ.
できればサイトごとにファイルを分けたい気分だけど,例えば

# a.setting
location /
{
}


# b.setting
location /foo
{
}

という2つのファイルがある時, /fooの方には一切入っていかずにa.settingの/以下のlocation設定ですべて処理されてしまう.
同じ階層のディレクトリ名同士なら別ファイルにすることは可能なのだろうか?(だとすれば ある階層下の設定は1つにまとめる,という方向がよさそうな気がする)

2017-01-01 numpyのxor

numpyにはxorを計算する関数が用意されている

使い方は
logical_xor( condition1, condition2)
(condition1, condition2はTrueになる条件)
return valueは計算したあとのオブジェクト.下の例の場合は配列が返ってくる

import numpy as np

if __name__ == '__main__':
    data = np.random.randn(10, 2)

    # 排他的論理和作成
    xor = np.logical_xor(data[:, 0] > 0, data[:, 1] > 0)
    xor2 = ((data[:, 0] >= 0) & (data[:, 1] < 0)) | ((data[:, 0] < 0) & (data[:, 1] >= 0))
    print(xor)
    print(xor2)

# output
# [ True  True  True False  True False  True False False  True]
# [ True  True  True False  True False  True False False  True]

手書きで書いたxorともちろん結果は一致する.
他の論理演算も用意されているみたい.

2016-12-23 Python機械学習プログラミング.メモ

2.4, 2.5 ADALINE, 2.6 確率的勾配降下法

  • ADALINEはコスト関数を用いることでパーセプトロンのステップ関数とは違い,連続値を出力.
  • classfyする時は連続値をある値で区切って量子化(0 or 1)する.
  • 連続値を出力すると微分できるので重みの更新する方向がわかるのがメリット
  • ADALINEはデータセットのサンプル全体からコストを計算して重みを更新.パーセプトロンはデータセットの1回1回のサンプルで重みを更新.

ADALINEはデータセットが大きいと計算コストが大きくなる→そこで,パーセプトロンと同様に1回1回のサンプルで更新しなおかつコスト関数を用いる確率的勾配降下法(Online学習)というものを用いる.確率的勾配降下法は更新頻度が多いため,遥かに高速に収束する.
→疑問:ADALINEの特徴はどちらかというとコスト関数? オンライン学習は出てくるサンプルの順番に影響されやすく,ADALINEの全体を使った更新はデータセット全体の影響を受けやすい?(ただし順番の影響を受けない)のだろうか?

2016-09-16 pyenvでpythonをインストールする時にはまったのでメモ

Qiitaの記事を参考にpyenvを導入してみたものの変なところで
躓いたのでメモ.単にowner設定が間違っていただけの話.
pyenvインストール後は~/.pyenv下のフォルダのownerをrootからユーザに変えておきましょう
(pythonインストール時にmkdirなどが権限の問題で失敗する).

最近環境構築の機会が増えてきた.積み木楽しい:-)
github:
no title

good night.

Connection: close