ポエムはこっちです.
Emacsのモードラインの時刻表示を秒単位するにはdisplay-time-intervalでやる
タイトルのままのことがやりたいだけ.
以下の設定でできます.
(setq display-time-interval 1) ;; こいつで設定する. デフォルト値は60秒で, 今だと1秒毎に更新 (setq display-time-string-forms '((format "%s:%s:%s" 24-hours minutes seconds))) (setq display-time-day-and-date t) (display-time-mode t)
これでEmacsでモードラインに時刻を表示させる display-time-mode
をちょっと快適にできました.
僕は時刻表示をするときはいつも秒まで表示するタイプなんだけど, Emacsで秒単位を表示させると時刻の更新間隔が1分毎なので困まった. これだと秒を表示する意味がない.
普通にググると単純に時刻を表示するための display-time-day-and-date
と display-time-mode
の記述しか出てこない.
やり方わかってから見つけたけどEmacsWikiの title-tile.el
の部分にちょろっと書いてあったりする.
結局ググっても全然出てこないので, describe-variable
で display-time-mode
を調べて time.el の存在を知った. そこからそれっぽい display-time-update
, display-time-event-handler
を見つけ, display-time-interval
を発見したという流れ.
Emacs設定情報結構ググってしまいがちだけどわからければ describe-variable
で調べて定義周辺のコードを読んでしまえばわかるというのは良い体験だった.
これからもEmacs少しづつ便利にしていきたい.
追記:
emacs display-time-interval
で調べたら日本語の記事がかろうじて出てきた(というか英語記事も全然出ないのだが……). このサイトがめちゃくちゃ良くてスラドなんですよ. スラド最高.
Emacs実践入門 出版記念イベントに参加してきた
Emacs実践入門 出版記念イベント に参加してきた.
5年前に出たEmacs実践入門の改訂版が出たことによる出版記念イベントで, 内容としては著者の 大竹智也 さんの基調講演や, 自分のエディタさばきを披露する『エディタの鉄人』, 様々な発表者の方の発表などがあった. 暗黒美無王でおなじみの@ShougoMatsuさんの実況・解説があって, ときどき「Vimだとこうですね」と間にはさんでいて面白かった.
盛り上がったのが『エディタの鉄人』で, https://www.gnu.org/software/emacs/history.html のページからEmacsのリリースリストをコピペしてきて, これに対して
-
を タブに変換する<li></li>
で各行を囲む- Markdownのテーブルにする
という操作を前で披露してもらうというもの.
操作一つをとっても一人一人でやり方が違っていて, -
を複数選択してマルチカーソルでタブにする人や, replace-regex
で置換する人, <li>
は矩形選択して </li>
は置換を使う人, マルチカーソルで <li></li>
を挿入する人と様々だった.
ただMarkdownのテーブルに直す操作では, それぞれの方法で |
を挿入してから見た目を整えるときにorg-modeの機能の一部をMarkdownの編集に利用する, といったものが共通していてorg-modeを全然利用していない自分としては目から鱗だった.
他にもorg-modeの凄さを感じる瞬間が多く, 他人と共有するMarkdownやPDF, docxをorg-modeで書いてから変換させたり, 発表スライドをorg-modeで作ってきている方もいてorg-mode万能説を感じた.
他人がEmacsを使う様子を見ていると自分はまだまだEmacsを活用しきれていないなと思ったけど, 今後どんな風にEmacsを拡張していくかの参考になったので他人の使う様子を見れたのは良かった.
またこのような機会があれば是非参加したいし, 今度は自分のエディタを披露できるくらいになりたいと思った良いイベントだった.
当日の様子はこちらをどうぞ. twitter.com
IntelliJでScalaパッケージをインポート時にブレースの囲みにスペースを入れる方法
Version 2017.2.3で確認.
IntelliJのデフォルト設定だと, Scalaで一つのパッケージから複数のクラスをインポートするとき, ブレースの囲みにスペースが入っていない.
つまりこうなっているのを
import akka.http.scaladsl.model.{HttpRequest, HttpResponse}
こうする方法.
import akka.http.scaladsl.model.{ HttpRequest, HttpResponse }
Scala Code Style的にはどっちでも良さそうだけど, 今書いてるプロジェクトはスペースが入っている方で, Auto Import機能でインポートすると勝手に既存のコードをスペース無しにフォーマットしてウザい. このままだとフォーマットに気づかずコミットしかねないので設定でなんとかする.
設定は簡単で, File -> Settings... -> Code Style -> Scala
の Space タブで以下の設定をする.
Spaces after open and before close braces in imports
にチェック
これでコミットに不必要な差分が紛れ込むことがなくて快適になります.
Elpyを使ってPython用Emacsの設定を書いた
大学4年生になり研究でPythonを使う必要が出てきたので, EmacsにPython用の設定を追加した. 普段なら他の人の設定をコピペするだけなのだが, 今回利用したパッケージを使った例が少なかったのでまとめることにした.
前提条件
-
- Emacs 25.2
- 補完インターフェースはAuto-Completeを使用
- パッケージ管理はel-getを使用
Python2系が必要なときはvirtualenvを使うけど, 3系前提ならvenvだけで良さそう*1.
前提と同じPython3 + venvを入れるには以下の記事が参考になる.
pyenv + venvでPython3環境を構築する - $shibayu36->blog;
利用したパッケージ
elpyはEmacsをPythonのIDE化するパッケージ.
書いた設定
(el-get-bundle! python-mode) (setq auto-mode-alist (cons '("\\.py\\'" . python-mode) auto-mode-alist)) (el-get-bundle! elpy (elpy-enable) (setq elpy-rpc-backend "jedi") (add-hook 'elpy-mode-hook '(lambda () (auto-complete-mode -1) (define-key company-active-map (kbd "C-n") 'company-select-next) (define-key company-active-map (kbd "C-p") 'company-select-previous) (define-key company-active-map (kbd "<tab>") 'company-complete))))
使い方
- プロジェクト環境に依存パッケージをインストール.
$ source bin/activate
$ pip install jedi もしくは rope
$ pip install flake8 importmagic autopep8 yapf
- Emacsでプロジェクトディレクトリを開いて
M-x pyvenv-activate
をする. どの仮想環境を利用するか選択するので, プロジェクトディレクトリを指定して選択.- プロジェクトの環境が有効になり補完やLintが効くようになる.
- 完了
- 何かおかしかったら
M-x elpy-config
で設定を確認できるのでそれを見ながら修正する.
- 何かおかしかったら
補完のバックエンドをjediかropeで選択できる. どっちを選べばいいかはelpyの公式のWikiに書いてある.
雑感
よくあるブログエントリだとjediを入れて補完が出来るようにするのが多いけど, Python仮想環境のことを考えていなかったりvirtualenvを使っていたりで千差万別なので, 今回自分用でまとめてみた.
Pythonは書き始めたばかりなので, IDEの機能や周辺のLint・リファクタリングツールを全然使いこなせていない. 手持ち無沙汰感は否めないけどよしとする.
設定に関してだと el-get-bundle!
の辺りは各自の使っているパッケージ管理ツールに適宜読み換えればいいと思う.
elpy-mode-hook
にくっついている設定はAuto-Completeを無効にし, Company-Modeのキーバインドを最低限設定するもの. 普段からCompany-Modeを使っている人必要なさそうだけど, 自分は普段Auto-Completeを使っているのでPythonを書くときだけCompany-Mode を有効にするという形を取った.
Auto-Completeを使う方法もあるのかもしれないけどそこまで調べていないのでひとまずは現状でいいかという気持ち.
より詳しく, 正確にEmacsでPythonの設定をするならEmacsWikiを見ると良さそう.
EmacsWiki: Python Programming In Emacs
参考記事
*1:むしろvenvのみの方が余計なものを考えなくて良いと思う. 止むに止まれぬ事情があるときはvirtualenvを入れよう
【未完】PHPで普通のWebサイトの作り方
これはUEC Advent Calendar 201622日目の記事です。 www.adventar.org
21日はid:etheldreda-33rさんで「勤労学生と言う選択肢[UEC 2016]」でした。 etheldreda-33r.hatenablog.com
大遅刻をかましてしまいすみませんでした。まだ完成していなくてどうしようという気持ちですが、流石にそろそろ公開しないと良くない気がしてきたのでひとまずこのエントリに関連した発表のスライドをのせておきます。いずれ追記をするので、その時に気づいた方は見ていただけると幸いです。
今回書くのは電通大総合情報学科3年前期に行われた、メディアネットワークという授業で僕が作ったものについてです。
はじめに
今回のタイトルには多分に語弊が含まれます。わーるどわいどうぇぶに公開できるレベルのサイトの作り方は書きません。それを期待した人はごめんなさい………
メディアネットワークという授業は僕の所属する電気通信大学総合情報学科の3年生向けに開講される授業です。内容を簡単に言うと、PHPを使って動的にコンテンツを生成するホームページを作るという授業です。PHPを使ったアプリケーションを作ることでWebの基本的な事項を学習するわけです*1。当然ネットワークに関する知識やHTTP、PHP自体の知識やWebアプリケーションを作る上での簡単なセキュリティの話が出てきます。授業の評価は、各個人で好きなサイトを作り、共用サーバ上で公開された作品で決まります。
さて、僕が作ったものはSlideShareやSpeaker Deckのようなスライドを投稿して、サイト上で見れるようにするアプリケーションでした。せっかくの機会だったので、色々と実験をしようとしたのですが、時間が足りず中途半端な形になってしまいました*2。
このアプリケーションを作る上で一番の工夫点はRESTfulなURIの実現です。以下ではRESTなURIを実現するために行ったことについて書いていきます。
今はこのスライドを見てください
おわりに
重ねて大遅刻をかましたことをお詫びします。id:knium君にはとても迷惑をかけました…… 2014年からUEC Advent Calendarを書いていて、これで3度目になりました。今年はギリギリまでAdventarに作られなかったのでどうしようかと思っていたのですが、後輩の手で作成されたのでもう何年かは続きそうですね。
話は変わって、12月22日は僕の所属する総合情報学科の卒研配属の1次配属者発表の日でした。幸いにも僕の配属先は決定し、何の因果か仮配属先はこのメディアネットワークを担当していた先生でした。授業を受けている時にはこの先生の研究室を志望するとは全く考えていませんでしたが、ある程度まともなものを作っておいて良かったかなと思います。授業の結果が直接、配属の理由になったというわけではないですが、自分が本当にやる気を出そうと思ったところで出せるといい事があるのかもしれません。
良い報告ができたところで、この辺りで締めようと思います。 UEC Advent Calendar2016, 24日目はアムザさんで[UECAC2016]電通大のプロデューサーとD@NPENを作った話です。