ほのぼのぼのぼの

ひよっこエンジニアのほのぼの記録

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 などに登録しておけば,特に意識しなくともスクリーンショットが蓄積されていって素敵です。

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

PHP の設定が不明な時に叩いたコマンドたち

Homestead で導入された UbuntuPHP の設定がわからない時に叩いたコマンドなど。

はじめに

phpunit が失敗する。

$ phpunit --colors=always --coverage-html 
PHPUnit 5.7.23 by Sebastian Bergmann and contributors.

Error:         No code coverage driver is available

環境

Homestead v6.5.0

PHP のバージョン

$ php --version
PHP 7.0.24-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Sep 28 2017 16:20:59) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.24-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2017, by Zend Technologies
    with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans
    with blackfire v1.18.0~linux-x64-non_zts70, https://blackfire.io, by SensioLabs

PHP の場所

$ which php
/usr/bin/php

複数のバージョンが入っていそうだったので本当にそれか確認

$ ls -al /usr/bin | grep php
lrwxrwxrwx  1 root   root          21 Oct 16 12:39 php -> /etc/alternatives/php
-rwxr-xr-x  1 root   root     4488224 Sep 28 19:33 php5.6
-rwxr-xr-x  1 root   root     4434992 Sep 28 17:01 php7.0
-rwxr-xr-x  1 root   root     4571168 Sep 29 17:48 php7.1
-rwxr-xr-x  1 root   root     4859104 Sep 28 17:19 php7.2

/etc/alternatives の先にいるらしい。

$ ls -al /etc/alternatives | grep php
lrwxrwxrwx   1 root root    15 Nov 26 13:36 php -> /usr/bin/php7.0

やっと/usr/bin/php7.0が参照されていることがわかった。

alternatives で参照される PHP を切り替える

ググってみると、alternativesという仕組みを使うと、複数のバージョン(PHPとかRuby)を切り替えて使えるそうな。

で、phpコマンドで呼ばれるPHPを切り替えるには、次のコマンドを実行する。

$ sudo update-alternatives --config php
There are 4 choices for the alternative php (providing /usr/bin/php).

  Selection    Path             Priority   Status
------------------------------------------------------------
  0            /usr/bin/php7.2   72        auto mode
  1            /usr/bin/php5.6   56        manual mode
* 2            /usr/bin/php7.0   70        manual mode
  3            /usr/bin/php7.1   71        manual mode
  4            /usr/bin/php7.2   72        manual mode

Press <enter> to keep the current choice[*], or type selection number:

よしなに選択。執筆時点(2017/11/26)では Homestead で指定される PHP は 7.1 だった。 たまたま 7.0 で動かしたかったので、ここで切り替えた(上記結果は切り替えた後)。

php.ini の場所

$ php --ini
Configuration File (php.ini) Path: /etc/php/7.0/cli
Loaded Configuration File:         /etc/php/7.0/cli/php.ini
Scan for additional .ini files in: /etc/php/7.0/cli/conf.d
Additional .ini files parsed:      /etc/php/7.0/cli/conf.d/10-mysqlnd.ini,
/etc/php/7.0/cli/conf.d/10-opcache.ini,
/etc/php/7.0/cli/conf.d/10-pdo.ini,
/etc/php/7.0/cli/conf.d/15-xml.ini,
/etc/php/7.0/cli/conf.d/20-bcmath.ini,
/etc/php/7.0/cli/conf.d/20-calendar.ini,
/etc/php/7.0/cli/conf.d/20-ctype.ini,
/etc/php/7.0/cli/conf.d/20-curl.ini,
/etc/php/7.0/cli/conf.d/20-dom.ini,
/etc/php/7.0/cli/conf.d/20-exif.ini,
/etc/php/7.0/cli/conf.d/20-fileinfo.ini,
/etc/php/7.0/cli/conf.d/20-ftp.ini,
/etc/php/7.0/cli/conf.d/20-gd.ini,
/etc/php/7.0/cli/conf.d/20-gettext.ini,
/etc/php/7.0/cli/conf.d/20-iconv.ini,
/etc/php/7.0/cli/conf.d/20-igbinary.ini,
/etc/php/7.0/cli/conf.d/20-imap.ini,
/etc/php/7.0/cli/conf.d/20-intl.ini,
/etc/php/7.0/cli/conf.d/20-json.ini,
/etc/php/7.0/cli/conf.d/20-mbstring.ini,
/etc/php/7.0/cli/conf.d/20-msgpack.ini,
/etc/php/7.0/cli/conf.d/20-mysqli.ini,
/etc/php/7.0/cli/conf.d/20-pdo_mysql.ini,
/etc/php/7.0/cli/conf.d/20-pdo_pgsql.ini,
/etc/php/7.0/cli/conf.d/20-pdo_sqlite.ini,
/etc/php/7.0/cli/conf.d/20-pgsql.ini,
/etc/php/7.0/cli/conf.d/20-phar.ini,
/etc/php/7.0/cli/conf.d/20-posix.ini,
/etc/php/7.0/cli/conf.d/20-readline.ini,
/etc/php/7.0/cli/conf.d/20-shmop.ini,
/etc/php/7.0/cli/conf.d/20-simplexml.ini,
/etc/php/7.0/cli/conf.d/20-soap.ini,
/etc/php/7.0/cli/conf.d/20-sockets.ini,
/etc/php/7.0/cli/conf.d/20-sqlite3.ini,
/etc/php/7.0/cli/conf.d/20-sysvmsg.ini,
/etc/php/7.0/cli/conf.d/20-sysvsem.ini,
/etc/php/7.0/cli/conf.d/20-sysvshm.ini,
/etc/php/7.0/cli/conf.d/20-tokenizer.ini,
/etc/php/7.0/cli/conf.d/20-wddx.ini,
/etc/php/7.0/cli/conf.d/20-xdebug.ini,
/etc/php/7.0/cli/conf.d/20-xmlreader.ini,
/etc/php/7.0/cli/conf.d/20-xmlwriter.ini,
/etc/php/7.0/cli/conf.d/20-xsl.ini,
/etc/php/7.0/cli/conf.d/20-zip.ini,
/etc/php/7.0/cli/conf.d/25-memcached.ini,
/etc/php/7.0/cli/conf.d/90-blackfire.ini

xdebug を使いたい

上の php --inixdebug.ini が呼ばれていなくてどうやら使えなかったのだけど、fpmにはいたので、 コピーしてきた(正しいかどうかはよくわからないけど・・・)

sudo cp /etc/php/7.0/fpm/conf.d/20-xdebug.ini /etc/php/7.0/cli/conf.d/20-xdebug.ini

おわりに

無事に phpunit が実行できた。