ログってなんぼ

エンジニアのメモです

bundle install でNokorigiインストール時に「Gem::Ext::BuildError: ERROR: Failed to build gem native extension.」エラーが出た場合の対処方法

bundle installでnokogiriインストール時に下記のようなエラー

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

が出てしまった場合

gem install時であれば --use-system-libraries オプションを付けて再実行してみるところですがbundlerの場合はどうすればいいかというと

bundle config --local build.nokogiri --use-system-libraries

というような感じでコマンドを実行します。

--localオプションはapp/.bundle/configへ設定を書きます。 --globalオプションは~/.bundle/configに書くようです。

まあよほどの事情がない限り、プロジェクトごとの.bundle/configに書いておくほうが良いと思います。その他、環境変数にも定義できます。

bundle configの優先順位

bundle configですが、mysqlなどと同様、複数の箇所に設定を保持しておけます。用途によって適切な場所に設定を書いておくのがいいと思いますが、bundleコマンドのhelpによると

DESCRIPTION
       This command allows you to interact with Bundler´s configuration system.

       Bundler loads configuration settings in this order:

       1.  Local config (app/.bundle/config)

       2.  Environmental variables (ENV)

       3.  Global config (~/.bundle/config)

       4.  Bundler default config

という優先順位で参照されます。

bundler.io

ロジクール G-PKB-002 ゲーミングキーボード 青軸を赤軸に交換して打鍵音動画をアップしました

2年ほど使用してきた愛用のキーボードがチャタリングを起こすようになってしまい、新しい相棒を探していたところ、ロジクールさんから今まで使っていたキーボードの後継機が出ていたので購入しました。

今回は、Youtubeに2本動画を上げておいたので、購入を検討している方がいらっしゃいましたら参考になれば嬉しいです。

標準状態(青軸 GX BLUEクリッキースイッチ)打鍵音動画

www.youtube.com

標準搭載されているスイッチは青軸(風?)ということで、かなりのカチカチ感と打鍵音です。 動画ではいまいちわかりにくいですが、カチカチ・バシャバシャみたいないわゆる青軸サウンドが余すところ無く楽しめます。

赤軸スイッチへの換装と打鍵音動画

www.youtube.com

ボイスチャットしながらキーボードを叩くことが多いので、自分は赤軸風スイッチを別途購入して換装しました。こちらは打鍵音がすごく静かになります。打鍵感はもちろん快適で、スコスコスコスコ・・・という感じで気持ちよくタイピングできるので自分にはとても合っていると思いました。

前モデルのG-PKB-001に打鍵感としては近くなりましたが、やはりそれでも002は002独特のフィーリングです。

最初、標準の青軸を使ったときには正直「失敗したかな?」と少し思いましたが、赤軸スイッチ(GX REDリニア)に換装したら、大好きなフィーリングだったので買い替え大正解です。

今回紹介した商品はこちら

G-PKB-002本体。青軸スイッチが標準搭載。

今回換装した、赤軸スイッチ

今回は試すことが出来ませんでしたが、茶軸風のフィーリングらしいGX タクタイルスイッチ

SameSite=None; Secure をnginxで付与する方法(Chrome80対応)

developers-jp.googleblog.com

2020年2月にUPDATEが予定されているChrome 80から サードパーティクッキーの読み書きに制限が発生します。

具体的には、SameSiteのデフォルト値がLaxとなります。

SameSiteについては下記が参考になります

tools.ietf.org

例として、コンテンツ内に埋めてもらったimgタグなどを経由してリクエストを受付け、 3rd party cookieを操作するタイプのサービスを担当するエンジニアの方は対応が必要です。

対応自体は単純な改修になるのですが、 フレームワークの都合(一例としてPlay Frameworkのv2.6未満など)で、 ビジネスロジック側でSameSite=Noneを付与しにくいケースでは Nginxの設定でHeaderを付与する方法を検討してみる価値があると思います。

例として

location / {
        proxy_cookie_path / "/; secure; HttpOnly; SameSite=None";
    }

上記のようにproxy_cookie_pathを設定してみるなどの方法です。

参考になれば。

ffmpegでMP4のビットレートを下げてビデオを圧縮する

納品されてきたmp4が2Mbpsもありファイルサイズがデカい・・・ もう少し品質下げても十分閲覧可能なので1Mbpsに変更します

ffmpegのインストール

$ brew install ffmpeg

ビデオの情報を確認

$ ffprobe -i video_2000kbps.mp4
ffprobe version 4.2.1 Copyright (c) 2007-2019 the FFmpeg developers
  built with Apple clang version 11.0.0 (clang-1100.0.33.8)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.2.1_1 --enable-shared --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.jdk/Contents/Home/include/darwin -fno-stack-check' --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librubberband --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libsoxr --enable-videotoolbox --disable-libjack --disable-indev=jack
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video_2000kbps.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 2019-06-19T08:51:24.000000Z
    encoder         : HandBrake 1.0.7 2017040900
  Duration: 00:00:16.06, start: 0.000000, bitrate: 2407 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1124x1080 [SAR 135:304 DAR 281:608], 2408 kb/s, 30 fps, 30 tbr, 90k tbn, 180k tbc (default)
    Metadata:
      creation_time   : 2019-06-19T08:51:24.000000Z
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 2 kb/s (default)
    Metadata:
      creation_time   : 2019-06-19T08:51:24.000000Z
      handler_name    : Stereo

bitrate: 2407 kb/s

これを1024kb/sに変更します

別名で再エンコード

$ ffmpeg -i video_2000kbps.mp4 -vb 1024k video_1024kbps.mp4

動画を閲覧してみて問題ないことを確認

採用!

www.ffmpeg.org

Mac(Mojave)にpdftotextをインストールする

まずはHomebrewでインストール

brew install Caskroom/cask/xquartz
brew install xpdf

ココから

日本語化リソースをダウンロード

日本語化リソースの置き場を作る

mkdir -p /usr/local/share/xpdf/japanese

コピーしておく

cd /usr/local/share/xpdf/japanese
tar -jxvf ~/Downloads/xpdf-japanese.tar.gz

ホームディレクトリに .xpdfrcを作成

textEncoding UTF-8
cidToUnicode    Adobe-Japan1    /usr/local/share/xpdf/japanese/xpdf-japanese/Adobe-Japan1.cidToUnicode
unicodeMap  ISO-2022-JP /usr/local/share/xpdf/japanese/xpdf-japanese/ISO-2022-JP.unicodeMap
unicodeMap  EUC-JP      /usr/local/share/xpdf/japanese/xpdf-japanese/EUC-JP.unicodeMap
unicodeMap  Shift-JIS   /usr/local/share/xpdf/japanese/xpdf-japanese/Shift-JIS.unicodeMap
cMapDir     Adobe-Japan1    /usr/local/share/xpdf/japanese/xpdf-japanese/CMap
toUnicodeDir            /usr/local/share/xpdf/japanese/xpdf-japanese/CMap

以上

MacOS Mojaveにpyenvで3.7.3を入れるメモ

$ brew install zlib

$ xcode-select --install
xcode-select: note: install requested for command line developer tools

$ sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
installer: Package name is macOS_SDK_headers_for_macOS_10.14
installer: Installing at base path /
installer: The install was successful.

$ pyenv install 3.7.3

MacOS MojaveでNFS設定時「/etc/exports: Operation not permitted」と出て失敗する場合の対応方法

VagrantでRails開発環境が起動しなくなってしまった・・・Sharedフォルダを非NFSにすれば動くが Vagrant+RailsはNFSでフォルダ共有しないととても遅い・・・

原因調査すべく、とりあえずnfsまわりの設定を確認したり最初からnfsの設定をし直したりしていると

$ sudo touch /etc/exports

/etc/exports: Operation not permitted

sudoでtouchできないと言われましても・・・

で、どうせセキュリティ絡みだろうと確認してみると

f:id:Okisanjp:20190315110931p:plain

フルディスクアクセス・・・・ こんなの今までなかった気が・・・w

というわけでiTermを追加。

f:id:Okisanjp:20190315111103p:plain

解決。

ただこれだけのことでした。

orz

RDSでmax_allowed_packetの値を変更する

大きなサイズのSQLを実行しようとしたとき

MySQL server has gone away

となってしまうことがありますが

この場合、max_allowed_packet の値を確認すると解決する場合があります。

mysql> show variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 4194304 |
+--------------------+---------+

で現在の設定が確認できます。 私の環境では4MBになっていました。

例えばMySQL5.6であれば設定できる最大値は1GBですので、状況に応じて適切に設定してあげるとクエリが通せるようになると思います。

なおRDSの場合は、マネジメントコンソールからパラメータグループ内の設定を変更することになります。

タイプがDynamicになっていれば、インスタンスの再起動は不要です。

参考

dev.mysql.com

Qiitaに同様の内容を投稿しています

qiita.com

Mojaveで変更されたフォントのスムージングを従来の設定に戻す

Mojaveにアップデートしたら、外付けのFullHDモニタに表示される文字が

f:id:Okisanjp:20181024131029p:plain

かなり残念な感じに・・

まあ我慢できなくもないレベルですが、一日の殆どの時間見ているVSCodeがこの状態だとやはりストレスということで

github.com

$ defaults write -g CGFontRenderingFontSmoothingDisabled -bool NO

上記コマンド入力後、ログオンし直すと

f:id:Okisanjp:20181024131110p:plain

元通りε-(´∀`*)ホッ