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-datedisplay-time-mode の記述しか出てこない. やり方わかってから見つけたけどEmacsWikititle-tile.el の部分にちょろっと書いてあったりする.

EmacsWiki: title-time.el

結局ググっても全然出てこないので, describe-variabledisplay-time-mode を調べて time.el の存在を知った. そこからそれっぽい display-time-update, display-time-event-handler を見つけ, display-time-interval を発見したという流れ.

Emacs設定情報結構ググってしまいがちだけどわからければ describe-variable で調べて定義周辺のコードを読んでしまえばわかるというのは良い体験だった.

これからもEmacs少しづつ便利にしていきたい.

追記:

emacs display-time-interval で調べたら日本語の記事がかろうじて出てきた(というか英語記事も全然出ないのだが……). このサイトがめちゃくちゃ良くてスラドなんですよ. スラド最高.

srad.jp

Emacs実践入門 出版記念イベントに参加してきた

Emacs実践入門 出版記念イベント に参加してきた.

5年前に出たEmacs実践入門の改訂版が出たことによる出版記念イベントで, 内容としては著者の 大竹智也 さんの基調講演や, 自分のエディタさばきを披露する『エディタの鉄人』, 様々な発表者の方の発表などがあった. 暗黒美無王でおなじみの@ShougoMatsuさんの実況・解説があって, ときどき「Vimだとこうですね」と間にはさんでいて面白かった.

盛り上がったのが『エディタの鉄人』で, https://www.gnu.org/software/emacs/history.html のページからEmacsのリリースリストをコピペしてきて, これに対して

  1. - を タブに変換する
  2. <li></li> で各行を囲む
  3. 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 にチェック

gyazo.com

これでコミットに不必要な差分が紛れ込むことがなくて快適になります.

Elpyを使ってPython用Emacsの設定を書いた

大学4年生になり研究でPythonを使う必要が出てきたので, EmacsPython用の設定を追加した. 普段なら他の人の設定をコピペするだけなのだが, 今回利用したパッケージを使った例が少なかったのでまとめることにした.

前提条件

Python2系が必要なときはvirtualenvを使うけど, 3系前提ならvenvだけで良さそう*1.

前提と同じPython3 + venvを入れるには以下の記事が参考になる.

pyenv + venvでPython3環境を構築する - $shibayu36->blog;

利用したパッケージ

elpyはEmacsPythonIDE化するパッケージ.

書いた設定

(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 で設定を確認できるのでそれを見ながら修正する.

補完のバックエンドをjediropeで選択できる. どっちを選べばいいかは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を使う方法もあるのかもしれないけどそこまで調べていないのでひとまずは現状でいいかという気持ち.

より詳しく, 正確にEmacsPythonの設定をするなら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アプリケーションを作る上での簡単なセキュリティの話が出てきます。授業の評価は、各個人で好きなサイトを作り、共用サーバ上で公開された作品で決まります。

さて、僕が作ったものはSlideShareSpeaker Deckのようなスライドを投稿して、サイト上で見れるようにするアプリケーションでした。せっかくの機会だったので、色々と実験をしようとしたのですが、時間が足りず中途半端な形になってしまいました*2

このアプリケーションを作る上で一番の工夫点はRESTfulなURIの実現です。以下ではRESTなURIを実現するために行ったことについて書いていきます。

今はこのスライドを見てください

speakerdeck.com github.com

おわりに

重ねて大遅刻をかましたことをお詫びします。id:knium君にはとても迷惑をかけました…… 2014年からUEC Advent Calendarを書いていて、これで3度目になりました。今年はギリギリまでAdventarに作られなかったのでどうしようかと思っていたのですが、後輩の手で作成されたのでもう何年かは続きそうですね。

話は変わって、12月22日は僕の所属する総合情報学科の卒研配属の1次配属者発表の日でした。幸いにも僕の配属先は決定し、何の因果か仮配属先はこのメディアネットワークを担当していた先生でした。授業を受けている時にはこの先生の研究室を志望するとは全く考えていませんでしたが、ある程度まともなものを作っておいて良かったかなと思います。授業の結果が直接、配属の理由になったというわけではないですが、自分が本当にやる気を出そうと思ったところで出せるといい事があるのかもしれません。

良い報告ができたところで、この辺りで締めようと思います。 UEC Advent Calendar2016, 24日目はアムザさんで[UECAC2016]電通大のプロデューサーとD@NPENを作った話です。

alevam.me

参考

*1:資料を見返してみると、コミュニケーションツールとしてのWebだとか他にも色々書いてありました

*2:実はインターン期間中も完成しておらず、提出日までインターンの課題と平行して作り続けていました

聖夜の夜にDentoo.LT

これはMMA Advent Calendar 201623日目の記事です。

今朝ユーリ!!! on ICEの最終話をみて ガチ泣きしてしまったid:miki_beneです。

昨日はid:mizdra君でMMAに入って1年でやったことでした。今の2年生も積極的ですが今年の1年生もかなり積極的で、前回のDentoo.LTでは飛入り枠で登壇してくれました。 優秀で活動的な後輩が多いと自分もやってやらないとなという気持ちになり刺激的です。

実は僕は22日の分のUEC Advent Calendar 2016を書いていないのでこれから書かないといけないのですが、こっちの方がシュっと書けそうなのでこちらを先に書こうと思います。id:Knium君ごめん。

さて聖夜の夜にDentoo.LTというタイトルですが、特別クリスマスとからめるようなネタも思いつかないので、Dentoo.LTについて僕の思っていることをつらつらつらと書いていきます。正直このエントリ*1であらかた書いてしまった感がありますが頑張って書こうと思います。

※追記

書いていると自分のDentoo.LTに対する勝手な思いを列挙するものになりました。独り善がりなことばかり書いてありますが、読んでもらえれば幸いです。

見てほしい

Dentoo.LTでは毎回YouTube Liveを使った生配信を行っています。配信を見ている人は割といて、僕自身も初回Dentoo.LTのUst配信を見ていた人間です。しかし割といるとはいえ、その内訳はMMAやその周囲の人が多い印象を受けます。もちろんゼロというわけではなく、#detooltハッシュタグを追っていると、ちらほら電通大以外と思われる方のツイートも見かけます。そう言った方々は本当にありがたいです。

最近は自分達の周囲の範囲だけではなく、学内の他の層にも知ってほしいと思っていたりします*2。Dentoo.LTは学内の人だけではく、他大や社会人の方も参加し、登壇しているイベントです。そういった方々の話を聞いたりする機会はせまい大学の中ではなかなかあるものだとは思いません。是非配信を見てほしいと思います。

来てほしい

生配信をしているとはいえ、もっと会場に来る参加者が増えてほしいです。これについては登壇者、運営側両方の思いがあります。

登壇者としては聴衆が多い方が緊張もしますが張り合いも出ます。配信では多くの方が見てくれているのかもしれないけれど、やっぱり顔が見れた方が反応もあってやりやすいです。

そして運営側としては、人が多い方が盛り上がります。拍手やガヤの音も大きいですし、人が多い方がそれだけ質問をしてくれる人も多くなるかもしれません*3

こういう言い方をすると押し付けがましいですが、やっぱり会場で発表を聞いている方が楽しいと思います。その場の空気感は会場でないと感じることはできないし、そしてこの空気感にあてられてあわよくば飛び入り登壇をしてほしいとも思っています。

登壇してほしい

これはかなり切実な思いです。周りの人に「登壇してよ」「何か話してみない?」と誘ってみると、返ってくる言葉はたいてい「話すネタが無い」です。確かにいきなり登壇をしてくれというのはハードルが高く感じてしまい難しいかもしれません。しかし、話すネタが無いということはないはずです。これは僕の思い込みなのかもしれませんが、どんな人でも自分が話したい、語りたい、みんなに伝えたいと考えてることがあるはずです。Dentoo.LTのテーマは特別決まっていません。技術的な内容でなければいけないという決まりもありません。話したいこと話せば、それで十分なんです。

YAPC::Asiaという大きいイベントを開催していた人のツイートを貼っておきます。

Dentoo.LTの登壇希望は早い者順なので選考はしていませんが、登壇希望を出そうか迷っている人は思い出してみてください。

「自分は人の前で話すのが苦手」

そうかもしれません。でもそれを人に話したいと思ったのなら話してみるべきです。失敗が恐いかもしれませんが、それは僕も同じです。ここだけの話、僕は毎回の発表で中途半端な準備で中途半端なネタを仕込んでいるのですが、毎回狙った部分はすべってます。 上手く話せないことが心配なのかもしれません。大丈夫です。所詮10分間なので、たとえ上手くしゃべることができなくても10分後には自分の席に戻っています。

LTを考案した人の文書をのせておきます。

Shibuya Perl Mongers : What are Lightning Talks?

あとこれは僕の思い過ごしだと思いますが、下を向いている人がいるときは誰も自分の話を聞いていないのではと考えてしまいます。でもこれはきっと余計な心配です。下を向いている人はみんなTwitterで実況をしているか自分のスライドを作っています。

最後に運営側としての思いですが、毎回登壇者の募集に死苦八苦しているので、是非登壇をしましょう。

これから

次回のDentoo.LTは年明け2月末を予定しております。Dentoo.LTでは皆様の参加をお待ちしております。

www.youtube.com

atnd.org

Dentoo.LT

おわりに

僕のDentoo.LTについて思っていることをいろいろ書きつらねていきました。ここまでお付き合いいただきありがとうございます。

明日はid:hyr3kの記事です。彼が始めたMMA Advent Calendar。絶対に何も考えず勢いで作っただろうけどなんとかここまでつながって来ました。どう落し前をつけるのか最終日にどんな素晴しいエントリを書いてくれるだろかと楽しみです。期待しましょう。

*1:http://benevolent0505.hatenablog.com/entry/2016/12/05/140755

*2:と言う割にこれといった広報はしていませんが

*3:これも登壇者目線ですが、質問をしてくれた方が発表の時に言い忘れたことを補足できるきっかけになったり、なにより反応を直接もらえることが嬉しいです。