【Emacs】ido-mode 導入メモ
ido-mode を使い始めたので、導入・操作メモを残していく。
ファイルオープン、バッファ移動の補完周りがめちゃめちゃ快適になった(もっと早く入れておけばよかった)…
導入
Emacs 標準に入っているため M-x ido-mode
で ido-mode が開始される。
起動時に ido-mode が有効になるように InitFile に書いておく。
(ido-mode t)
これで終わり … だが、補完を見やすくするために ido-vertical-mode を入れておく。
M-x package-install ido-vertical-mode
を実行InitFile に下記追記
(require 'ido-vertical-mode) (ido-vertical-mode 1) (setq ido-vertical-define-keys 'C-n-and-C-p-only)
(入れてない人向け) MELPA-stableを追加
今回 ido-vertical-mode を入れるために パッケージ管理にMELPA-stableを追加した。
下記を InitFileに書く。
(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t)
emacs の再起動後、
M-x package-list-packages
を実行。
使い方
バッファ移動
▼ バッファ移動 C-x b
の実行結果
そのまま Enter で"→" の部分のバッファに移動する。
C-n
, C-p
(上下矢印キー) で候補の移動。
▼文字入力後 Enter でマッチ(部分一致) するバッファに移動。
ファイル検索
▼ ファイル検索 C-x C-f
の実行結果
そのまま Enter で"→" の部分のファイルオープン もしくはディレクトリ移動。
C-n
, C-p
(上下矢印キー) で候補の移動。
▼文字入力後 Enter でマッチ(部分一致) するファイルのオープン もしくはディレクトリの移動。
Python からFitbit のデータを取得する
Table of Contents
はじめに
主にランニング記録用に、去年の9月にFitbit charge2 (official)を購入した。
いわゆる活動量計・スマートウォッチで、歩数や心拍数、ランニングなどの記録を取ってくれる。 スマホと連動して、GPSで取得したランニングコースなども見ることができる。 各記録はスマホアプリ、Webブラウザからも確認可能。
(おすすめのバンドは こちら(Amazon) 。取り外しがとても楽。)
このFitbit、開発者向けの環境が充実している。 Fitbit API が公開されていて、最新機種のFitbit ionic では、専用のSDKまで用意されている。
今回は以下の python-fitbit を使って、これまで記録した歩数や心拍数を取得してみる。
環境
- OS : Windows10
- Python : 3.6.4
準備
準備の流れは以下の通り。 解説している記事は結構あるので詳細は割愛します。
- Fitbitのページで、
client_id
,client_secret
を発行する。 - fitbit-python を用いて
refresh_token
,access_token
を取得する。
client_id
, client_secret
の取得
画面参考: Connect yout app to Fitbit
Fitbit にログインした状態で、下記にアクセスする。
https://dev.fitbit.com/apps/new
Register an application フォームに記入する。下記パラメータ以外は適当でOK。
- OAuth 2.0 Application Type: Personal
- Callback URL: ttp://127.0.0.1:8080/
- Default Access Type: Read-Only
出てきたOAuth2.0 Client IDと Client Secret をメモする。
refresh_token
, access_token
の取得
事前にpython-fitbit をDLしておく。
Requirements を参考に以下を実行。
pip install python-dateutil
pip install requests-oauthlib
- python-fitbit-masterディレクトリ下で
pip install -r .\requirements\base.txt
gather_keys_oauth2.py の実行に必要なパッケージをインストール。
pip install fitbit
pip install cherrypy
gather_keys_oauth2.py を実行する。
python gather_keys_oauth2.py [client_id] [client_secret]
出てきた access_token
, refresh_token
をメモする。
データの取得
今回は 1日の活動の概要を取得する activities
メソッドを使用する。
import fitbit import datetime # CLIENT_ID, CLIENT_SECRET CLIENT_ID = "xxx" CLIENT_SECRET = "xxx" # ACCESS TOKEN, REFRESH TOKEN ACCESS_TOKEN = "xxx" REFRESH_TOKEN = "xxx" # get activities summary in 2017/11/20 client = fitbit.Fitbit(CLIENT_ID, CLIENT_SECRET, access_token=ACCESS_TOKEN, refresh_token=REFRESH_TOKEN) date = datetime.datetime.strptime("2017-11-20", "%Y-%m-%d") print(client.activities(date=date))
cleient.activities(date=date)
の返り値は下記のようなmap オブジェクト。
ちなみに、データ取得のためのリクエストには制限がある(1時間に150)。
{'activities': [], 'goals': {'activeMinutes': 30, 'caloriesOut': 2542, 'distance': 5, 'floors': 10, 'steps': 10000}, 'summary': {'activeScore': -1, 'activityCalories': 974, 'caloriesBMR': 1467, 'caloriesOut': 2353, 'distances': [{'activity': 'total', 'distance': 6.51}, {'activity': 'tracker', 'distance': 6.51}, {'activity': 'loggedActivities', 'distance': 0}, {'activity': 'veryActive', 'distance': 4.38}, {'activity': 'moderatelyActive', 'distance': 0.3}, {'activity': 'lightlyActive', 'distance': 1.82}, {'activity': 'sedentaryActive', 'distance': 0}], 'elevation': 270, 'fairlyActiveMinutes': 8, 'floors': 27, 'heartRateZones': [{'caloriesOut': 857.86064, 'max': 98, 'min': 30, 'minutes': 602, 'name': '範囲外'}, {'caloriesOut': 349.27984, 'max': 137, 'min': 98, 'minutes': 64, 'name': '脂肪燃焼'}, {'caloriesOut': 332.46304, 'max': 166, 'min': 137, 'minutes': 34, 'name': '有酸素運動'}, {'caloriesOut': 62.57888, 'max': 220, 'min': 166, 'minutes': 6, 'name': 'ピーク'}], 'lightlyActiveMinutes': 101, 'marginalCalories': 684, 'restingHeartRate': 67, 'sedentaryMinutes': 1271, 'steps': 13862, 'veryActiveMinutes': 60 } }
これを数カ月分とって、 summary > restingHeartRate
(安静時心拍数) のグラフをプロットしてみる。
冬は心拍数が高くなるらしい。よかった。
org-mode → Markdown → はてなブログ投稿の実験 まとめ
Table of Contents
Org 8.x のMarkdown がうまくいかない
M-x org-md-export-as-markdown (C-c e m M)
でOrg 文章をMarkdown形式に変換できる。
はてなブログもMarkdown 記法に対応しているので、これをそのまま貼り付けるだけで記事が投稿できる。
下は Org 8.x でその出力テストを行ったもの。
スケジュールやTODOリストなど、後半部分は記事の構成要素にならなさそうなので、言及しない。 他、記事を書くにあたって問題になりそうな不備を洗い出してみた。
- (おそらく)空白行を挟まずにリストを作成すると、それをリストと認識しない
- 表の体裁が崩れている (列グループ化が適用されていない)
- 内部リンクが機能していない
- 脚注のリンクが機能していない
Org 9.x に上げると殆ど解決した
どうしてこうなるのか・・・を考える前に Org-mode のバージョンを上げたら大体は解決しました。
ぱっと見たところ不備は残りこれくらい。
- 表の列グループ化が適用されていない → 使う機会が少なそうなので、今回はスルー
- new! ソースコードが適用されていない
残った問題
ソースコードが適用されていない (+ハイライトしたい)
リファレンスのタグ付けの部分が悪さをしていたらしい。 以下は正常に出力された。
' #+BEGIN_SRC emacs-lisp -n
' (save-excursion
' (goto-char (point-min)))
' #+END_SRC
↑org ↓出力
1 (save-excursion
2 (goto-char (point-min)))
欲を言えばシンタックスハイライトしたい。 そこで、コードの部分をMarkdown記法で埋め込む方法をとってみる。
' #+BEGIN_EXPORT html
' ```python
' def hello():
' str = "Hello World"
' print(str)
'
' # Hello!
' hello()
' ```
' #+END_EXPORT
↑org ↓出力
def hello(): str = "Hello World" print(str) # Hello! hello()
#+BEGIN_EXPORT html ... #+END_EXPORT
で囲まれた部分はMarkdownエクスポートの際、
そのまま出力される。このブロックはOrg-mode のEasy Template機能で <h [TAB]
で呼び出せる。
```python ... ```
はMarkdown記法。ソースコードの言語名を指定することで、はてなブログが
対応している言語はシンタックスハイライトしてくれる。
痒いところに手が届かないところは直Markdownで
画像やURLリンク(埋め込み形式)も Markdown直打ちで対応したほうが見栄えの調節が便利だったりする。
' #+BEGIN_EXPORT html
' <img src="https://orgmode.org/img/main.jpg" width=200>
'
' [https://www.google.co.jp/:embed]
' #+END_EXPORT
↑org ↓出力
org-mode からMarkdownにエクスポート、そのままはてなブログに (Org 9.1.6)
Table of Contents
- はじめに
- 見出し (これは見出し1)
- リスト
- 文字の装飾、水平線
- 特殊文字、上付き文字、下付き文字
- 段落、改行、引用
- 例示、ソースコード
- 表
- 表 (列グループ化)
- 画像
- ハイパーリンク
- 内部リンク
- 脚注
- 日付と時刻
- スケジュール、締め切り
- ドロワー
- タグ
- Meeting with the French group:work:
- Summary by Frank:boss:notes:
- Meeting with the French group:work:
- リスト
- リスト(優先順位)
- リスト (タスクの進捗率表示)
- リスト (チェックボックス)
はじめに
ほぼ自分用に Emacs Org文書を org-md-export-to-markdown
でMarkdown化したものを
、そのままはてなブログに載せた。
一部文章を https://orgmode.org/manual/ から引用させていただいた。
orgの EXAMPLE ブロックの問題で、org側コードは全て行頭に 「'」 を加えている。 ( EXAMPLE ブロック問題の部分についての、 るびきちさんの記事 http://emacs.rubikitch.com/org-src/)
- Org version: 9.1.6
- 最終投稿日時: 2018/02/11
見出し (これは見出し1)
' ** 見出し2
' これは見出し2
' *** 見出し3
' これは見出し3
' **** 見出し4
' これは見出し4
' **** 見出し5
' これは見出し5
見出し2
これは見出し2
見出し3
これは見出し3
見出し4
これは見出し4
見出し5
これは見出し5
リスト
' My favorite scenes are (in this order)
' 1. The attack of the Rohirrim
' 2. Eowyn's fight with the witch king
' + this was already my favorite scene in the book
' + I really like Miranda Otto.
' 3. Peter Jackson being shot by Legolas
' - on DVD only
' He makes a really funny face when it happens.
' But in the end, no individual scenes matter but the film as a whole.
' Important actors in this film are:
' - Elijah Wood :: He plays Frodo
' - Sean Astin :: He plays Sam, Frodo's friend. I still remember
' him very well from his role as Mikey Walsh in The Goonies.
My favorite scenes are (in this order)
- The attack of the Rohirrim
- Eowyn's fight with the witch king
- this was already my favorite scene in the book
- I really like Miranda Otto.
Peter Jackson being shot by Legolas
- on DVD only
He makes a really funny face when it happens.
But in the end, no individual scenes matter but the film as a whole. Important actors in this film are:
- Elijah Wood: He plays Frodo
- Sean Astin: He plays Sam, Frodo's friend. I still remember him very well from his role as Mikey Walsh in The Goonies.
org-mode からMarkdownにエクスポート、そのままはてなブログに (Org 8.2.10)
Table of Contents
はじめに
ほぼ自分用に Emacs Org文書を org-md-export-to-markdown
でMarkdown化したものを
、そのままはてなブログに載せた。
一部文章を https://orgmode.org/manual/ から引用させていただいた。
orgの EXAMPLE ブロックの問題で、org側コードは全て行頭に 「'」 を加えている。 ( EXAMPLE ブロック問題の部分についての、 るびきちさんの記事 http://emacs.rubikitch.com/org-src/)
- Org version: 8.2.10
- 最終投稿日時: 2018/02/01
見出し (これは見出し1)
' ** 見出し2
' これは見出し2
' *** 見出し3
' これは見出し3
' **** 見出し4
' これは見出し4
' **** 見出し5
' これは見出し5
見出し2
これは見出し2
見出し3
これは見出し3
見出し4
これは見出し4
見出し5
これは見出し5
リスト
' My favorite scenes are (in this order)
' 1. The attack of the Rohirrim
' 2. Eowyn's fight with the witch king
' + this was already my favorite scene in the book
' + I really like Miranda Otto.
' 3. Peter Jackson being shot by Legolas
' - on DVD only
' He makes a really funny face when it happens.
' But in the end, no individual scenes matter but the film as a whole.
' Important actors in this film are:
' - Elijah Wood :: He plays Frodo
' - Sean Astin :: He plays Sam, Frodo's friend. I still remember
' him very well from his role as Mikey Walsh in The Goonies.
My favorite scenes are (in this order) 1. The attack of the Rohirrim 2. Eowyn's fight with the witch king - this was already my favorite scene in the book - I really like Miranda Otto. 3. Peter Jackson being shot by Legolas - on DVD only
He makes a really funny face when it happens.
But in the end, no individual scenes matter but the film as a whole. Important actors in this film are: - Elijah Wood: He plays Frodo - Sean Astin: He plays Sam, Frodo's friend. I still remember him very well from his role as Mikey Walsh in The Goonies.
続きを読むThinkPad X1 Carbon をカスタマイズする
Table of Contents
はじめに
Thinkpad X1 Carbon 2017年モデルを購入した。
スペックは以下の通り。
- インテル® Core™ i5-7200U プロセッサー (2.50GHz, 3MB)
- Windows 10 Home 64bit
- 14.0型WQHD液晶 (2560x1440 IPS 300nit 光沢なし) タッチ非対応
- 8GB LPDDR3 1866MHz (オンボード)
- 256GB ソリッドステートドライブ PCIe-NVMe (OPAL対応)
- 3セル リチウムイオンバッテリー (57Wh)
- 45W ACアダプター(USB Type-C)
- インテル Dual Band Wireless-AC 8265(2x2) Bluetooth 4.1
- 14.0型WQHD液晶 (2560x1440 IPS 300nit 光沢なし) 720pカメラ付 ブラック
カスタマイズした部分をメモとして残していく。
Capslock をCtrl に変更
Ctrl2cap を実行した。
Google 日本語入力の導入
Google 日本語入力 を導入した。
導入後、変換・無変換キーを Mac風に (日本語入力のオン・オフ) 設定した。 (参考: http://www.karakaram.com/mac-ime)
デスクトップの場所を修正
デフォルトのデスクトップ画面が C:\Users\ユーザー名\OneDrive\デスクトップ
となっていた。
このMicrosoftCommunity の投稿 を参考に C:\Users\ユーザー名\デスクトップ
に変更した。
Windows キー + R キー > 「regedit」と入力して [OK]
レジストリ エディターが起動したら左側のツリーを以下のように展開 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
- 名前欄「Desktop」のデータ欄が「%USERPROFILE%\Desktop」となっているか確認
Google Chromeの導入
https://www.google.co.jp/chrome/browser/desktop/index.html からインストール。
Microsoft Edge について
速度も他のブラウザと遜色無くできれば使用したかったが、 テキスト右クリックからの検索 に難ありだった。
デフォルトは、画像のように、「Cortana に質問する」という欄が(Google検索が欲しい・・・)。
窓の杜: 「Microsoft Edge」でも選択テキストのGoogle検索が行えるようにする拡張機能 から、右クリックでGoogle検索は出来るようになる。
が、ここで 「s」キーを押してもGoogle検索してくれない(マウスカーソルを 「Search with Google」 に合わせてクリックする必要がある!)。
マウスカーソルをなるべく使いたくない自分としては苦痛だったので、ここでChrome に変更することを決心。
( 当たり前だが ) Chrome はテキスト右クリック→「s」キーでGoogle検索をしてくれる。
Emacs
IPAゴシックの導入
Emacs 用に、IPAゴシック (サイト) をインストールした。 等幅フォントである。
Emacs の導入
以下に記載。
おわりに
デスクトップアイコンとタスクバーのショートカット、およびスタートメニューのアイコンを全て消去。
スッキリ。
ThinkPad X1 Carbonをカスタマイズする (Emacs編)
Table of Contents
インストールと起動
- GNU Emacs から、Windows版 をダウンロード。 今回は emacs-25.2-x86_64.zip にした。 zipを展開して、適当な場所に保存。
Windows emacsの実行exeは 「emacs-XX/bin/runemacs.exe」。 これをショートカットにしてクリック起動でも良いが、 Windowsキー → "emacs" → [RET] で起動できるようにしたい。
ここ(ITpro) を参考にして、設定を行った。
設定
はじめに
フォントから パッケージまで、全て 設定ファイルに手書きしても良いが。 (そこまでemacs-lisp に詳しくないので)GUIで出来る部分はGUIでささっと設定する。
[Option] タブから以下、設定した。
- [Highlight Matching Parentheses] (対応する括弧をハイライト) をONに。
- [Show/Hid] タブより
- [Tool-bar] をOFFに。
- [Time,Load and Mail] をONに。
- [Column Numbers] をONに。
- [Set Default Font] でフォントを「IPAゴシック」に設定する。
- 設定が終わったら [Save Options] で設定を保存。 (好みに合わせて他の設定もいじってみてください)
IPAゴシックについて
IPAが公開している等幅フォント (https://ipafont.ipa.go.jp)。 org-mode で表を使用するときに、等幅フォントだと全角半角混じりでも 表の体裁が崩れない。
同じ等幅フォントとして、Myrica (https://myrica.estable.jp/)もある。 縦棒 (|)の表記が個人的に好きでは無かったので、今回はIPAゴシックを選択した。
有料だが、個人的にはHGゴシックM がおすすめ。 社用PCはこちらにしている。
http://designpocket.jp/dl_font_category/detail.aspx?bid=19951
.emacs
先程設定した情報は、
%USERPROFILE%/AppDara/Roaming (大体 /Users/%USERNAME%/AppData/Roaming)
配下に .emacsファイルとして保存されている。
この .emacsファイルに追加の設定を加えていく。
非パッケージ、一般
;; --- general ---
;; デフォルトエンコードを utf-8にする
(set-default-coding-systems 'utf-8-dos)
;; 起動時の Emacsロゴ等、メッセージを出ないようにする
(setq inhibit-startup-message t)
;; メッセージ音を出さないようにする
(set-message-beep 'silent)
;; C-x C-k (Ctrl押しながら "xk") で現在のバッファを閉じる
;; 通常は C-x k (Ctrl押しながら "x"、その後 "k"押下)
(defun my-kill-current-buffer ()
(interactive)
(kill-buffer (current-buffer)))
(define-key global-map (kbd "C-x C-k") 'my-kill-current-buffer)
;; 行頭で C-k (kill-line) で行ごと削除する
(setq kill-whole-line t)
;; 左端に行数を表示させる + 色の設定
(global-linum-mode t)
(set-face-attribute 'linum nil
:foreground "#fe4b4b"
:height 0.9)
;; C-Return でCUAモード (矩形選択などができる)
(cua-mode t)
(setq cua-enable-cua-keys nil)
;; 初期状態の C-hは help起動
;; これを バックスペースにする
(global-unset-key (kbd "C-h"))
(global-set-key (kbd "C-h") 'delete-backward-char)
;; 初期状態の C-l は recenter (スクリーンを再描画してカレント行を中央に置く)
;; 個人的に使用しないコマンドなので解除、よく使うコマンドに割り当てる
(global-unset-key (kbd "C-l"))
;; --- 選択範囲の文字置換
(global-set-key (kbd "C-l C-l") 'replace-string)
;; --- 選択範囲の文字置換 (正規表現)
(global-set-key (kbd "C-l C-p") 'replace-regexp)
;; --- マクロ関係
(global-set-key (kbd "C-l C-8") 'kmacro-start-macro)
(global-set-key (kbd "C-l C-9") 'kmacro-end-macro)
(global-set-key (kbd "C-l C-,") 'kmacro-end-and-call-macro)
;; 個人的に入れたパッケージの保存場所を load-pathに追加
;; 参考: http://www.math.s.chiba-u.ac.jp/~matsu/emacs/emacs-aux.html
(setq load-path (cons "c:/Users/MY_USER_NAME/emacs/my_packages/" load-path))
続きを読む