三十路SEの学び記録とかなんとか

子育て中三十路SE♂の業務外での学びとかガジェットネタとか

bootstrap4のdatetimepickerでchangeイベントを発火させる

今回はちょっとしたメモ程度。

bootstrap4を使っていて日付項目をdatetimepickerで入力したいなというときに、ライブラリを使うかと思います。 f:id:us_key:20190424210417p:plain Tempus Dominus - Bootstrap 4

ライブラリの使い方などは下記のページを参考にしました。 its-office.jp

で、実装する中で、カレンダーで日付を選択したタイミングでイベント発火させたいな、となりました。
具体的には、日付を変更したタイミングでその日付に紐づくデータを取ってくるとか、日付をURLパラメータにセットして画面遷移するとか。
単純にjqueryのchangeイベントで処理を書けばいいかと思ったらそうはいかずちょっと手間取ったので、メモしておきます。

changeイベントの実装

$('#datetimepicker').on("change.datetimepicker", function(e){
    e.preventDefault();
    if (e.oldDate) {
        var target_date = $(this).val();
        window.location.href = "/hogehoge?target_date=" + target_date;    
    }
});

changeイベントはchange.datetimepickerというイベントで発火させればいいとのことで、実装してみました。 https://tempusdominus.github.io/bootstrap-4/Events/#changedatetimepicker

change.datetimepickerの発火タイミング

で、実装したところ、対象のinputを選択した時点でイベント発火するという。しかもなぜか2回発火する。まじか。
上記ページに記載があるのですが、このイベントはdateoldDateという2つのパラメータを持っています。
input選択時に2回実行されるうち、1回目はoldDateがnull、2回目はoldDateを持っていません(何により発火されているのだろう??)。
ということで、e.oldDateを評価して、値が設定されていれば処理を実行するという形にしました。これで選択時の2回の発火はスルーされ、日付変更時にイベント発火されるようになりました。

ajaxで処理したい場合(未解決)

上記は日付変更時に別画面に遷移するためOKなのですが、ajaxで実行したい場合にはページ内に留まることになります。
どうも日付変更時にもこのイベントが2回発火されていて、しかもどちらもoldDateがセットされているようです。
2回発火されるのを避けるには別の方法を採る必要がありそうだなあ。。
もうちょい調べてみようかなと思います。

読書記録:自分を操る超集中力

今回はまた違った趣向で記事を書こうと思います。ITエンジニアの技術ネタ、ガジェットネタ、英語ときて、次はビジネス書についてです。ブログの方向性がよくわからなくなってきてますが。。

読書記録を書く目的

僕はビジネス書好き、自己啓発本好きです。しかし、同様の悩みを抱える人は多いと思うのですが、読んだ内容を行動につなげられていないという悩みがありました。読むのに時間がかかって読み始めた当初の目的を忘れてしまうとか、読んだだけで満足してしまっているとか色々理由はあると思うのですが、本1冊に書いてある内容を全部そのまま情報としてインプットしても情報量が多くて受け止めきれないという点があるかなと思っています。

そこで、読んだ内容をまとめてここにアウトプットすることを通して、書いてあった内容のポイントを見える化し、内容の理解・習得を図ろうとしています。

書く内容

さらに、書いた内容をまとめるといってもポイントが多くありすぎるとなかなか行動に落とし込むのが難しい、一気にそんなにやろうとしても挫折してしまう、ということで、行動に落とし込みたいポイントを1冊当たり3つに絞ってまとめようと考えています。あとは、極力今日から行動に移せるような形で、何をやるかを具体的な行動として記事の中に書きたいなと思います。

今回の書籍

今回扱うのは、メンタリストDaiGoさんの著書、「自分を操る超集中力」です。

自分を操る超集中力

自分を操る超集中力

 

Audibleで見つけたので購入しました。たまたまAudibleで見つけ、ほかにあまりピンと来る本がなかったので選んだというのが正直なところだったのですが、すぐに行動に移せそうな内容が多数あったので、紹介したいと思います。

業務に対する集中力を高めるというのは常に課題として感じているので、本に書いてある内容を実践して集中力を高めていきたい!というモチベーションのもと、何回も聞き込んでいます(なかなか1回聞いただけでは頭に残らないので)。

 

なんと漫画化もされているもよう。

マンガでよくわかる 自分を操る超集中力

マンガでよくわかる 自分を操る超集中力

  • 作者: メンタリストDaiGo,【シナリオ・構成】今谷鉄柱事務所,【作画】新津タカヒト
  • 出版社/メーカー: かんき出版
  • 発売日: 2018/01/10
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る
 

 

目次

まえがき
もはや集中力は、最短・最速で身につくスキル
集中力で、1年が13カ月になる
どんなに疲れていても、集中力を発揮できる人の秘密とは?

 

第1章 集中力を自在に操る3つのルール
集中力の高い人に共通する行動原則とは

ルール1 集中力の高い人は、鍛え方を知っている
ルール2 集中力の高い人は、短時間の集中をくり返している
ルール3 集中力の高い人は、「疲れ」を脳でコントロールしている

 

第2章 高い集中力を生み出す7つのエンジン
トップスピードで「すぐ没頭できる」自分に変わる

エンジン1 場所
エンジン2 姿勢
エンジン3 食事
エンジン4 感情
エンジン5 習慣
エンジン6 運動
エンジン7 瞑想

 

第3章 疲れをリセットする3つの回復法
疲れを感じている方は、ここから読み進めてください

キュア1 睡眠
キュア2 感覚から癒やす
キュア3 不安を書き出す

 

第4章 集中力を自動でつくり出す時間術
いつもの仕事の時間を変えるだけで、パフォーマンスは上がっていく

時間術1 超早起き
時間術2 ポモドーロ・テクニック
時間術3 ウルトラディアンリズム
時間術4 アイビー・リー・メソッド
時間術5 スケジュールに余白をつくる

1.作業の前に姿勢を整える

集中力を司る前頭葉のエネルギー源はブドウ糖と酸素、それを送り届けるのは血流。血流と密接に関連しているのが姿勢。

集中するときにもブドウ糖と酸素が必要となる。姿勢が崩れると血液の循環が崩れる。

姿勢がよくなることで前頭葉の動きが活発になる。

座り姿勢のポイント:あごを引いて頭を首の上に乗せる、両膝をつける、お尻と腰を直角にする、足の裏を床に付ける。

1日に何回か正しい座り姿勢を思い出し、座り姿勢を直す。

15分に1度椅子から立ち上がる:脳に新しい刺激が加わり、集中力が持続する。

最近整体によく通っていて、姿勢を保つことは体のバランスを保ったり体を疲労させないために必要だと感じさせられていますが、集中力を維持するにも効果的ということです。作業に着手するタイミング、席を立って戻ったタイミングなどで姿勢を整えるようにし、少なくとも仕事を始める時には正しい姿勢で机に向かうようにします。

まあ、いずれ姿勢は崩れてくるのでしょうけど。。そういったときにウェアラブルバイスで姿勢の崩れに対してアラートを上げてくれるというのはいいなぁと思います。

ただ、本の中で紹介されているLumoLiftというウェアラブルバイスは、製造元のLumo社が廃業?したようでアプリが使えなくなっているようです。

同様の製品を今買うならこちら↓でしょうか。若干サイズが大きいのが気になるところ。レビュー付かないかな。

2.15分のパワーナップ(仮眠)を取る

パワーナップはベッドや布団などに横になる昼寝と違い、目を閉じじっとして休息することで疲れと眠気を取り去る休息法。

15分から20分のパワーナップは夜の3時間の睡眠に匹敵し、回復した集中力や注意力は150分持続する。

業務中に昼寝を取れるような制度は整っていないですが、昼休みの終わりの20分を使って昼寝を取ると効果的とのこと。

今まで、そのまま寝てしまうのが怖くて5分程度しか昼寝をしていなかったのですが、AppleWatchを手に入れたことで音を出さずに手首の振動で目を覚ますことができるようになりました。おかげで今までより少し長い時間仮眠を取ることができ、日中の眠気も改善してきているように感じます。僕は職場に空気を入れる枕(飛行機とかに持ち込む旅行用のやつ)を首にかけ、ハンカチで目を隠して光を遮り、イヤホンでヒーリング的な音楽を小さい音量でかけながら寝ています。

3.アイビー・リー・メソッド

所要時間はわずか20分。ポイントは以下の6つだけ。

1. 紙に「明日やるべきこと」を6つ、メモする
2. その6項目を重要だと思われる順に1、2、3、4、5、6と番号を振る
3. 翌日、このメモの順番に従って仕事を進める
4. もし全部できなかったら、悔やむことなく忘れる
5. その後、明日のための6つの項目を新しくメモする
6. 1~5を丁寧に繰り返す

絶対に守るべきポイントが1つある。それは、1番が終わるまで1番のことしかしないこと。2番は見ない。心の外に追い出す。

常にシングルタスクにせよ、という方法論ですね。ITプロジェクトにおけるプロジェクト管理の方法論でもよく見る考え方です。ポイントは4番かなーと思います。目的は全部やることではなく、優先度の高いものから1つずつ消化するという点。優先度の高いものが終わったのでOKという考え方ですね。

複数のことを行ったり来たりすると、一方のタスクを実行しているときにもう一方のタスクが気になったりしてしまって、効率が上がらない。タスクを複数抱えていること自体はいいのだけど、優先度の高いものから集中して実施し、終わるまで次のタスクのことは考えない。

まあなかなかこの通りうまくいかないかなーとは思いますが、タスクを細かく分割し、少なくともその単位では完了するまで次のことをやらないという考え方を持つことは、やっていることに向かう集中力を高めるのに効果的と思います。

まとめ

本の中では他にもすぐ実践できるポイントがいくつも挙げられていますが、まず自分では今回挙げた3点を実践していこうと思います。集中による業務効率化はあらゆる仕事において効果のあるスキルだと思うので、しっかり自分のものにしていきたいです。

 

図解本も出ているもよう。DaiGoさん、稼いでますねー。笑

【メンタリストDaiGo オリジナルのダウンロード特典あり】図解 自分を操る超集中力

【メンタリストDaiGo オリジナルのダウンロード特典あり】図解 自分を操る超集中力

 

 

今後も、ビジネス書や自己啓発書の内容を行動に移すためにまとめて行きたいと思います。自分のためという点も大きいですが、読者の方にとってもためになる内容になるよう意識して書いていきます!

Windows上のVagrant環境でvenvがエラーとなった際の対応

現在、下記の本でPythonを使った開発について学んでいます。

Pythonプロフェッショナルプログラミング 第3版

Pythonプロフェッショナルプログラミング 第3版


この書籍では、Windows10にVirtualBoxVagrantをインストールし、ゲストOSとしてUbuntuを利用しホストOSのWindows10とディレクトリを同期することで、Windows10上のエディタでコーディングしながらPythonLinux上で動かすという形で開発を進めていきます。
が、環境を作り、さあ開発を始めていこうというところでいきなり躓いたのでその内容について書いていきます。

目次

環境

書籍に従い、Windows10にVirtualBoxVagrantをインストール、UbuntuのBoxを使います。
バージョンは以下の通り。

>vagrant -v
Vagrant 2.2.3

>vagrant box list
ubuntu/xenial64 (virtualbox, 20190115.0.0)

ゲストOSとディレクトリ同期設定

Vagrantfileを編集し、ホストOSとゲストOSのディレクトリ同期設定をします。

# Vagrantfile
(中略)
  # Share an additional folder to the guest VM. The first argument is
  # the path on the host to the actual folder. The second argument is
  # the path on the guest to mount the folder. And the optional third
  # argument is a set of non-required options.
  config.vm.synced_folder "./src", "/vagrant_data"
(中略)

これで、ホストOSの[Vagrantfileのあるフォルダ]/srcとゲストOSの/vagrant_dataが同期されます。
sshでゲストOSに接続後、このディレクトリ上でvenvコマンドを実行しPythonの仮想環境を作りたいのですが、実行時にエラーが発生しました。

vagrant@ubuntu-xenial:/vagrant_data$ python3.6 -m venv
Error: [Errno 71] Protocol error: 'lib' -> '/vagrant_data/venv/lib64'

シンボリックリンクを貼る際にエラーが出ているみたい

vagrant venv protocol error”あたりで検索しても上位の方はそれらしい情報が出てこず、しばらく寝かせていた(笑)のですが、"windows10"をキーワードに入れると「シンボリックリンク」がキーワードとして挙がってきました。
Windowsシンボリックリンクの機能があること自体知らなかったのですが、どうやらシンボリックリンク作成の権限は管理者ユーザーのみとなっているよう。
venvコマンドを実行するとシンボリックリンクを貼りに行き、Linux上ではできるけど同期を取っているWindows上でその権限がないのでエラーとなっている、というところなのかな。
qiita.com

簡単に解決…

で、どうすれば解決するかというと、Vagrantの起動を管理者ユーザーで実行すればよいとのこと。
一般ユーザーで起動した状態から管理者ユーザーでreloadしてもダメでした。一度落としたうえで起動しなおす必要があるようです。

(管理者ユーザーでコマンドプロンプト起動)
>vagrant halt

>vagrant up

>vagrant ssh

(以下ゲストOS上)
vagrant@ubuntu-xenial:~$ cd /vagrant_data

vagrant@ubuntu-xenial:/vagrant_data$ python3.6 -m venv venv

vagrant@ubuntu-xenial:/vagrant_data$ source venv/bin/activate
(venv) vagrant@ubuntu-xenial:/vagrant_data$

Windows Proであればローカルセキュリティポリシーを編集することで一般ユーザーにシンボリックリンク作成の権限を与えることもできますが、Homeではできないのでひとまずこの方法が楽かなと思います。