冬休みと秋葉原

ただの日記です。 冬休みなのでお仕事から離れてひさびさに好きなことを思う存分やったらリフレッシュできました。

第2回 98祭

ビンテージPCが好きです。 とくに、30年前〜20年前ほど前に一世を風靡したNECのPC-98x1シリーズが大変好きです。 何が好きなのかは語ると長くなるので割愛しますが、おおよそ日本独自の設計起動音が好きです。 収集欲と改造欲がすさまじいのですが、実用性は全くないので最近は我慢しておりました。

そんななか秋葉原で「第2回 98祭」が開催されておりましたので行きました。

akiba-pc.watch.impress.co.jp

往年の大スターが集結していて大変に感動したのと、好きな機種(そして持ってない)があったのと、非常に良心的なプライス(英世2枚)だったので ついうっかり買ってしまいそうになったのですが、家族から確実に怒られるので買いませんでした。独身じゃない抑止力ってすごいです。

あ、ただ、100円でこれまた古いMacintosh用のソフトをいくつか買いました。ですが、帰省の時に持って帰るのを忘れたのでまだ遊んでいません。

テレビを録画するPC

自宅にはBD/HDDレコーダがあるのですが、最近は不思議な力で録画予約の権利と空容量を取られてしまうので別の環境で録画することにしました。 新しいレコーダとかnasneとかも考えたのですが、勉強もかねてPCで録画することにしました。

いまのデスクトップPC(の体をしたサーバマシン)で録画できるようにしようかなと思ったのですが、録画中に再起動できないのも嫌な気がして別のPCを用意することにしました。 といってもそこまで予算がないので秋葉原でいろいろ見繕って、Haswell世代(第4世代)の中古PCとKabylake世代(第7世代)のアウトレットPCで悩みました(ここ楽しいお時間)

HaswellだとCore i5、KabylakeだとCeleronで、ここはHaswellでしょ感が強かったのですが、今更2014年代のPCを買うのもどんなもんだと思って、 2017年製のKabylakeなCeleronマシンにしました。CPUがIntel Quick Sync Video(QSV) に対応していると、非力なCeleronでもエンコードがそこそこ高速というのも決め手でした。

スペックはこんな感じになりました。諭吉2枚でおつりが来ました。

  • Intel Celeron G3930 (2M Cache, 2.90GHz, 2Core)
  • 4GB DDR4-2400
  • 1TB HDD
  • OSなし

全体的にもっさり感は否めないのですが、まあ録画ができれば良いので不満が出てきたら手を入れればいいやーと思っています。 OSなしモデルだったので、Linuxにしてみよっかなーとも思ったのですが、Windows 8.1が余っていたのでそれを入れました。インストール後にWindows 10 のインストーラを起動してみたら何事もなかったかのように10にアップグレードできました。

あと一緒に録画用のボードなども買ったのですがこちらは至って普通なので割愛。

結論:ゆるふわに楽しんだ!

Windows ノート PC を買うときに確認したいこと

ひさびさに、Windows の ノート PC を見繕う機会があったので、よく確認する項目と意外と忘れそうな項目の備忘録。

一般的なご家庭で5年くらいは戦えそうな要件をベースで。

よく確認する項目

  • CPU
    • Core i3 以上(まあでも i5 は欲しいよね)
  • 主記憶
    • 4 GB 以上(まあでも 8 GB は欲しいよね)
    • 増設できるタイプか、オンボード
  • 補助記憶
    • SSD 128 GB 以上(まあでも256 GB は欲しいよね)
    • SATA か M.2 か
  • ディスプレイのサイズ
    • お好み
  • ディスプレイの解像度
    • Full HD(1920×1080)は欲しいな・・・
    • HD(1366x768)だと Excel とか左右並べたエディタが辛い
  • Microsoft Office の有無
    • Personal だと PowerPoint は付属しない
    • Home and Business だと付属
    • 学生の場合は、Office 365 Education で無償で使えたりするよ

まあ、忘れる項目

もろもろ

  • 重量
    • 2 kg 以上は辛い
  • バッテリーでの稼働時間
    • お好みで。

OS

Home でできないこと

比較表:https://www.microsoft.com/ja-jp/windows/compare

がいらなければ、Home でもよさそう。

キーボード

  • Enter キーの右側に function キーがあってもよいか(重要
    • HP はよくついている・・・
    • 「しゅたたた、たーん」って Enter キーを押したつもりが、PageUpキー を押していたりする
    • 法人モデルだと選べたりする
  • 左側の ctrl キーと fn キー の並び(重要
    • 左端が fn なのは、NECLenovoPanasonic
    • 左端が ctrl なのは、富士通Dell
    • 慣れるまでしんどいので、気にしたいポイント
    • だけど、左側の fn と ctrlキーは、大抵の場合 BIOS で入れ替えられる。無理ならレジストリからでも書き換えられる。
  • カーソルキーの←→の上に PageUp / PageDown がついていてもよいか(重要
    • Latitude / ThinkPad はついている
  • 半角/全角キーの位置
    • Let's note は ESC の右側に合ったりする・・・

液晶のタイプ

  • グレア(光沢)かノングレア(マット)か
  • パネルタイプは、IPS > VA > TN の順で高級。大抵は、TNパネル・・・だよね。
  • 200 dpi以上(Macでいうとこの Retina)か否か

この辺買ったらいいんじゃなーいんって、よく良く思う PC

エンジニアが嫌になったら情シスになりたいって密かに思ってるよ(だってPCばらしたいしOSの初期設定好きなんだもん)

Mac の JIS キーボードでバックスラッシュ \ を入力したい

はじめに

最近の Mac の JIS キーボードでバックスラッシュ \ を入力するためには option + ¥ を押す必要がありました。PHPStorm 使いの僕、ああしんどい。

これまでこれを実現するには、 Karabiner-Elements で Complex Modifications 用の設定ファイルを書かないといけないようでした。

結論

  1. Karabiner-Elements をインストール
  2. https://pqrs.org/osx/karabiner/complex_modifications/#swap_yen_and_backslash_jis で設定ファイルを import
  3. Karabiner-Elements で Complex Modifications の「Change ¥ to Alt+¥」と「Change Alt+¥ to ¥」をEnable にする

以上!幸せ!

過程

ここを読んで、ああ自分で設定ファイルつくらないとなのね。と察しました。

github.com

いろいろ見ていったら、設定ファイルのプルリクがでておりました。 20時間前・・・

github.com

大変助かりました、、、ありがとうございます。

Dialogflow で LINE BOT を作ってみました

はじめに

DialogflowGoogle が提供する Google Assistant のアプリを作れるツール。

Webhookを使った初めてのアシスタント向けアプリ - ビットコイン情報

こちらのチュートリアルを参考に作ってみたのですが,コーディングなしに簡単にできてしまって, ことばのチューニングもできてしまって・・・と,感動してしました。

このチュートリアルで作成したアプリを拡張して,
今回は,Dialogflow の連携機能のひとつである,Line Messaging API との連携をやってみました。

やったこと

Dialogflow の連携機能について

なんだか気になる項目が沢山あります・・・

f:id:u9bo:20180321131503p:plain

今回は LINE を試してみました。

Line Messaging API (Channel)の登録

https://developers.line.me/console/register/messaging-api/provider/ から登録します。
困ったら,こちらのガイド( Messaging APIを利用するには )が参考になりそうです。

特筆すべき点として,

  • プロバイダー名を変更したい場合は,別途プロバイダーを作成する
  • プランは,Developer Trial を選択

あたりでしょうか。サクサク進めていくと Channel の登録が完了します。

Channel の設定

メッセージ送受信設定

  • アクセストークン(ロングターム)を発行
  • Webhook送信:利用する
  • WebhookURL:※後で設定します

LINE@機能の利用

  • 自動応答メッセージ:利用しない

LINEアプリへのQRコード

設定が終わったら,LINEで友達になっておきましょう。

Dialogflow との連携

Dialogflow に 先ほど作成した Channel の情報を登録していきます。
入力する値は以下のとおりです。

  • Channel ID : 基本情報の Channel ID
  • Channel Secret : 基本情報の Channel Secret
  • Channel Access Token : メッセージ送受信設定のアクセストークン(ロングターム)

f:id:u9bo:20180321140633p:plain

入力が終わったら,Webhook URL をコピーして,メッセージ送受信設定→ WebhookURL に入力します。

f:id:u9bo:20180321140715p:plain

最後に Dialogflow で START ボタンをクリックして,BOTを有効にします。

動作確認

Channel の メッセージ送受信設定→ WebhookURL で接続確認をクリックしてみましょう。成功しましたと表示されたらOKです。

実際に動かしてみた

動かしてみました。いい感じ。

Ubuntu 16.04 LTS から 17.10 にアップグレードしてみた

いろいろ悩まないように LTS 版を使っていたのですが、家で使う環境だしパッケージマネージャでいろいろ入れたいし、 で通常版に乗り換えました。

再インストールしたほうが安心なのですが、怖いものみたさでアップグレードしてみました。

でもやっぱり怖かったので、次は再インストールにしておきます。。。

手順

作業した環境

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.4 LTS"

やったこと

SSH でアップグレードするのは非推奨とのこと。ダメだったら再インストールすればいいや〜な気持ちで、試してみました。

LTS から 通常版に切り変える

$ sudo vim /etc/update-manager/release-upgrades 

Prompt=lts から Prompt=normal に変更

アップグレード

$ sudo do-release-upgrade
Checking for a new Ubuntu release
:
:

キャッシュを読み込み中

パッケージマネージャーをチェック中です

SSH経由で実行していますが、続けますか? 


このセッションはSSH上で実行されているようです。アップグレードをSSH越しに行うことは推奨されません。アップグレードに失敗した時の復元が困難になるからです。 

続行する場合、追加のSSHデーモンをポート '1022' で起動します。 
本当に作業を進めてよろしいですか? 

あとは待つのみ。。。

たまに、設定ファイルを最新に置き換えるか現在の設定を保持するか質問されます。
この場合は、差異を確認して問題がなさそうだったら現在の設定を使うようにしました。

設定ファイル '/etc/nginx/nginx.conf'
 ==> これはインストールしてから (あなたかスクリプトによって) 変更されています。
 ==> パッケージ配布元が更新版を提供しています。
   どうしますか? 以下の選択肢があります:
    Y か I  : パッケージメンテナのバージョンをインストールする
    N か O  : 現在インストールされている自分のバージョンを残す
      D     : 両バージョンの差異を表示する
      Z     : 状況を調査するためにシェルを開始する
 デフォルトでは現在使っている自分のバージョンを残します。
*** nginx.conf (Y/I/N/O/D/Z) [デフォルト=N] ? 

アップグレード完

再起動すると 17.10 で起動します。

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=17.10
DISTRIB_CODENAME=artful
DISTRIB_DESCRIPTION="Ubuntu 17.10"

おしまい。

続・Raspberry Pi で時報を作る

あらまし

過去の記事の続きです。

9bo.hateblo.jp

前回は Raspberry Pi 2 で作ったのですが,今回は使っていなかった Raspberry Pi 3 があったのでこっちでやってみました。

Raspberry Pi 3 の好きなポイント

  • Wifi に対応
  • スペックアップ
  • USB 4つもついている

やったこと

Pi 2 → Pi 3 のインストールでハマったポイント

久々のインストールでいろいろ変わっていました。

忘れそうなのでやったことをまとめました

AirPlay も使えるようにしてみた :)

コマンド一発でインストールできて幸せ

Setup AirPlay

おわりに

手順を忘れそうなのでメモっただけでした。
実際に使ってみたなどのまとめはまたどこかで。

Webサイトのスクリーンショットを自動で保存してみました

はじめに

いろいろな Web サイトのデザインや機能の変更が気になります。

ただ,いろんな Web サイトを定期的に訪れてウォッチするのは面倒くさいし,ページ構成を覚えておかないと, あれ?こんな機能あったっけ?と機能が追加されたのか,はたまたウォッチ漏れだったのかよくわからなくなってしまいます。

そこで,自動でいろいろな Web サイトのスクリーンショットを撮影できたらいいな!と思い試してみました。

やってみた

使ったもの

プログラム

Puppeteer のサンプルコードに,スクリーンショットを撮るプログラムがあります。今回はこちらをベースに,複数の Web サイトのスクリーンショットを撮れるようにしてみました。

'use strict';

const puppeteer = require('puppeteer');
const devices = require('puppeteer/DeviceDescriptors');

const urls = [
  'http://www.yahoo.co.jp',
  'https://www.rakuten.co.jp/'
];

(async() => {

  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.emulate(devices['iPhone 6']);
  let fname = null;
  for(let url of urls){
    console.log(url);
    fname = url.replace(/\//g, '_').replace(/:/g,'');
    await page.goto(url);
    await page.screenshot({path: `${fname}.png`, fullPage: true});
  }
  await browser.close();

})();

作ったプログラムをなくしてしまうことが多いので,GitHubに上げました。

github.com

動かしてみました

$ git clone https://github.com/9bo9bo/pageCapture
$ cd pageCapture
$ npm install 
$ node index.js

f:id:u9bo:20171203211346p:plain

おわりに

複数の Web サイトのスクリーンショットを取得するプログラムをつくってみました。cron などに登録しておけば,特に意識しなくともスクリーンショットが蓄積されていって素敵です。

今後のタスクとして,取得したスクリーンショット同士の画像差分を取って,サイトの変更点を示せるようにすることが挙げられそうです。