著者アーカイブ takahashi

takahashi 著者:takahashi

各ブラウザで”about:”(chrome://)で指定できるコマンドの一覧を表示する方法

ブラウザのシステム情報や隠し機能の一覧を表示させたりする際、”about:”から始まるコマンドをURL欄に入れたりすることがあるかと思います。
特にGoogleChromeではabout:flags(chrome://flags)とアドレスバーに入れるとアクセスできる実験機能有効/無効画面はよくお世話になっています。

この”about:”コマンドですが、搭載しているブラウザほぼ共通で、利用できる”about:”コマント一覧を表示させることができるコマンドがあります。

一覧画面はアドレスバーに
about:about
と入力すると確認できます。


Firefox


Google Chrome

最近のモダンブラウザは機能面ではどれも徐々に似た作りになっているものが多くなっていますが、このabout:で指定できる内容にはまだブラウザ毎にそこそこ異なっていることもあるようです。

こういった部分で、それぞれのブラウザの違いを探してみるのも面白いかもしれませんね。

takahashi 著者:takahashi

nginxでnet::ERR_CONTENT_LENGTH_MISMATCHが出た時の対処法

今まで普通に動いていたサイトが、ある日突然正常に表示されなくなるという問題に遭遇。
Chromeの開発者ツールで調べると

net::ERR_CONTENT_LENGTH_MISMATCH

上記のメッセージが大量に発生しており、サイトのアセットの読み込みに失敗していたようでした。
ERR_CONTENT_LENGTH_MISMATCHはヘッダーのContentLengthと実際に受け取ったバイト数が違うと発生するようです。

nginxでのERR_CONTENT_LENGTH_MISMATCHの解決法 – Qiita

いろいろなサイトを見てみると、サーバーにNginxを使っている場合、サイトのキャッシュの保存が失敗したときに先程のエラーが出現するようで、その場合は指定パスに書き込み可能なディレクトリを用意すれば解消するようです。

しかし、今回問題が発生した環境では、該当のログが見当たらなかったため、問題が発生していたサイトのキャッシュを禁止する方法で対策してみました。
変更としてはnginxの設定ファイルを下記のように修正します。

server {
  server_name  .example.com;

  listen          443;

  ssl on;
  ssl_certificate       /path/to/hoge.crt;
  ssl_certificate_key   /path/to/hoge.key;

  client_max_body_size 1g;
  proxy_set_header Host $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
  proxy_set_header X-Forwarded-Host $host; 
  proxy_set_header X-Forwarded-Server $host; 
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Fowarded-Proto \$scheme;
  proxy_max_temp_file_size 0; #この記述を追加
  location / {
    proxy_pass https://localhost:8081;
  }
}

これでnet::ERR_CONTENT_LENGTH_MISMATCHエラーが消滅し、とりあえず無事サイトが表示されるようになりました。
しかしなぜ突然こんなエラーが出るようになってしまったのか…原因は分かっていないので、さらに調査が必要そうです。

参考サイト
Consul Web UIで画面が表示されない時の対処法 – Qiita

takahashi 著者:takahashi

SystemdでNode.jsのサーバープログラムをお手軽にデーモン化する方法

以前SoftEtherVPNを手軽にSystemdでデーモン化する方法をご紹介しましたが、実は、最近よく使われるNode.jsで書いたサーバープログラムも、Systemdを使うと簡単にデーモン化できるようです。

centos7で標準のsystemdを使いnode.js製サーバーをデーモン化する – Qiita

Node.jsはjavascriptのサーバーサイド版の言語・実行環境で、ほぼjavascriptと同じ言語を使ってサーバー側の処理を書くことができます。
Node.jsのライブラリにも”forever”というプログラムをデーモン化してくれるライブラリがあるのですが、OS起動時と同時に実行させたりする際はちょっと不安が残ります。

起動時にうまくNode.js製のサーバーをデーモンとして動作させる方法がないか探したところ、なんとSystemdのみで実現できるとのことだったので、実際に試してみました。
nodeのプログラムをsystemdを使ってデーモン化するには、

/etc/systemd/system/デーモン名.service

のような名前でファイルを作り、下記のように設定を書き込みます。

[Unit]
Description=node server #任意の説明
After=syslog.target network.target

[Service]
Type=simple
ExecStart=/usr/bin/node /path/to/Node.jsProgramPath #記法:ExecStart=node.js本体のパス node.js向けに書いたサーバープログラムのパス
WorkingDirectory=/path/to/ #作業ディレクトリの場所(スクリプト実行時にカレントディレクトリになっていて欲しい場所)
KillMode=process
Restart=always
User=centos #node.jsプログラム実行ユーザー
Group=centos #node.jsプログラム実行ユーザー

[Install]
WantedBy=multi-user.target

上記のような内容でファイルを保存したら後はお決まりの

systemctl enable デーモン名
systemctl start デーモン名

これだけでnode.jsのプログラムがデーモン化され、OS起動時の自動起動にも登録されます。

Systemdはファイルの記法がわかりづらくて嫌煙されがちな印象でしたが、いろんなプログラムをいとも簡単にデーモン化できてしまうあたり、もしかするとかなり優秀なのかもしれません…

takahashi 著者:takahashi

“純正Android端末”なGoogle Pixelシリーズ、ついに日本での発売が決定!!!

今朝、突然のビッグニュースが飛び込んできました!!!

Google PixelシリーズはGoogle社が直接設計・販売する正真正銘の純正ブランドで、今回発売が予告されたAndroidスマートフォンはPixelシリーズの新モデルのスマートフォンであるPixel 3である可能性が高いとのこと。

Googleの「Pixel 3」日本発売が濃厚に。ティザーサイト公開 – 価格.com

Pixel 3はAndroid OSの最新バージョン”Android 9 Pie”が搭載される予定となっており、また、Google公式ビルドのAndroid OSがインストールされるため、OSのアップデートも継続的に入手できる可能性が高いと思われます。

さらにPixelではGoogleの最新の成果(“Google Lens”や”Google アシスタント”のような)もいち早く試すことができるのも大きな特徴で、Google・Androidのファンにとってはまさに夢のような端末になっています。

Pixelシリーズのスマートフォンは、今まで第二世代まで出ていましたが、いずれも日本国内での販売はありませんでした。
そればかりか、発展途上国向けとされる(Wikipedia)純正Android OSを搭載したブランド、”Android One“が日本国内で発売されており、一部では、現状iPhone一強となっている日本国内向けにGoogleがPixelシリーズの端末を発売すること自体が絶望視されてきました。

Google Pixel 3は日本発売されないだろう……と考える3つの理由 – naenote.net

そういった経緯もあり、今回の発表にはガジェット界隈全体で大きな話題となっています。

現状日本で発売されているAndroid端末はAndroid Oneを除き、新発売の機種に最新のAndroid OSが搭載されなかったり、発売から1、2年ほどでメーカーやキャリアがアップデートを打ち切ってしまったりする問題があり、Androidへの待遇はあまりいいものではありませんでした。
スマートフォンのスペックも一定のラインまで達してしまった現在、Androidを搭載する端末もどこか陳腐化してしまっているような印象だったので、今回のGoogle Pixelの発売がそういったAndroidスマートフォンの現状に風穴を開けてくれるのではないかと密かに期待をしています。

ただ、以前から指摘されていたように、端末を”買わせる”ことで収益を上げようとしてきた国内の大手キャリアが、Pixelのように比較的”長く使える”端末をどのように受け入れていくのかはとても気になるところです。

なお、今回発表された”日本版 Pixel”に、おサイフケータイの搭載があるのではないか、と予測する記事もあり、Pixelの”日本仕様”への対応の可否も気になる点となっています。

グーグルスマホ「Pixel」日本上陸が確定 ── iPhone対抗の肝は「おサイフ」対応である理由 – Business Insider Japan

Googleは米国時間の10月9日に、Made by Googleというイベントを計画しているとのこと。
Pixelの日本発売が予告されて初のイベントとなるので、どんな発表がされるのか是非チェックしたいですね。

また、Google公式のティザーサイトでは、最新情報のメールマガジンの登録ができるようになっているので、Pixelの情報が気になる方は是非登録してみてはいかがでしょうか。

Google Pixel

takahashi 著者:takahashi

PWA版Twitterが思ったよりも便利だった件

サードパーティクライアントが実質使用不可となった最近のTwitterですが、Twirter運営側も流石に代替え策を全く用意しない…というわけにはいかなかったようで、最近のブラウザで続々サポートが始まっている”PWA”をベースとしたWebアプリケーションをリリースしています。

Twitter Liteのご紹介 – Twitter Blog

PWAとは簡単に説明するとWebサイトをあたかもネイティブのアプリのように利用することができる新技術です。
例えば、通常のWebサイトの場合、ブラウザを閉じてしまうとサイトからの通知を受け取ることができませんが、PWAに対応しているWebサイトの場合は、ブラウザを閉じていても(ブラウザのプロセスが動作している限り)通知を受け取ることができますし、オフラインの状態であってもWebアプリを表示したりもできます。

そんなPWAでつくられたのがTwitter Liteで、対応するブラウザでアプリとして登録することで、各プラットフォームのアプリケーションとしてTwitter Liteを利用することができるようになります。

今回は、実際にAndroidにインストールしてみました。

まず、Twitter Liteにブラウザでアクセスします。
まだTwitter Liteをインストールしていなければ、下記のように”ホーム画面にTwtterを追加”が出てきます。

タップすると、Twitter Liteの追加を確認するダイアログが出てきますので、”追加”を選択。

通知エリアには”Twitterを追加しています…”の表示が。

暫く待つと

”ホーム画面に追加されました”と表示されました。

この状態でホーム画面を見ると

ちゃんとアプリとして追加されています。

OSからもアプリとして認識されており、アプリ一覧からアンインストールすることも可能です。

起動してみます。

まずログイン画面が出てくるので、通常通りログインします。

表示されたホームTL画面は、ファンクションボタンの位置を除きほぼAndroidアプリ版Twitterと同じUIになっています。

ただしプロフィールアイコンから呼び出せるメニューがスライドではなくプルダウンメニューになっています。

夜間モードとTwitter Liteの目玉機能であるデータセーブ機能はこのプルダウンメニューから利用できます。
設定を見てみます。

設定の内容もほぼAndroidアプリ版と同様の設定ができるようです。

通知設定。

プッシュ通知の設定。

プッシュ通知はデフォルトでOFFになっており、自分でONにしないと有効になりません。

ONにした際、Chromeが通知の許可を確認するので、”許可”を選択します。

通知を許可すると、プッシュ通知の細かい設定が行えるようになります。
こちらの内容もほぼアプリ版Twitterと変わらないようです。

投稿画面はこんな感じ。

写真のアップロードや、

アンケートを設定することができます。

ただし、アプリ版と違い、PWA版ではTwitter上で写真の編集ができないため。あらかじめ編集したものを端末側に保存しておく必要がありそうです。
また、ツイートの下書き保存機能も、今のところPWA版にはついていません。

他に、アカウントの切り替え機能もPWA版は未実装となっており、アカウントを切り替える際はTwitter Liteからログアウトしないといけないようです。(ログアウトしてしまうので、Twitter Lite経由での通知もログインしている1つのアカウントからのみしか受信できない可能性があります。)
ただ、Google Smart Lockが利用できるので、Chromeを使用している方は、ログアウト後にワンタップで別のアカウントに切り替えることができます。

使用感としては、Androidアプリ版Twitterと比較してかなり軽い印象です。
とくに、メディアを表示した状態でTLをスクロールした際、アプリ版はしばらく使っているとどんどん遅くなっていき、アプリ本体が応答すらしなくなってしまうこともしばしばあったのですが、PWA版の場合はそれがなく、描画の遅延こそあるもののかなりスムーズにTLをスクロールすることができます。

Liteを謳いつつも、アプリ版の殆どの機能も備えていますし、個人的にはアプリ版よりも”使いやすい”と感じました。
ただ、まだアプリ版と比較して搭載されていない機能もあるため、本格的に使えるようになるのは、もう少し先になりそうだな、という印象でした。

Twitter公式のアプリが重くて困る…という方は、是非一度Twitter Liteを試してみてはいかがでしょうか。

Twitter Lite

takahashi 著者:takahashi

噂されていた新型iPhoneがついに発表!!! ラインナップは “XS” “XS MAX” “XR” の3種類!!

今日午前2時に、Appleの製品発表イベントで、以前からうわさされていたiPhoneシリーズの新モデルが発表されたようです!!!

発表されたのは3機種
https://www.apple.com/jp/iphone/compare/

今回の新機種はすべてiPhone Xベースになったようです。
左から
iPhone XS iPhone XS Max iPhone XR
の3ラインナップになるようです。

つまり、iPhoneではついにホームボタン無し、ノッチありのデザインが”当たり前”になることになります。

上記のURLから、詳しいスペック一覧も確認できるのですが、その中から個人的に気になったポイントを上げてみます。
まずびっくりするのがこちら。

XSとXS Max はなんと最大容量が512GBに。
もう一般的なモバイルPCよりも大きくなってしまっています。クレイジーすぎです。

iPhoneで動画をたくさん撮る人にはとても嬉しい発表かもしれませんね。

次はプロセッサ。

今回の3機種については、すべて同じプロセッサが搭載されるようです。
廉価版にも最新のプロセッサが搭載されるのは嬉しいですね。

では廉価版と上位版の違いはどこにあるのか、というところですが、まずカメラに差が出てきそうです。

XS、XS Maxは光学ズームがありますが、XRはデジタルズームのみのようです。
ズームしたときの画質も、XS/XS Maxの方が綺麗に撮れそうですね。

こちらはちょっと注意したいポイント。
XS/XS Maxは”ギガビット級LTE”に対応していますが、XRの場合、LTE-Advancedまでの対応になっています。
もっともキャリアが対応していなければギガビット級LTEに対応していても速度が出ませんが、今後のことを考えたときに、より速い通信速度を求める方は注意が必要になるかもしれませんね。

ちなみに、噂されていたデュアルSIMスロットですが、実際はnanoSIMスロットと”eSIM”スロットの2つとなったようです。
eSIMは新しい”内蔵型SIM”の規格で、ソフトウェアによってデータを書き換えることでキャリアを切り替える仕組みになっています。
いろいろな事情から、こちらはキャリアが対応していないと使用することができないため、実質的にはnanoSIMスロット×1のような構成になりそうです。

eSIMの詳細はこちらの記事がわかりやすいので確認してみてください。
次世代SIM規格「eSIM」(イーシム)って何だ? 世界では動き始めているeSIMをわかりやすく解説 – モバレコ

最後に、気になるお値段について。

XRは84,800円~、XS Maxはなんと¥124,800~となるようです。ちょっと高い…?

その代わり、一世代前の機種となったiPhone 8・iPhone 7 が値下げされ、少し手が届きやすくなりました。
これはちょっとうれしいですね。

アップル、iPhone 8/7などを10,000円~11,000円値下げ  – 価格.com 新製品ニュース

今後さらに盛り上がってきそうなApple界隈。

新OSのiOS 12とmac OS Mojaveも間もなくリリースということで、今後の動きにも目が離せませんね。

takahashi 著者:takahashi

Chromeのフォントが突然汚くなった!? そんなときの対処方法

Google Chromeを使って普段Webを見ていたけど、ある日いつものサイトを開いたらなんか文字がガタガタになっている…
もしかしたら、そんな経験をされた方もいらっしゃるかもしれません。

実はこれ、GoogleChromeでデフォルトで使用されるフォントが変更されてしまったために起こるようです。

アレ?Chromeの表示文字、汚なくなった!? 変わったフォントを1分で取り戻そう – Requlog

サイトによっては、CSSによってフォントが指定されているため、そういったサイトではそのままの設定でもフォントがおかしくなることはありません。
しかし、そうではないサイトについては、ブラウザの初期設定が使用されます。

Chromeではその初期設定がバージョンアップによって変更されてしまったため、今回のような症状が発生してしまったようです。
この症状は、設定からフォントを変更することで解消できます。

まずはChromeのウインドウ右側のメニューから設定をクリックします。

設定が表示されるので、検索欄に”フォント”と入力します。
下記の項目が出てきます。

”フォントをカスタマイズ”をクリックします。

フォント選択する画面が出てくるので、ここで好みのフォントにすべて変更してしまいます。
僕の場合は”メイリオ”を設定しました。

この状態で、表示がおかしかったサイトを再度開けば、表示が治っていると思います。

お困りの方は是非試してみてください。

takahashi 著者:takahashi

Ubuntuのアップグレード機能を使って、16.04から18.04へアップグレードしてみる。

久々に、UbuntuのOSアップグレードを試してみました。
今回は16.04から18.04へのアップグレードです。

インターネットにつながっていて、かつ最新のパッケージリストを取得できていれば、上のようなダイアログが出現するかと思います。
出現しない場合は、

sudo apt update

を実行してみてください。

(※アップグレードは失敗するとOSが壊れる可能性のある結構リスキーな操作です。PCの強制シャットダウンなどの不正操作を行わない限り基本的に壊れることはないとは思いますが、念のためアップグレード前にバックアップを取っておくことをお勧めします。)

Ubuntuのバージョンをアップグレードする場合は”いますぐアップグレードする”をクリックします。

管理者権限が必要となるので、sudoが使えるユーザーの認証情報を入力します。

リリースノート(英文)が表示されるので、内容を確認して”アップグレード”をクリックすると、アップグレード処理が開始されます。

サードパーティのリポジトリはすべて無効化されます。
自分でリポジトリを追加した場合は、アップグレード後に再度追加する必要があります。

最終確認が出てきます。
“アップグレードを開始”をクリックすると、新しいバージョンへの上書きが実行されます。

暫く待ちます。

アップグレード後に使用するディスプレイマネージャー(GUIの動作を管理するアプリケーション)を、従来のLightDMを使うかGDM(Gnome標準)に変更するか聞かれます。
18.04でのデフォルトはGDMですが、自分の場合LightDMを選択しました。
現時点では特に不具合は出ていないようですので、ここはお好みで選択しても大丈夫かと思います。(後から切り替えることもできます。詳しくは検索してみてください。)

18.04ではサポートされない古いパッケージ(アプリやライブラリなど)を削除するか聞かれます。
対象のパッケージが一覧で確認できるので、削除されても問題ないか確認して問題なければ”削除”を選択します。

すべて完了すると、再起動を促されるので必ず再起動をクリックします。

この時点で壁紙がすでに新しいバージョンのものに差し変わってますね。
気付きましたか?

再起動してログインすると、初期画面が表示されます。
画面に従って初期設定を進めていきます。

これで更新作業は完了です。

昔のUbuntuはアップグレードすると不具合が結構出ることもあったのですが、今回はアップグレードによって発生したと思われる目立った不具合は見つけていません。
CUIでの使用がメインというのもあるかもですが、安定性はどんどん上がっている気がしますね。

興味のある方は是非お試しください。

takahashi 著者:takahashi

SystemctlでSoftEtherVPNをデーモン化する

SoftEtherVPNはたくさんの接続オプションを持っていて、無料のVPNサーバーソフトの中ではおそらく”最もつなげやすい”ソフトではないかなと思います。

そんなSoftEtherVPNですが、Linux版の場合はソースの状態で配布されており、各マシンにダウンロードしてからmakeでビルドする形になっています。
なのでmakeに必要なライブラリさえOS側で用意されていれば、ディストリビューションやアーキテクチャ関係なく使用することができるようになっています。

その関係か、パッケージにはデーモン化のスクリプトは含まれておらず、自力でデーモン化する必要があります。

といっても、作業自体は起動スクリプトを/etc/init.dに置いてchkconfigやsystemctlで有効化すだけです。
起動スクリプトはSoftEtherVPNの公式ドキュメントに記載されています。

#!/bin/sh
# chkconfig: 2345 99 01
# description: SoftEther VPN Server
DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/subsys/vpnserver
test -x $DAEMON || exit 0
case "$1" in
start)
$DAEMON start
touch $LOCK
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0

ところが、今回Ubuntu 18.04のサーバーに組み込んだ所、うまく動作せず。
いろいろ調べたところ、SystemdのUnitファイルで動作させる方法があったのでこちらを試してみました。
(※管理者権限が必要です。)

Ubuntu上でSoftEther VPN Server構築 – Qiita

[Unit]
Description=SoftEther VPN Server
After=network.target network-online.target

[Service]
ExecStart=vpnserverがインストールされているパス/vpnserver start
ExecStop=vpnserverがインストールされているパス/vpnserver stop
Type=forking
RestartSec=3s

[Install]
WantedBy=multi-user.target

上記の内容でUnitファイルを作り、下記の場所に保存します。
/etc/systemd/system/vpnserver.service

保存したら次のコマンドを実行します。

systemctl daemon-reload

これで準備は完了いつも通りに起動します。

systemctl start vpnserver

これで起動したかと思います。
自動起動する場合は

systemctl enable vpnserver

も実行しておきます。

Systemdがいまいちわかりづらいのでinit.dを使っていましたが、これならsystemdネイティブでも使えそうです。
init.dスクリプトでうまく起動できない、という方はぜひ試してみてください。

takahashi 著者:takahashi

Ubuntu 16.04 でLivePatch を有効化してみた。

Ubuntu 18.04 でGUI操作が可能になったCaconical LivePatchですが、コマンドラインであればUbuntu 16.04でも適用が可能になっています。
結構手間がかかるかなーという印象だったのですが、やってみたところとても簡単でした。

コマンドラインでLivePatchを有効化するには、UbuntuOneで発行できる専用のトークンが必要になります。

まず、Canonical Livepatch Serviceサイトにアクセスして、トークンを取得します。

サイトにアクセスしたら、無料ユーザーの場合は”Ubuntu User”を選択し、”Get Your LivePatch token”をクリックします。

ログイン画面が出てくるので、自分のUbuntuOneアカウント情報を入力してログイン。
UbuntuOneアカウントを持っていない場合は
”I don’t have an Ubuntu One account”
からアカウントを作成できます。

LivePatchは1アカウントにつき、3台のマシンまで無料利用可能となっているため、注意してください。

LivePatchのページでログインすると、こんな表示が出てきます。

一つ目の欄にあるランダムな文字列がトークンになります。

まず、LivePatchパッケージをインストールします。
端末(Terminal)で次のコマンドを入力します。

sudo snap install canonical-livepatch

LivePatchパッケージのインストールが始まるので、暫く待ちます。
完了したら次のようにコマンドを入力します。

sudo canonical-livepatch enable 先程のトークン

これでLivePatchが有効になるはずです。
念のため、ちゃんと動作しているか確認します。

出力された情報の中に

running: true

と表示されていれば有効になっています。

Ubuntu 16.04でもLivePatchを使用したいという方は、是非参考にしてみてください。