くんすとの備忘録

プログラミングや環境設定の覚え書き。

Twitter Bootstrap2のmodal()でfocusが外れてしまうことへの対策

原因

犯人は、showメソッドの中で設定されている transitionend イベント。

modalのセットされているjQueryオブジェクトにtransitionend イベントが割り当てられ、その中でfocus()が走るようになっている。

https://github.com/twbs/bootstrap/blob/v2.3.2/js/bootstrap-modal.js#L75-L77

          transition ?
            that.$element.one($.support.transition.end, function () { that.$element.focus().trigger('shown') }) :
            that.$element.focus().trigger('shown')

対策

transitionend イベントを止める。

[サンプル]

$modal.on("transitionend", function(e){
  e.stopPropagation()
})

参考情報

その他

2017年にもなってBootstrap2……

【メモ】keymapのデータが入ってるパッケージ

loadkeys jp106 とかができないときのためのメモ。

環境

  • Ubuntu Server 17.04 (64bit)

インストール

$ sudo apt-get install console-common console-data unicode-data

パッケージ情報

追記

ちなみに、loadkeysコマンド自体はkbdパッケージに入っている。 ※dockerコンテナには含まれていない。

Ubuntu Manpage: loadkeys - load keyboard translation tables

Ubuntu Serverで、CLIでWifi接続する方法

ノートPCにUbuntu Serverをインストールしたんですが、Wifi接続どうするんだっけ……となったのでやってみました。 wpa_supplicantを使います。

環境

  • Ubuntu Server 17.04 (64bit)

接続方法

デバイス名の確認

$ ip link show

それっぽい名前を探します。(wlanXXとかwlpXXとか)
→ うちの子の無線デバイスは wlp2s0 でした。

接続設定ファイルの作成

SSIDとパスフレーズから、wpa_passphrase コマンドで設定ファイルを作成

$ wpa_passphrase MYSSID passphrase > /etc/wpa_supplicant/home.conf

こんな感じのファイルができます。

network={
        ssid="MYSSID"
        #psk="passphrase"
        psk=59e0d07fa4c7741797a4e394f38a5c321e3bed51d54ad5fcbd3f84bc7415d73d
}

※設定ファイルの置き場はどこでもOK

接続

wpa_supplicant で無線ネットワークに接続し、dhcp でIPアドレスを取得します。

$ sudo wpa_supplicant -B -i wlp2s0 -c /etc/wpa_supplicant/home.conf
$ sudo dhclient wlp2s0

まとめ

今はシェルスクリプトで接続してます。
もっと楽したい……

参考URL

「第30回シェル芸勉強会 大阪サテライト」レポート

08/26(土)に東京で行われた「jus共催 第30回危念シェル芸勉強会」について、今回も大阪でサテライトしました!

イベント情報

東京(本家)

usptomo.doorkeeper.jp

今回も、大阪(私達)と、福岡でサテライト会場がありました。

大阪サテライト

atnd.org

福岡サテライト

atnd.org

大阪サテライトレポート

参加者

今回はさくらインターネット様から会場をお借りしできました。いつもの3倍くらいのサイズだったのでいろいろと持て余してしまいましたが……
次回は今回を踏まえて、机の形を整えたりしてもうちょいいい感じにしたいと思います。
今回の参加者は、私も含めて14人、たしか全員2回目以降の参加だったような。部屋も広くなったので、初心者の方もウェルカムですよっ!

会場のようす

午前

鳥海秀一さん(@hid_tori)「Perlの正規表現(その2)」


スライド→https://umidori.github.io/shellgei-29th-am/index.html

Perlワンライナーの書き方や代表的なオプションなどの説明でした。ちなみに次回は「Perl正規表現入門」だそうです。




おひる

大阪、午前中でグロッキーになり、お昼は前回のLTを見つつ静かな感じで。。。

午後

「「「地獄」」」

地獄 オブ 地獄

LTのようす

東京

大阪

今回もYoutubeで配信していただけました! 録画はコチラ ↓ 

くんすと(@kunst1080) 「シェル芸思考」


シェル芸で問題を解くときに考えていることを軽くまとめました。設計だいじ。

MSR(@msr386) さん 「fork爆弾爆発中のロードアベレージを見る」


前回に引き続き、fork爆弾を計測するデモ。発表後に作成された参考動画もあるようです。

たいちょー(@xztaityozx_001) さん 「破壊的難読化シェル芸」


前回も発表して頂いた「難読化シェル芸」の、gzipを使った発展版。どんどん危険度が上がっていきますね・・・

so(@3socha) さん 「AWS API リクエストへの署名」


AWSの特定のAPIについてSDKが用意されていないので、直接APIを叩くためにAPIリクエストを自前で署名する、という行為ををワンライナーでやるという話。 こうやって、仕様を追いかけながら動きを確認できるのがワンライナーのいいところですよね(しろめ。 正直長いのでシェルスクリプトにした方がいいと思います!


その他

LT超募集してます。ジャンルは不問ですのでお気軽に!!!

まとめ

上田会長、東京・福岡・大阪の皆様、お疲れ様でした。
さくらインターネット様、今回は会場を使わせていただきましてありがとうございます!

次回もできればまたよろしくお願いします!!

BATファイルで特定フォルダ以下の特定の拡張子のファイルに対して処理を実行する方法

例として以下の条件で考えます。

  • フォルダ: Desktop
  • 拡張子: *.txt

このとき、Desktopフォルダ以下の*.txtファイルの一覧は以下のコマンドで表示できます。

dir /s /b Desktop\*.txt

/sは再帰検索、/bはファイル名のみ表示するオプションです。少し気持ち悪い指定ですが、これでDesktop以下の全てのサブディレクトリに存在する*.txtファイルを表示できます。

ファイル一覧が表示できたので、この結果をfor文に渡します。 例として、ファイルリストの前後にAAABBBを付けてechoします。

for /f "usebackq tokens=*" %%i in (`dir /s /b Desktop\*.txt`) do @echo AAA %%i BBB

これで echo AAA %%i BBBにファイル一覧が渡り、前後にAAABBBが付きました。

BATファイルでBOM付きUTF-8ファイルからBOMを取り除く方法

検証環境

Windows10 64bit

方法

input.txt からBOMを取り除いて、 out.txt テキストを出力する場合

start /min /wait cmd /c chcp 65001 ^& cmd /u /c type input.txt ^> $$$ ^& cmd /c type $$$ ^> out.txt ^& del $$$

コマンド自体は参考にしたところのほぼコピーですが、参照元には解説がなかったので分かる範囲で解説します。

解説

まずは各コマンドや引数を/?などで確認

  • start /min /wait外部プロセスでコマンドを起動(start)。ウィンドウを最小化(/min)、実行が終わるまで待つ(/wait)。
  • cmd /c コマンドプロンプトを起動し、引数に渡された文字列のコマンドを実行し終了する(/c)。
    • &はコマンドの実行が終わったら次のコマンドを実行するの意味。bashで言うところの ;
    • ^はコマンドプロンプトのエスケープシーケンス
    • ^& はエスケープされて文字列になった&
    • ^>はエスケープされて文字列になった>
  • chcp 65001 コマンドプロンプトの文字コードをUTF-8に変更する。(デフォルトはShiftJIS)
  • cmd /uは、内部コマンドの出力結果Unicodeパイプまたはファイルに出力するオプション
    • デフォルトは/a(ANSI)
  • typeコマンドはテキストファイルの内容を出力する内部コマンド
    • catみたいなもの
    • ShiftJISでもUTF-8でもUnicodeでも何でも読めるみたい

まとめるとこんなステップになります。

  • コンソールの文字コードをUTF-8にする
  • Unicodeのモードでinput.txtを開き、$$$に保存
    • $$$ファイルは「BOM付きUnicode」になる
  • ANSIのモードで$$$を開き、out.txtに保存
    • ANSIのモードではBOMが付かないため、BOMが外れる(現象からの予想)
    • out.txtは「BOMなしUTF-8」になる
  • $$$ファイルを削除

ANSIのコマンドプロンプトでUTF-8のファイルをtypeしてリダイレクトしてもBOMは外れない模様。 (文字コードが同じだから変換が発生しない?) なので、一旦unicodeを経由して変換することで無理やりBOMを取り外してるみたい。

参考

Bash on Ubuntu on WindowsからConohaにDocker Machineを立てたときの手順

ConohaにdockerでRedmine鯖を立てたかったので環境を用意しました。

Bash on Ubuntu on WindowsにはDocker Engineをインストールせずに、docker関連のコマンドのみをインストールします。
かわりにConohaへDocker Machineをセットアップし、そちらでDocker Engineを動かします。

Bash on Ubuntu on Windowsへのコマンドインストール

別エントリに書きました。

www.kunst1080.net

これで、Bash on Ubuntu on Windowsで以下のコマンドが使えるようになります。

  • docker
  • docker-compose
  • docker-machine

Conohaにdocker-machineを作成

環境変数の設定

OpenStack用の環境変数を設定します。

export OS_USERNAME=[APIユーザー名]
export OS_TENANT_ID=[APIテナントID]
export OS_PASSWORD=[APIパスワード]
export OS_AUTH_URL=https://identity.tyo1.conoha.io/v2.0
export OS_REGION_NAME=tyo1

Dockerホストの作成

OpenStackのドライバを使い、 conoha-docker という名前でDocker Machineを作成します。

$ docker-machine create \
  -d openstack \
  --openstack-flavor-name g-1gb \
  --openstack-image-name vmi-ubuntu-16.04-amd64-unified \
  --openstack-sec-groups "default,gncs-ipv4-all" \
  conoha-docker

NOTE:

  • 使用できるVMイメージ名は openstack image list で確認できます。
  • 使用できるflavor名は openstack flavor list で確認できます。
  • openstack コマンドは sudo pip3 install python-openstackclient でインストールできます。

実行ログ

Creating CA: /home/kunst/.docker/machine/certs/ca.pem
Creating client certificate: /home/kunst/.docker/machine/certs/cert.pem
Running pre-create checks...
Creating machine...
(conoha-docker) Creating machine...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with ubuntu(systemd)...
Installing Docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env conoha-docker

環境設定

後は、起動スクリプトに以下の内容を書いておけば完了です。 docker コマンドで、Conohaに作成したDocker Machineにコンテナを作成できます。

eval "$(docker-machine env conoha-docker)"

参考URL

広告