mizdra's poem

雑なこと (日記/技術ポエム/メモ/…) を書くブログです.

2018-07-07

七夕ですね

特にこれといったことはやりませんが.

地震

ゲームやっている時に緊急地震速報のアラームが鳴ってびっくりした.

#NowPlaying for Google Play Music

Google Play Musicで再生中の曲をTwitterで共有するブラウザ拡張機能「#NowPlaying for Google Play Music」を v1.0.1 にアップデートした. アップデート内容は以下の通り.

  • 曲名やアーティスト名などにアンパサンドなどのURIで特別な意味を持つ文字が含まれている時, 正しいツイートを生成できない問題を修正
  • 共有ボタンが表示されないことがある問題を修正

github.com

今回のバージョンから, GitHubリポジトリにCHANGELOGを含めるようにしてみた. CHANGELOGはgit-chglogを使ってコミットメッセージから自動生成している. シュッと生成できてめちゃめちゃ便利だった.

2018-07-06

今日の電車

  • 行き: 勝った気持ち
  • 帰り: 負け

休講情報表示システム

弊サークルの部室には, 弊学の休講情報を掲載するWebページを表示するディスプレイが配置されており, 部員が休講情報に高速にアクセスする手段を提供している. 果たしてディスプレイ1枚を常時可動させ, 手元のスマートフォンからも数タップでアクセス可能なページを表示させる意味があるのか, という点については議論の余地があるだろう. が, 弊学の教務課がWebページを更新する度にそれを紙に印刷し, 掲示板に張り出しているという処置が取られていることに対する対抗運動であると考えるならば, 妥当と言えるかもしれない *1.

さて, この休講情報表示システムだが, 最近システムに利用されている端末が壊れたまま放置されていたため, 他の部員と協力して復活させることにした. 僕が担当したのはブラウザを開き, 休講情報を画面に表示する部分. 端末にはマウスは接続されていないため, どうにかしてブラウザをCLIから操作する必要がある. こういう時に GoogleChrome/puppeteer が便利.

const puppeteer = require('puppeteer')

const RELOAD_INTERVAL = 10 * 60 * 1000 // 10 minutes

async function setup() {
  const browser = await puppeteer.launch({ headless: false, args: ['--disable-infobars'] })
  const page = await browser.newPage()
  await page.goto('http://kyoumu.office.uec.ac.jp/kyuukou/kyuukou.html')

  return { browser, page }
}

async function main() {
  const { browser, page } = await setup()

  // 最新の休講情報を表示するため定期的にWebページをリロードする
  while (true) {
    await page.reload()
    // viewport size を window inner size に合わせる
    // ref: https://github.com/GoogleChrome/puppeteer/issues/1183#issuecomment-383722137
    await page._client.send('Emulation.clearDeviceMetricsOverride')

    // 表をフルスクリーンで表示
    await page.$eval('table', (el) => {
      el.webkitRequestFullscreen()
      el.style.backgroundColor = 'white' // そのままだと全画面表示したときに黒になるので, 背景色を変更
    })
    await page.waitFor(RELOAD_INTERVAL)
  }
}

main()

puppeteerは本来Chromiumをヘッドレスブラウザとして操作するためのライブラリで, デバッグのために puppeteer.launch({ headless: false }) という実際のウインドウを表示するオプションが付いている. これを利用することで, ユーザはブラウザが実際にどのような挙動を示すのかを目で確認しながらpuppeteerを使ったコードをデバッグできる. 今回はこの機能を流用し, puppeteerをモダンなJavaScript APIでブラウザを操作できるライブラリとして利用している.

実際に動かすと以下のような感じになる. ついでにFullscreen APIでちゃんと表を全画面表示してくれて最高ですね.

f:id:mizdra:20180707012100g:plain

*1:実際どのような理由で設置されているのかは僕は把握しておらず, 適当なことを書いています.

2018-07-04

今日の電車

  • 行き: 負け
  • 帰り: 負けた気持ち

痛み

最近歩いたり息を吸う時に, 右肺の下あたりが痛むようになった. この症状は少なくとも6年前から現れていたと認識していて, 症状が出るのも不定期だし, 痛みが出ても暫く経つと収まっていたので, そんなに深刻に考えていなかった.

弊サークルにある#healthという, 健康に関する話をするチャンネルにこの話を投げてみた所, 「肋間神経痛」というワードが出てきた. Wikipediaから引用すると,

肋間神経痛(ろっかんしんけいつう、intercostal neuralgia)とは、ろっ骨に沿って走る神経が何らかの原因で痛む症状のこと。

...

考えられる原因として一番多いのが、不自然な姿勢をとった時、また運動不足・疲労によって神経が骨や筋肉にはさまれて(絞めつけられて)突然起きる原発性。

...

姿勢を変えた時や呼吸するとき、物を持ち上げる時に痛みが現れるのが特徴で、発症している時に咳やくしゃみ等の生理現象から、ちょっとした外部からの力を加えられることで肋骨を骨折する危険性がある。

肋間神経痛 - Wikipedia

そういえば電車に乗ったときに突然くしゃみが出る時がよくあるけど, あれも関連しているのかなあ. アレルギー性鼻炎を発症しているので, それが原因かと思っていたけど. ともかく, 病院で診てもらうのが良さそうですね.

2018-07-03

今日の電車

  • 行き: 勝ち
  • 帰り: 勝ち

ヤマノススメ サードシーズン #1

見た. 良かった. TLで「筑波山で初デート!?」というサブタイトルに対して「デートだけど初じゃない」という指摘を見かけた. たしかにね.

風がめっちゃ吹いていて涼しかった. 昼が一番風が強くて夕方は大分落ち着いていたんだけど, 昼のほうが涼しく感じた. 暑いのは大変なので明日もこれで頼んだ.

日本語

今日は日本語を沢山書いたり喋ったりした. 最近喋る能力が若干落ちてきている気がしているので, 気をつけたい. 日常的に喋らないとどんどんお喋り力が落ちていくので, 毎日コツコツ喋っていきましょう.

2018-07-02

今日の電車

  • 行き: 勝ち
  • 帰り: 勝ち

大学

約2時間掛けて大学に行ったら, その日あるはずの講義が無かった. 一体何をしに往復3時間以上掛けて大学に来たんだろう…

「YOUは何しに大学へ?」

「分からない…何も…」

近所の林で1匹セミが鳴いていた. 夏.

課題

昨日やっていた課題の続きをやっていた. システムコールに関する課題なんだけど, Linuxのお気持ちが分からず苦戦していた. システムコールの挙動を調べようにもOSレベルのデバッグ方法をあまり詳しく知らないし, 適切な検索キーワードが思いつかずGoogle検索も上手くできなかったのでちょっと辛かった.

全人類 Linux contributors

全人類Linuxチョットデキルと言っている世界, ちょっと見てみたいけど怖そう.

2018-07-01

下半期

下半期になりました. shinchokudodesuka.tumblr.comを眺めながら上半期を振り返り, 気持ちを新たにして下半期もやっていきましょう.

課題

課題をやった. 進捗駄目です.

夏アニメ

7月になったのでアニメの予約をした. いつも通り予告を見て気になったものを雑に予約して, 後から切っていくスタイルで.

  • シュタインズ・ゲート ゼロ
  • ISLAND
  • ちおちゃんの通学路
  • ヤマノススメ サードシーズン
  • ハッピーシュガーライフ
  • 殺戮の天使
  • すのはら荘の管理人さん
  • 進撃の巨人 Season3
  • 七星のスバル

ちなみに過去の視聴状況は http://animetick.net/users/mizdra で見れる.