202008

grep host /var/log/auth.log | awk 'match($0, /r?host=[0-9.]*/) {print substr($0, RSTART, RLENGTH)}' | sort | uniq

新東名から修善寺専用道路にいくには

  • 新東名を長泉沼津で降りて三島方面.国道1号.
  • 3分岐は真ん中の道路(2020).

slack api でtokenを使ってサクッとpost

  • curl -XPOST -d 'token=xoxb-xxx-xxx-xxxxxx' -d 'channel=noc-alerts' -d 'text=Hello World' -d 'icon_emoji=rotating_light' -d 'name=hoge' 'https://slack.com/api/chat.postMessage'

postgresqlのcache hit率の改善

$ vim /etc/postgresql/10/main/postgresql.conf
#------------------------------------------------------------------------------
# RESOURCE USAGE (except WAL)
#------------------------------------------------------------------------------

# - Memory -

# shared_buffers = 128MB                    # min 128kB
shared_buffers = 1GB                    # min 128kB
# (...snip...)
# - Planner Cost Constants -
# (...snip...)
#effective_cache_size = 4GB
effective_cache_size = 1GB
# (...snip...)

$ systemctl restart postgresql
$ systemctl status postgresql

sshするとき複数のkeyを使う場合 -i でいちいちkeyしていするのが面倒

  • Hostに書くのがまともだけど,もはや2コくらいあったりしてデフォルトにしていいときは雑に
% cat ~/.ssh/config
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_ecdsa521

的に書いてしまう手もなくはないかも.ただgitではうまく動かなかったり,失敗時に再試行をするような動きをする場合にfail2ban等でjailに入ることがあることは頭に入れておく必要がある.やはりHostsとして一つずつ書くことが望ましそうである. というかそもそもkeyは1つにしておきたいものである.もはや余計なセキュリティ的リスクを背負っていることになる.

wheel, adm, sudoの使い分けってどうなっているのか.

linux/unix/bsdのディレクトリ構造のそもそもの信念

ワイルドカード証明書の危険性

ldap pcapしてみたい.

なにかに命を吹き込む作業をしてみたい

  • 人々が幸せになるようなにかを生み出す.便利とかではなく,あたたかくなるものを.
  • 自分と一番あうのは安直にはロボット的ななにかなのか.

Git ある一つのファイルだけ以前のコミット時の状態に戻す | ハックノート

  • あるブランチから違うブランチにファイルをもってくるときにつかえる
  • ここでワイルドカードはつかえないみたい
% git checkout feature/hoge -- source/hoge/data*

h2oのmrubyでgithubのwebhookを受ける

##################################################################################
# based on MIT lib mruby-hmac by Thiago Scalone. Many Thanks.
# https://github.com/scalone/mruby-hmac
#
#  Created on: Aug 25, 2020
#      Author: Yudai Hashimoto
#      Web   : https://jp7fkf.dev/
#
# MIT License
#
# Copyright (c) 2018 - 2020 Yudai Hashimoto (JP7FKF), Thiago Scalone
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
#################################################################################

BLOCK_SIZE = 64
OPAD       = "\x5c"
IPAD       = "\x36"
PADDING    = "\x00"

def hexdigest(message, key, digester)
  return digest(message, key, digester).unpack("H*").first
end

def digest(message, key, digester)
  if (key.length > BLOCK_SIZE)
    key = digester.digest(key)
  end
  if (key.length < BLOCK_SIZE)
    key = key + (PADDING * (BLOCK_SIZE - key.length))
  end
  o_key_pad = xor(OPAD * BLOCK_SIZE, key)
  i_key_pad = xor(IPAD * BLOCK_SIZE, key)
  return Digest::SHA1.digest(o_key_pad + Digest::SHA1.digest(i_key_pad + message))
end

def xor(a, b)
  return a.unpack('C*').zip(b.unpack('C*')).map{ |c,d| c ^ d }.pack('C*')
end

SECRET_KEY = 'xxxxx'
lambda do |env|
    HMAC_DIGEST = Digest::SHA1.new
    body = env['rack.input'].read
    hmac_signature = 'sha1=' + hexdigest(body, SECRET_KEY, HMAC_DIGEST)
    if env["HTTP_X_HUB_SIGNATURE"] == hmac_signature
        IO.popen('/etc/h2o/misc/gitdeploy.sh')
        return [200, {'content-type' => 'text/plain'}, ["ok"]]
    end
    return [400, {'content-type' => 'text/plain'}, ["HMAC didn't match"]]
end

sipsコマンドでHEICからjpgに変換する

  • find . -name '*.HEIC' | xargs -IT basename T .HEIC | xargs -IT sips --setProperty format jpeg ./T.HEIC --out ./T.jpg;