Skip to content

Instantly share code, notes, and snippets.

View yuroyoro's full-sized avatar
🍣
🍣

しいたけ yuroyoro

🍣
🍣
View GitHub Profile
@yuroyoro
yuroyoro / development.js
Created February 15, 2017 02:16
webpakcer.gemにscssのビルドを加えて、大きめの依存ライブラリを別ファイルに分けて吐くようにしたwebpack.cnofig
// Note: You must restart bin/webpack-watcher for changes to take effect
var path = require('path')
var webpack = require('webpack')
var merge = require('webpack-merge')
var config = require('./shared.js')
var devconfig = {
devtool: 'sourcemap',
@yuroyoro
yuroyoro / shared.js
Created February 6, 2017 06:46
webpacker.gemでapp/javascript/packs 以下にディレクトリを掘った場合に対応したconfig/webpack/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 August 1, 2016 10:47
( ꒪⌓꒪) syntasticからdocker-compose経由でdockerコンテナ内のgometalinterを使う設定できた
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 July 27, 2016 06:28
UberのPostgresqlからNoSQL on MySQLへの移行を読んでざっくりまとめた

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 June 3, 2016 09:21
ログインするたびに徳が積める
#!/bin/sh
#
#/etc/update-motd.d/99-hannya-sinkyo
cat <<_EOKYOU_
觀自在菩薩 行深般若波羅蜜多時 照見五蘊皆空 度一切苦厄
舍利子 色不異空 空不異色 色即是空 空即是色 受想行識亦復如是
舍利子 是諸法空相 不生不滅 不垢不淨不增不減
@yuroyoro
yuroyoro / arel_where_sql_with_bind_values.rb
Created May 23, 2016 09:52
Arel::SelectManager#where_sql が bind_valuesを展開しないのは実装さぼってるだけだと思うの
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) }

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 March 18, 2016 03:39
任意のassetsのレスポンスヘッダにService-Worker-Allowdヘッダを追加するRack Middleware
class RackSwHeader
def initialize(app, config = [])
@app = app
@config = config
end
def call(env)
status, headers, body = @app.call env
path = env["PATH_INFO"]
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 February 15, 2016 06:10
青空文庫からテキスト形式で100本ダウンロード、zip解凍し、`OpenSSL::Cipher` でAES256bitで暗号化する処理を、ThreadとWorkerクラスでのマルチプロセス化とで比較するサンプルプログラム
#!/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