Skip to content

Instantly share code, notes, and snippets.

Tomohito Ozaki yuroyoro

Block or report user

Report or block yuroyoro

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@yuroyoro
yuroyoro / shared.js
Created Feb 6, 2017
webpacker.gemでapp/javascript/packs 以下にディレクトリを掘った場合に対応したconfig/webpack/shared.js
View shared.js
var path = require('path')
var glob = require('glob')
var extname = require('path-complete-extname')
module.exports = {
entry: glob.sync(path.join('..', 'app', 'javascript', 'packs', '**', '*.js*')).reduce(
function(map, entry) {
var relpath = path.relative(path.join('..', 'app', 'javascript', 'packs'), entry);
var basename = path.basename(relpath, extname(relpath));
@yuroyoro
yuroyoro / .local.vimrc
Created Aug 1, 2016
( ꒪⌓꒪) syntasticからdocker-compose経由でdockerコンテナ内のgometalinterを使う設定できた
View .local.vimrc
let g:syntastic_go_checkers = ['gometalinter']
let g:syntastic_go_gometalinter_exec = 'docker-compose'
let g:syntastic_go_gometalinter_args = 'run app gometalinter --vendored-linters'
let g:syntastic_go_gometalinter_fname = '.'
@yuroyoro
yuroyoro / Uber-migrated-pg-to-mysql.md
Created Jul 27, 2016
UberのPostgresqlからNoSQL on MySQLへの移行を読んでざっくりまとめた
View Uber-migrated-pg-to-mysql.md

Why Uber Engineering Switched from Postgres to MySQL - Uber Engineering Blog のまとめ

Posgresqlだと

  • pgは追記型なので少しの更新でも多くのdiskへのwriteがおきる
  • カラムを一つ更新しただけで多くのindexの書き換えが起こる
  • よって、replicationはWALを送るので更新が多いとWALが大量に送られる
  • repcliationでは物理的なdiskの変更を送る
  • DC間でレプリするときつい
  • bugがあってreplica間でMVCCの不整合が起きる
@yuroyoro
yuroyoro / 99-hannya-sinkyo
Created Jun 3, 2016
ログインするたびに徳が積める
View 99-hannya-sinkyo
#!/bin/sh
#
#/etc/update-motd.d/99-hannya-sinkyo
cat <<_EOKYOU_
觀自在菩薩 行深般若波羅蜜多時 照見五蘊皆空 度一切苦厄
舍利子 色不異空 空不異色 色即是空 空即是色 受想行識亦復如是
舍利子 是諸法空相 不生不滅 不垢不淨不增不減
@yuroyoro
yuroyoro / arel_where_sql_with_bind_values.rb
Created May 23, 2016
Arel::SelectManager#where_sql が bind_valuesを展開しないのは実装さぼってるだけだと思うの
View arel_where_sql_with_bind_values.rb
module Arel
class SelectManager
def where_sql_with_bind_values
return if @ctx.wheres.empty?
viz = Visitors::WhereSql.new @engine.connection
binds = bind_values.dup
binds.map! { |bv| @engine.connection.quote(*bv.reverse) }
View service_worker_proxy_http_resource_fetching.md

ServiceWorkerとupgrade-insecure-requestsで、httpsで提供されていないMixed Contentなリソースでもロードできた。

  • レスポンスヘッダで Content-Security-Policy: upgrade-insecure-requests を指定
  • SWでのonfetchで、fetchしてみて失敗したやつは、same originにある自作アプリ(https)にhttpでこのurlをかわりにとってくるように依頼
  • 自作アプリはurlパラメータで受け取ったurlを代わりに取得し、レスポンスヘッダどボディをそのままかえす
  • SWは自作アプリからのresponseをevent.respondWithに設定する

Cookieやヘッダの扱いに問題はあるにせよ、とりあえず動いた。 セキュリティ的にはdowngradeしてて問題がありそうなので、自作アプリでしっかり対策しないとまずいかも

@yuroyoro
yuroyoro / rack_sw_header.rb
Created Mar 18, 2016
任意のassetsのレスポンスヘッダにService-Worker-Allowdヘッダを追加するRack Middleware
View rack_sw_header.rb
class RackSwHeader
def initialize(app, config = [])
@app = app
@config = config
end
def call(env)
status, headers, body = @app.call env
path = env["PATH_INFO"]
View Dockerfile.postgresql
FROM postgres:9.5
ARG uid=1000
ARG gid=1000
RUN groupmod -g $gid postgres
RUN usermod -u $uid -g $gid postgres
RUN chown -R postgres:postgres /run/postgresql
RUN chown -R postgres:postgres /var/lib/postgresql
@yuroyoro
yuroyoro / sample.rb
Created Feb 15, 2016
青空文庫からテキスト形式で100本ダウンロード、zip解凍し、`OpenSSL::Cipher` でAES256bitで暗号化する処理を、ThreadとWorkerクラスでのマルチプロセス化とで比較するサンプルプログラム
View sample.rb
#!/usr/bin/env ruby
require 'openssl'
require 'base64'
require './worker.rb'
$urls = %w(
http://www.aozora.gr.jp/cards/001779/files/56647_ruby_58166.zip
http://www.aozora.gr.jp/cards/000148/files/752_ruby_2438.zip
http://www.aozora.gr.jp/cards/001383/files/56866_ruby_58168.zip
View awesome_nullobject_in_ruby.rb
class NilClass
def method_missing(method, *args)
case self.class
when Foo
# do something about foo is nil
when Bar
# do something about bar is nil
# ...
end
You can’t perform that action at this time.