動かざることバグの如し

近づきたいよ 君の理想に

2018-01-01から1年間の記事一覧

スクレイピングツールMechanizeでリンク先の絶対URLを取得する方法

mechanizeとは言わずとしれたRubyのスクレイピングツールである。 で、例えば以下のようにページ内のaタグからリンク先のURLを取得したいとする。 url = "https://stackoverflow.com/questions/34471102/python-nameerror-name-include-is-not-defined" agen…

dockerで特定のログをひたすらtailし続けるコンテナを作る

環境 docker-compose やりたいこと いや、大したことじゃないんだけど、docker logでは各プロセスの標準出力が流れる。で、自前のアプリケーションのlogを流したかった話 コード image: "alpine:3.8" command: /bin/sh -c "mkdir -p /app/rails && touch /ap…

Rails開発をもっと楽しくする便利メソッド集

この記事はRuby on Rails Advent Calendar 2018の7日目です。 はじめに 今回は知らなくても生きていけるけど、知っておいたほうがお得で便利なRailsメソッドを紹介していく。RailsといいつつActiveSupportやんけ squish 冒頭と末尾のホワイトスペースを削除…

Node.jsでコマンドライン引数処理を行うならcommand-line-argsがよさげ

最近だとコマンドラインツールはGolangで書かれることが多くなっていたが、Nodejsでコマンドラインで処理を受け付けたい、ということも全然あると思う。 そのときに必ず当たる壁がコマンドライン引数の処理である。 引数のパース、必須項目の扱い、ヘルプの…

IDCFクラウドを300円運用する

メモになってしまうが、 マシンタイプを一番安い「Light.S1」で選択 イメージをおすすめ Template ではなく、 ISOタブにある任意のISOを選択 今回はUbuntu 18.04を選択したがうまくいった ディスクを5GBにする これでマシン=200円、ディスク=100円で300円で…

Chrome拡張機能で特定のHeaderのときだけブロックする方法

Chrome拡張機能はすごくて、chrome.webRequestのイベントを駆使すると特定の条件のURLをブロックしたり、リダイレクトすることができる 以下はexample.comを含む画像を白紙にするコード 画像かどうかはtypesの「images」で見てる var pattern = "https://exa…

Rubyで複数のバージョン(version number)をソートしたい

かなりニッチなニーズかもしれないけどメモ やりたいこと 例えば以下のようなバージョンの配列があったとして versions = ["1.1", "2.0", "1.1.4", "1.6", "2.4.1"] これを古→新順にソートしたいとする 解決策1 ライブラリを使う 探したらあった なんとGith…

NodejsでファイルからMD5ハッシュを取得したい

md5はこういうの ~/tmp $md5 tmp.wav MD5 (tmp.wav) = a7b3e6a4865d0b5ae39db05371008c2a をNodejsで求めたい 環境 nodejs 8 けど見てる感じ4以上なら動きそう 10でも動いたし コード const crypto = require("crypto"); const fs = require("fs"); function…

sedコマンドで正規表現を使う場合は注意が必要

結論 sedコマンドの正規表現は高級言語の正規表現と同じ感覚で使うと死ぬ 必ず動作テストをすべし 発端 例えば以下のようなテキストファイルがあったとして、 ~ $cat /tmp/sample.txt 1a 2b 3c 4a 5b 「a」を含む行を一括削除したいとする。以下のコマンドで…

npmでグローバルしたパッケージを一括アンインストールする

環境 Mac OS たぶんLinuxでも動く 以下のコマンドを実行するとすべてアンインストールされる npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^npm$'| xargs npm -g rm

Chefでyarnをインストールするレシピ書いた

やりたいこと yarnでnpmパッケージのインストールを行いたいのではなくyarnバイナリファイル自体をChefで自動インストールしたいって話 レシピ include_recipe 'apt::default' apt_repository 'yarn' do uri 'https://dl.yarnpkg.com/debian/' key 'https://…

PHPで複数画像を1枚の画像に結合する

php

環境 php 5.6 多分7以降でも動くと思う(未検証 やりたいこと 例えば以下のような画像3枚があったとして こんな感じに縦並びで1枚の画像に結合したい ImageMagickを使う方法 PHPからImageMagickを叩くことができる(imagick.soのインストールが必要) PHP:…

Debian系でlibjpeg8-devが「404 not available」でインストール出来ない

環境 docker Debian Jessie 原因 ubuntuとパッケージ名が違う apt-get install libjpeg62-turbo-dev でおk 参考リンク libjpeg8-dev is not available on Debian Jessie · Issue #524 · Automattic/node-canvas

Dockerのphp-fpmでImageMagickを使う方法

やりたいこと PHPの公式ドキュメントを見て貰えればわかるように、PHPからImageMagickを通して多くの画像処理を行うことができる。が、当然サーバー上にImageMagickがインストールされてなければならない。 docker上で操作したいときに若干はハマったのでメ…

RailsのActionMailerで差出人のメールアドレスを取得したい

環境 rails 5.x やりたいこと ActionMailerを使ったメール送信周りのテストをしていて、 # メール1通送れているか expect(ActionMailer::Base.deliveries.size).to eq(1) mail = ActionMailer::Base.deliveries.last expect(mail.subject).to eq("たいとる"…

msgpackをコマンドラインで使う

MessagePackと呼ばれるJSONのような、、だけど似て非なるオブジェクト形式がある。 MessagePack: It's like JSON. but fast and small. 具体的な説明は公式ドキュメントに譲るとして、phpやruby 、Pythonで扱うライブラリはあるものの、linuxのコマンドで使…

毎回flexboxでググるのツラくなってきたので自分用まとめ

css

多分一番見やすい基本的な使い方まとめ 日本語対応!CSS Flexboxのチートシートを作ったので配布します | Webクリエイターボックス 応用まとめ ロゴだけ左端に、ほかは右寄せにってのがすごく役に立った(:first-child と margin-right: auto; の合わせ技) Fl…

関東唯一の「海の見える露天風呂」横須賀温泉 へ行った話

まとめ 都内から近い 温泉きもちいい 海は広かった 日帰り温泉 ふと日帰りで温泉行きたい衝動に駆られた。駆られてしまったからには行かなければならないが、当日で箱根とか熱海に行くのは若干厳しいものがある。ってことで前にツイッターで見て気になってい…

Railsに「Honoka」なBootstrapをyarn経由でインストールする

Honokaというじゅりあん(@MITLicense)氏作のBootstrapテーマがある。 Honoka - 日本語も美しく表示できるBootstrapテーマ サンプルを見てもらうとわかるが、日本語の表示が綺麗になっている。加えて配色も標準と変わってて、Bootstrapの触り心地をキープしつ…

Ubuntuでmailコマンドでメール送信できない時に確認すべき事

環境 Ubuntu 18.04 最終的に echo "本文" | mail -s "タイトル" hogehoge@example.com でメール送信ができるようにしたい 確認1 そもそもmailコマンドがインストールされているか apt install mailutils 確認2 /etc/postfix/main.cf にて mydestinationを…

Railsで生SQL実行時にプレースホルダー付けてSQLインジェクション対策

環境 Rails 5 やりたいこと RailsでActiveRecordの生成するSQLではなく、生SQL実行したいときは以下のようにしてできる。 ActiveRecord::Base.connection.execute("select count(1) from users where date = '2018-10-20'") が、プレースホルダー機能を使お…

Amazon Linuxのsysctlの設定を参考にすべき

EC2でハイスペックなインスタンスを作成してAmazon Linuxを起動すればベストな設定のsysctlの値が取得できるのでは説 abi.vsyscall32 = 1 crypto.fips_enabled = 0 debug.exception-trace = 1 debug.kprobes-optimization = 1 dev.hpet.max-user-freq = 64 d…

Chefで設定ファイル等の文字列を置き換えしたり削除したりする方法

環境 chef 14 やりたいこと chefでレシピを当てるターゲット先のサーバーでファイル内の文字列を置き換えたり削除したりと操作したい時がある。 ググるとexecute内でsedコマンド叩けとかいうのもあるが、あまりスマートなやり方ではない。 やり方 Chef::Util…

estat apiで遊ぶ

まずは登録 まずはここから登録しろ 話はここから 一覧よこせ 本家の検索フォームくっそ使いづらいが、公式が出しているサンプルアプリが100倍使いやすい 統計データベースブラウザ - 統計表の取得 こっちをデフォルトにしろ フォーマットメモ statsDataId= …

innoDBのデータベースがぶっ壊れたときの対応メモ

/var/lib/mysqlのib_logfile0、ib_logfile1、ibdata1は生命線になる xxxx.frmとxxxx.ibdもとっておくこと 復活手順 同一DBに同じスキーマのテーブルを作成(別テーブル名で可) ALTER TABLE example_table DISCARD TABLESPACE;を実行 example_table.ibdが消…

Ubuntuでdebファイルをインストールせずに解凍だけする

環境 Ubuntu 18.04 やりたいこと 通常apt install nginxのようにaptコマンド経由でパッケージのインストールを行うが、事情的に.debファイルを落としてきてインストールってパターンもある。 ただパッケージマネージャー経由じゃないだけあって先に手元で解…

Chromeのタブをショートカットキーで移動できる拡張機能「Rearrange Tabs」

環境 chrome 60 今回、なかなかいい拡張機能を見つけたのでメモ 経緯 普段Macを使っているが、Chromeでalt+Command+→を同時に押すと今閲覧しているタブを右に移動できる。(アクティブタブ?カレントタブと言うべきなのだろうか) それはそれでよく使ってい…

dockerでWineをインストールするときにライセンス確認画面から進めない問題

環境 Ubuntu 18.04 wine 1.6 症状 ubuntuのイメージを使ってdockerをbuildする。 RUN apt-get update RUN apt-get install wine1.6 xvfb -y みたいにwineインストールしようとすると、 (略) If you acquired this product in the United States, this EULA…

シェルスクリプトからrbenv上のrubyを実行したい

環境 rbenv 通常rbenvは/etc/profile.dか~/.bashrcなどの読み込み時にロードされる。 が、シェルスクリプトからだとロードされないのでrbenvが無い環境扱いになってしまう。 ので、以下のように明示的にrbenvを読み込ませる必要がある。 #!/bin/bash export …

Linuxでパーミッション情報やシンボリックリンクを維持したままコピーしたい

特定のディレクトリをバックアップしたいとき、cp -r target destすればもちろんコピーできるが、とっても大切なデータの場合慎重になる。 というのもcpコマンドではパーミッションまで保持してくれないからである。 -aオプションをつけると属性を引き継いだ…