動かざることバグの如し

不景気で困ります(閉めます) ドアに注意

Docker hubへデプロイするコマンドメモ

docker build -t thr3a/mynginx . thr3a/mynginx=ローカルにあるimage名とする docker tag ローカルにあるimage名 ユーザ名/リポジトリ名:タグ docker push ユーザ名/リポジトリ名

dockerでsquidプロキシサーバーを構築する

dockerでsquidを動かしたいのでDockerfile作った thr3a/squid-docker-compose 使い方 git clone git clone https://github.com/thr3a/squid-docker-compose/tree/master で、実行するだけ cd squid-docker-compose docker-compose up あとは # squidのデフォ…

RubyのREXML::Document でXMLをパースする

rubyでXMLを扱いたい人生だった 環境 Ruby 2.5 概要 RubyでXMLをパースする手段はいろいろあるが、ここでは特にライブラリを追加インストールすることなく、標準ライブラリだけで実行可能なREXML::Documentを使うことにした。 で「ruby XML」でググると一番…

jemallocを有効化したRubyをビルドしてRailsで使う

環境 Ruby 2.6.2 Rails 5.1 概要 Ruby、特にRailsだとけっこうメモリ大食いマンになる傾向がある。(Chromeのことを笑えないぐらいには で、いろいろググってたらjemallocを有効にしらRubyだとメモリの消費が減るらしい。ってことで試してみた。 ただしRuby…

ffmpegでm3u8ファイル(HLS)から動画をダウンロードして保存するコマンド

環境 $ffmpeg -h|head ffmpeg version git-2019-03-08-147ef1d Copyright (c) 2000-2019 the FFmpeg developers built with Apple LLVM version 10.0.0 (clang-1000.10.44.4) configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD-147ef1d --enable-share…

Capistrano3でdefault_envとかwithinが効かないとき

環境 Capistrano 3.11 症状 Capistranoは非常に便利なデプロイツールで、Railsをデプロイするなら必須だと思う。いろいろ機能があって、その中でもdefault_envでexecuteするときの環境変数を設定できたり、withinでそのディレクトリの中で実行とかできる。。…

iPhoneで見ているサイトをURLとタイトルで一発で共有ツイートさせる方法

ios

やりたいこと iOSのSafariで見ているサイトを一発でツイートできるようになる。しかもURLとタイトル、更には選択範囲の引用も可能 以下の動画がデモ iPhoneで見てるサイトを一発でツイートできるショートカット作った 作り込み次第では色々出来るのでは pic.…

rbenvでインストールした全バージョンのrubyに一括gem installするスクリプト

何がしたいか VS codeを使うようになったんだけど、Rubyの保管をするために拡張機能でsolargraphをインストールした castwide/vscode-solargraph: A Visual Studio Code extension for Solargraph これは非常に便利で、まぁruby書くなら必須拡張機能だよね、…

LinuxでL2TP/IPsecなVPNサーバーを構築する

自宅で動いているTinker Board(ARM)を使ってVPNサーバーを構築してみた。 PPTPでVPNサーバーを構築するのは割と楽なんだが、セキュリティ上の理由から、Macではその認証経由では接続できない。ということで、L2TP/IPsecしかなく、YAMAHAのお高いルーターを…

オレオレ .eslintrc.yml 晒す

晒す env: commonjs: true es6: true node: true extends: standard globals: Atomics: readonly SharedArrayBuffer: readonly parserOptions: ecmaVersion: 2018 rules: indent: - error - 2 linebreak-style: - error - unix quotes: - error - single sem…

Puppeteerでリダイレクト元URLとリダイレクト先URLを取得する方法

環境 puppeteer 1.12 nodejs 10 やりたいこと Puppeteerでリダイレクトを記録したい コード すでにいろいろ記事は上がっているが、以下。ポイントはredirectChain()使うところだろうか。 const puppeteer = require('puppeteer'); (async () => { const brow…

プライベートなDocker Hubを一発で構築する

memo 環境 docker version: "3.5" services: registry: image: registry:2.7.1 container_name: registry volumes: - ./images:/var/lib/registry ports: - 5000:5000 restart: always docker build . -t myimage docker run myimage docker tag myimage doc…

RspecでリモートIPアドレスを偽装してテストする

環境 rails 5.2 rspec 3 やりたいこと IP制限のテストがしたくなった。が、当然request.remote_ipはローカルでテストしている以上ずっと「127.0.0.1」のまま。 外部にデプロイしてそこでテスト〜なんて当たり前だができないので、なんとか別のIPアドレスを振…

Rspecの親

まずはこれ見ろ RSpec概論 - Speaker Deck インストール RSpec + FactoryBot インストールメモ - Qiita 構文わからん 使えるRSpec入門・その2「使用頻度の高いマッチャを使いこなす」 - Qiita きれいに書きたい 【初心者向け】レビュワーをイライラさせるRSp…

RSpecで現在時刻を変更してテストしたいときはtravel_toが便利

環境 rails 5.2 やりたいこと RSpecでいろいろテストを書いているのだが、日時が絡むテストが非常に面倒である。例えば一定時間経つと挙動が変わるとか、〜年より前、後で振る舞いが変わるテスト、など。 が、さすがRails、travel_toというヘルパーメソッド…

sshで不正ログインを試みるユーザー名、1位は「user」

概要 sshのポート22のままにしばらくサーバーを放置してたらsshログイン履歴が結構たまっていた。。。 sshのオプションでパスワード認証は無効化しているので、幸いログインされることはなかったけど、せっかくログが残っているので集計してみた。 その名も…

querySelectorAll()で取得した要素をeachで回す5つの方法

例えばhttps://github.com/のような普通のページがあって、そのページ内の全リンクを取得してforeach的な何かで順番に処理していきたいということは全然あると思う。 取得自体は簡単で const links = document.querySelectorAll('a'); で可能。が、流石JS、…

VirtualBoxで2TB以上の大容量仮想ディスクを作成する

VirtualBoxのGUIで仮想ディスクを作れるが、なぜか仕様として2TB以上のディスクは作成できない。 が、CUIツールであるVBoxManageコマンド経由だとそれ以上の容量の仮想ディスクも作成できるのでメモ コマンド 例えば、8TBの仮想ディスクを作成したいときは…

UbuntuでXFSファイルシステムにインストールするときは注意が必要

環境 Ubuntu 18.04 1行まとめ /bootはXFSじゃなくてext4とかでフォーマットしないと起動できなくなる この1行で??ならXFSを使うな諦めろ 概要 今回UbuntuをXFS形式でフォーマットしてインストールすることにした。以下のような感じ sda1 EFIシステムパー…

DockerでMecab&neologd辞書を一発で使う

最初は自分でビルドしてインストールして、、、と考えていたのだが、素晴らしいことにグノシーさんがImageをビルドして公開してくれているのでありがたく使う。 github.com 例えば適当にdocker-compose.ymlを用意して以下 version: "3.5" services: mecab: i…

DockerでNodejsとyarnをなるべくシンプルにインストール

環境 Docker 18 docker-compose 1.23 debian系 やりたいこと とあるDockerイメージにNodejsをインストールすることにした。普通ならapt-get install nodejsとパッケージ管理システム経由でインストールするのが定石だが、理由があってイメージサイズを小さく…

Nginxで全リクエストをメンテナンスページにリダイレクトする設定

環境 nginx 1.14 やりたいこと メンテナンスするのですべてのリクエストを遮断したい。けどnginx 404のエラーページ出るのは良くないので、用意した静的htmlファイルを表示させたい。 設定 まずnginxの設定を以下。 server { listen 80; server_name hogehog…

Gihtubのレポジトリ容量を表示してくれるChrome拡張「GitHub Repository Size」

エンジニアならGithubからDownload zipで最新のMasterをダウンロードしようとしたとき、 全然ダウンロードが終わらなくていざzipファイルのサイズ見たら数百MBでひぇ〜ってなった経験あると思う。 いや、普通zipで落とさないでしょ で、それを未然に防ぐため…

AWS Lambda RubyとAPI GatewayでSlackへ投稿するAPI作る

完成コード require 'json' require 'slack-notifier' def hello(event:, context:) begin if event.dig('queryStringParameters', 'message').nil? raise "require message" end notifier = Slack::Notifier.new( "HOOK_URL", channel: "#speed_test", user…

Nodejsのasyncでリトライを行いたいなら「async-retry」

環境 nodejs v10 やりたいこと 例えばあるURLへHTTPリクエストして、失敗した場合にリトライしたい。けど失敗したときのレスポンスコードが500のときはやり直すけど、404のときは無駄なのでそのままエラーにしたい。 いいライブラリがないか探していたところ…

10年以上前のウォークマンNW-X1000のバッテリー交換をした

結構前にNW-X1050というウォークマンを使っていた。 NW-X1000シリーズ | ポータブルオーディオプレーヤー WALKMAN ウォークマン | ソニー 当時はiPod全盛期で、特にiPod touchの性能がめちゃくちゃ凄かった。アプリ使えて動画見れてブラウザ見れて、、と。 …

Youtubeのウザい広告を完全抹殺するChrome拡張機能 adblock-for-youtube

Youtubeの広告は非常にウザい。わかる。 一昔前は右上に出てた程度だった。かわいい しばらくすると、再生中の動画の下に横長の広告が表示されるようになった。ここまではまぁわかる。 そして、以降再生しようとするたびに毎回広告が表示される。うざいけどC…

ChefでTimezoneとhostnameの設定が1行で出来るようになってた

Chef記事、もっと流行ってほしい。。。(切実 環境 Chef 14 Ubuntu 18.04 ChefでLinuxの構築をしているのだが、タイムゾーンとかhostnameの設定もしなくてはいけない。 が、割とOSによって方法が違くて面倒だったりしたのだが、たまたま公式ドキュメントを見…

Puppeteerで一定回数スクロールしまくる

環境 Nodejs 10 Puppeteer v1.12.2 概要 言わずとしれたヘッドレスで動作するChromeこと、Puppeteer で、今回は長いページで下までスクロールしたい。普通に考えてwindow.scrollTo(0,1000);をpage.evaluate()するのが一般的なのだが、訴求面と見ていると、ス…

Railsでrakeタスク上からviewを生成(render)する方法

環境 Rails 4、5 やりたいこと railsのtasksからActionViewを参照してHTMLを生成(render)して出力したい ここでいうrenderがややこしいのだが、よくControllerの中で使っているrender json: {key: 1}などとは違う もっと言うと普段使っているrenderの内部…