urldecode

コマンドラインで表題を行う。前に”encode“に関しては書いていたのに”decode“には書いていなかったようなのでメモ。

■ 環境

  • shell

■ urldecode

`nkf`を使用する。前の記事の通りにまずは”urlencode“した文字列を使う。

$ echo "テスト" | nkf -WwMQ | tr = %
%E3%83%86%E3%82%B9%E3%83%88
$

これを”urldecode“するには下記のようにする。

$ echo "%E3%83%86%E3%82%B9%E3%83%88" | nkf -w --url-input
テスト
$

戻せた。

以上。

■ 関連

コマンドラインでurlencode

%2520

PHP7 Opcache

表題の件について。しばし触っていなかったPHP。サイト表示を速くしたいとの依頼から、”APC“を入れれば良いのでは?と思ったが最近は違うようだ。

■ 環境

  • PHP 7.0.16
  • Amazon Linux

■ apcu

APC“で検索してみると下記の結果を得られた。

$ sudo yum search apc
Loaded plugins: priorities, update-motd, upgrade-helper
================= N/S matched: apc ==================
apc-panel.noarch : APC control panel
apcu-panel.noarch : APCu control panel
apcu70-panel.noarch : APCu control panel for php 7.0
php-ZendFramework-Cache-Backend-Apc.noarch : Zend Framework APC cache backend
php-pecl-apc.x86_64 : APC caches and optimizes PHP intermediate code
php-pecl-apc-devel.x86_64 : APC developer files (header)
php54-pecl-apc.x86_64 : APC caches and optimizes PHP intermediate code
php54-pecl-apc-devel.x86_64 : APC developer files (header)
php55-pecl-apc.x86_64 : APC caches and optimizes PHP intermediate code
php55-pecl-apc-devel.x86_64 : APC developer files (header)
php55-pecl-apcu.x86_64 : APC User Cache
php55-pecl-apcu-devel.x86_64 : APCu developer files (header)
php56-pecl-apcu.x86_64 : APC User Cache
php56-pecl-apcu-devel.x86_64 : APCu developer files (header)
php70-pecl-apcu.x86_64 : APC User Cache
php70-pecl-apcu-devel.x86_64 : APCu developer files (header)
perl-Mail-IMAPClient.noarch : An IMAP Client API

  Name and summary matches only, use "search all" for everything.
$

apcu“?”u“とは何だ?と少々違和感を感じた。調べてみるとPHP5.5以降からAPCは”opcache + APCu“という組み合わせになったようだ。とりあえず何も考えずに”opcache“を入れることにした。

■ opcache

$ sudo yum search opcache
Loaded plugins: priorities, update-motd, upgrade-helper
================= N/S matched: apc ==================
php55-opcache.x86_64 : The Zend OPcache
php56-opcache.x86_64 : The Zend OPcache
php70-opcache.x86_64 : The Zend OPcache

  Name and summary matches only, use "search all" for everything.
$

これをインストールする。

$ sudo yum install php70-opcache

versionを確認すると表示された。

$ php -v
PHP 7.0.16 (cli) (built: Mar  6 2017 19:45:42) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.16, Copyright (c) 1999-2017, by Zend Technologies
$

設定ファイルも下記にあるようだ。

/etc/php-7.0.d/10-opcache.ini

以上。

AmazonLinuxでJSTに固定

AmazonLinuxにおいて表題の通り。”glibc“のパッケージを”update“した際に”JST“にしておいた時間が”UTC“に戻ってしまっていた。

■ 環境

  • Amazon Linux

■ /etc/localtime

/etc/localtime“はいつも変更をしている。

$ sudo cp /usr/share/zoneinfo/Japan /etc/localtime

これで”JST“に変わったと満足してしばらく放置してしまうことが多々ある。前述の通り”glibc“のパッケージを”update“した際に再度”UTC”に戻ってしまうという現象が発生する。

■ /etc/sysconfig/clock

このファイルも下記のように変更する。

$ cat /etc/sysconfig/clock
ZONE="Asia/Tokyo"
UTC=true
$

後はおとなしく次の”update“を待つべし。

以上。

ssh ip address show

表題ではいまいち伝わらない気もするが…。単なるメモである。

■ 環境

  • Linux
  • Mac OSX El Capitan

■ ssh ${HOST} ip address show

スクリプトの中で、複数のホストにSSH接続し、`ip address show`の結果を確認して表示を変えたい。当初、単に下記のように実装したらエラーであった。

$ ssh ${HOST} ip a
bash: ip: command not found
$

実際にSSH接続でログイン後に同じコマンドを実行したところ、正常に結果を得られるのは確認している。

$ ssh ${HOST}
[ec2-user@withsin ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 06:fa:1f:80:b8:9b brd ff:ff:ff:ff:ff:ff
    inet 192.168.33.11/24 brd 10.1.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::4fa:1fff:fe80:b89b/64 scope link
       valid_lft forever preferred_lft forever
[ec2-user@withsint ~]$

さてどういうことかと思ったが、思い当たることをいくつか実施したところ”PATH“の問題であった。下記のように実行することで思い通りの結果を得られた。

$ ssh ${HOST} /sbin/ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 06:fa:1f:80:b8:9b brd ff:ff:ff:ff:ff:ff
    inet 192.168.33.11/24 brd 10.1.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::4fa:1fff:fe80:b89b/64 scope link
       valid_lft forever preferred_lft forever
$

満足である。

以上。

less –chop-long-line

表題の件。httpdのログを見ていて、見づらいなと思ったので切り替える手段をメモ。

■ 環境

  • less
  • Mac OSX El Capitan

■ –chop-long-line, -S

httpdのログといった1行に出力される文字数が非常に多いものが混ざっている場合、`less`ではデフォルトで行全体を表示するので、ファイル全体の状況を把握しづらい。

例えば下記のような場合。Windowを60文字幅にした場合の表示である。内容は適当である。

XXX.XX.XX.XX - - [19/Jun/2017:02:09:14 +0900] "GET /services
_detail_BK/id=201 HTTP/1.1" 200 223 "-" "Mozilla/5.0 (compat
ible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
XXX.XX.XX.XX - - [19/Jun/2017:02:20:16 +0900] "GET /topics/de
tail/id=1436 HTTP/1.1" 200 219 "-" "Mozilla/5.0 (compatible
; bingbot/2.0; +http://www.bing.com/bingbot.htm)"

`less`で開いた後に切り替えるには下記のように入力する。

-S [Enter]

これで下記のような表示に変わるはずである。

XXX.XX.XX.XX - - [19/Jun/2017:02:09:14 +0900] "GET /services
XXX.XX.XX.XX - - [19/Jun/2017:02:20:16 +0900] "GET /topics/de

元に戻すときも同じコマンドで戻れる。

以上。