フリーランスじゃないけど孤独がつらい

6月から会社員になりました。が、100%自宅勤務です。 会社の人と会話するのは週に1回のSkype MTG

奥さんが働き出したので昼間は、話す相手が待ったくいません。 よって寂しい。

今日、自転車やさんでタイヤ交換の話で盛り上がって心が満たされました。 こんなんで大丈夫なのか俺?という疑問が拭えません。

会社員時代はオフィスが嫌でした。営業さんが声だしてうるさい、 空調効かない、トイレは順番待ち、椅子は硬いしパソコンは遅いし。 でも、同僚がいたんですよね。

オフィスに出社して時代がちょっと懐かしい。 でも出社が必要になったら、それはそれで不満なんだろうな。

もう、会社作るしかないかもしれないw

SVN:特定のファイルだけをignoreする

仮に、/var/www/htmlhoge.txtというファイルがあり、svnで管理したくないとします。 現時点でsvn statusとすると、

? hoge

と表示されるとします。 この?を消すには次のようにします:

cd /var/www/html
svn propedit svn:ignore .

もし

svn: E205007: 環境変数 SVN_EDITOR、VISUAL、EDITOR のどれも設定されていなく、実行時の設定オプション 'editor-cmd' も見つかりません

というエラーが出たら、

export SVN_EDITOR=vim

とでもしてから再度、最初のコマンドを実行します。

エディタが無事に開いたら、1行目に

hoge.txt

と記述し、保存します。

次に、svn statusをすると、? hoge.txtは消えていることでしょう。 さて、この段階ではおそらく、フォルダ自体が変更あり、と示されると思います:

M .

これを治すには、コミットしてください。

以上です!

Git:リモートにのみあるブランチをローカルに持ってくる

ローカルに、masterだけがあるとします。 リモートにはhogeというブランチがあるとします。

単純にcheckoutを試みると次のエラーがでます:

git checkout hoge
error: pathspec 'stripe' did not match any file(s) known to git.

hogeをローカルに持ってくるには、

git fetch
git checkout hoge

とします。

SSL:FujiSSLをSSLストアで購入し、CentOS7のApache2.4に設定する

mod_sslのインストール

yum -y install mod_ssl

CSRの生成

秘密鍵作成に必要な疑似乱数の生成

sudo bash
mkdir /etc/httpd/ssl
cd /bin
./openssl md5 * > /etc/httpd/ssl/rand.dat

秘密鍵の作成

ここで入力するパスフレースはどこかにメモしておきます:

./openssl genrsa -rand /etc/httpd/ssl/rand.dat -des3 2048 > /etc/httpd/ssl/private.pem

Enter pass phrase:
Verifying - Enter pass phrase:

秘密鍵からCSRを生成

./openssl req -new -key /etc/httpd/ssl/private.pem -out /etc/httpd/ssl/csr.pem

Enter pass phrase for /root/ssl/private.pem:(パスフレーズ入力)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Minato-Ku
Organization Name (eg, company) [Default Company Ltd]:My company
Organizational Unit Name (eg, section) []:Engineering
Common Name (eg, your name or your server's hostname) []:FQDN
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

生成したCSRアクティベーション

SSL StoreのCSRを貼り付ける場所に/etc/httpd/ssl/csr.pemの中身をペーストします。

SSL STOREからのアクセスを許可

SSL STOREから発行されたfileauth.txtは/.well-known/pki-validation/fileauth.txtでアクセスできるようにしなければなりませんが、 WebサーバがBASIC認証で保護されている場合はこちらの方法でアクセスを開放します:

thebaker.hatenablog.com

受領した証明書の設置

SSLサーバ証明書は、/etc/httpd/ssl/server.crt、中間証明書は/etc/httpd/ssl/chain.crtとして設置します。

/etc/httpd/conf.d/ssl.confの編集

次の3行を変更します:

#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateFile /etc/httpd/ssl/server.crt
#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateKeyFile /etc/httpd/ssl/private.pem
#SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt
SSLCertificateChainFile /etc/httpd/ssl/chain.crt

apacheの再起動

まず、停止させます:

systemctl stop httpd

次に起動します:

systemctl start httpd

パスフレーズが聞かれるので入力します

エラー

Firefoxで次のエラーが出る場合は、30分待ってください:

The OCSP server has no status for the certificate. エラーコード: SEC_ERROR_OCSP_UNKNOWN_CERT 

www.fujissl.jp

httpsを強制する

httpd.confに以下を追加します:

RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [R,L]

パスフレーズを解除

cd /etc/httpd/ssl
penssl rsa -in private.pem -out private_no_passphrase.pem

CakePHP3/ImageMagic:画像のオリエンテーション(向き)を正しくする

EXIFオリエンテーション(回転)が設定されている画像をアップロードすると、Chromeはそのオリエンテーションを尊重して表示します。 これを回避するためにこんなコンポーネントを作りました:

class FixOrientationComponent extends Component
{
    public function autoRotate(\Imagick $image): \Imagick
    {
        switch ($image->getImageOrientation()) {
        case \Imagick::ORIENTATION_TOPLEFT:
            break;
        case \Imagick::ORIENTATION_TOPRIGHT:
            $image->flopImage();
            break;
        case \Imagick::ORIENTATION_BOTTOMRIGHT:
            $image->rotateImage("#000", 180);
            break;
        case \Imagick::ORIENTATION_BOTTOMLEFT:
            $image->flopImage();
            $image->rotateImage("#000", 180);
            break;
        case \Imagick::ORIENTATION_LEFTTOP:
            $image->flopImage();
            $image->rotateImage("#000", -90);
            break;
        case \Imagick::ORIENTATION_RIGHTTOP:
            $image->rotateImage("#000", 90);
            break;
        case \Imagick::ORIENTATION_RIGHTBOTTOM:
            $image->flopImage();
            $image->rotateImage("#000", 90);
            break;
        case \Imagick::ORIENTATION_LEFTBOTTOM:
            $image->rotateImage("#000", -90);
            break;
        default: // Invalid orientation
            break;
        }
        $image->setImageOrientation(\Imagick::ORIENTATION_TOPLEFT);
        return $image;
    }
}

使い方ですが、こんな感じです:

$image = new \Imagick("/tmp/gazou.jpg");

// Fix orientation info so displays correctly in all browsers
$image = $this->loadComponent('FixOrientation')->autoRotate($image);

ほぼこちらの内容通りです!

stackoverflow.com

ImageMagick:画像の周りにパディングをつけてセンタリングする

シェルを叩く場合

convert original.jpg -gravity center -background white -extent 1024x768 padded.jpg

なお、-gravity centerの場所をこのようにするとうまくいきません:

convert original.jpg -background white -extent 1024x768 -gravity center padded.jpg

なぜだろう…

PHPから行う場合

ここでは、最終的な画像サイズを1024x768にしてセンタリングするとします:

<?php

$newWidth = 1024;
$newHeight = 768;

// 変換前の画像を読み込む
$image = new Imagick('/tmp/original.jpg');

// サイズを取得
$width = $image->getImageWidth();
$height = $image->getImageHeight();

// 新しい画像の中にセンタリングする際の位置を計算
$x = (int) ($newWidth / 2) - (int) ($width  / 2);
$y = (int) ($newHeight / 2) - (int) ($height / 2);

// 新しいjpg画像を作成
$canvas = new Imagick();
$canvas->newImage($newWidth, $newHeight, 'white', 'jpg');

// 新しい画像の上に元画像を合成
$canvas->compositeImage($image, imagick::COMPOSITE_OVER, $x, $y);

// 画像を書き出す
$canvas->writeImage("/tmp/new.jpg");

なお、setImageExtentも使えますがsetGravityで画像をセンタリングできなかったので、上記方法を採用しました。

インチダウン

私は初代IS250のversion Sに乗っているのですが、乗り心地の悪さとロードノイズの多さに悩んできました。 今回、タイヤが寿命に近いためインチダウンを行いました。

インチダウン前のタイヤはブリジストンのレグノGR-XT。サイズは前が225/40R18、後ろが255/40R18です。 インチダウン後のタイヤはブリジストンのレグノGR-XI。サイズは前後共に205/55R16です。

ロードノイズ

ぶっちゃけ、違いがあまりわからないです。 かなり期待していたのでがっかりしました。

3年以上履いた18インチのGR-XTと、新品の16インチのGR-XIで差が感じられないなんて… もしかしたら、タイヤではなくて遮音・吸音のほうが必要なのかもしれませんね。 GR-XTは経年劣化しにくいのかな。

荒れている路面では違いがわからないのですが、舗装が綺麗なところではGR-XTより静かみたいです。 同乗者が指摘してくれました。まあ、舗装が綺麗なところについてはGR-XTでも問題なかったのですが…

乗り心地

若干マイルドになりました。しなやかとは言い難いですし乗り心地がいいとも言い難いのですがまあ、許容範囲になりました。

その他、気づいたこと

ハンドルが軽くなりました。これまではかなり重ステで駐車が面倒だったのですがスイスイ切れるようになりました。 これは嬉しいサプライズでした。なお、スタビリティについては18インチのほうがどっしりしていてよかったです。 16インチはちょっとフワフワした感じがあります。

車が転がりやすくなった気がします

オススメか?

個人的にはインチダウン、いいと思います。次のタイヤも安く買えるし。 ただインチダウンによって乗り心地の悪い車がよくなるわけではない点、 ロードノイズの改善もあまり期待できない点は重要かと思います。