Skip to content

Instantly share code, notes, and snippets.

View rosylilly's full-sized avatar
🕊️
Happy Hacking

Sho Kusano rosylilly

🕊️
Happy Hacking
View GitHub Profile
@rosylilly
rosylilly / download-cleaner
Last active January 2, 2022 04:11
Remove old download files(Full disk access to /usr/sbin/cron is required)
#!/bin/bash
set -ex
find $HOME/Downloads -mtime +3 ! -type d -delete
find $HOME/Downloads -type d -empty -delete
# with cron
# * * * * * bash $HOME/bin/download-clear
@rosylilly
rosylilly / manifestPlugin.ts
Created November 10, 2020 08:14
WebPack 5 ready manifest plugin.
import { Compilation, Compiler, sources } from 'webpack';
interface Options {
filename: string;
}
interface Manifest {
[key: string]: string[];
}
@rosylilly
rosylilly / application_record.rb
Created January 15, 2020 09:39
Useful application record snippet for rails application
# frozen_string_literal: true
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
# List all model classes
def self.models
@models ||= begin
models = []
Rails.root.join('app', 'models').glob('**/*.rb') do |path|
@rosylilly
rosylilly / removeSpam.pl
Last active September 25, 2019 07:12 — forked from tateisu/removeSpam.pl
suspend user who in pawoo.net and his note like 'めったにPawooを使いません'.
#!/usr/bin/perl --
use strict;
use warnings;
use utf8;
# mastodonのdockerコンテナの rails console はreadline がUS-ASCIIなので、文字列リテラルはエスケープが必要
sub escapeNonAscii($){
my($a) = @_;
$a =~ s/([\x{80}-\x{fffff}])/"\\u{".sprintf("%x",ord $1)."}"/ge;
$a;
  • HTTP/2
  • Accept-Encoding: gzip, brotli
  • Cache-Control
  • その DB ロックは Redis に移せないか
  • IN と JOIN どっちが早いか
  • 静的ファイル gzip した?
  • stackprof した?
  • ベンチマーカーのリクエストヘッダ全部みた?
  • pprof した?
  • 全台使い切ってる?
@rosylilly
rosylilly / isucon9q.md
Created September 8, 2019 14:05
ISUCON9

ISUCON9 に出た

リポジトリにやったことは書いてあるし、今回やらなかったことは出来なかったことなので省略。

いくつか思い出深いものだけ言及していく。

  • c9248d474db448e5367084abf42a333049abed09: 手元でもリモートの画像が出るようにした。手元に全部の画像持ってくるのは無駄だと思ったので。これは案外重要で、スクロール幅によってページングリクエストが発火されるので、手元の試験時に大事になる。
  • fc8e55da988972826cfbed938ed2c603ee4346da: これもそう。存在しない localhost がデフォルトである価値はない。最初から用意されてるモックサービスを見に行くように。開発をしやすくしておく、というのを初手に打てるようになると、6年目で落ち着いてきたなと思わなくもない。
  • f70d520bf123d19a6aec7874d10d4db10abac2fd: クエリを JOIN に。あとから思えば IN で別引きしたほうが items のロックに巻き込まれなかったなと思う。反省点。
  • 35a525a95c9bdd063acf89c060471d35774eac2e: このへんで外部 API へのリクエストがヘビーだと気づいて Redis にキャッシュし始める。実際効果はあった。この時点で13:1頃。

Keybase proof

I hereby claim:

  • I am rosylilly on github.
  • I am rosylilly (https://keybase.io/rosylilly) on keybase.
  • I have a public key ASDXu2zmeAhbqsBCB6g3d2j_xpXno9PUlRSpbqelCQXFyQo

To claim this, I am signing this object:

@rosylilly
rosylilly / myfi.rb
Created February 28, 2018 06:46
DNS switcher for macOS
#!/usr/bin/env ruby
require 'optparse'
require 'pathname'
require 'yaml'
VERSION = '0.0.1'
HOMEDIR = Pathname.new(ENV['HOME'])
options = {
# frozen_string_literal: true
class PartialValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
return if options[:if] && !valuable(record, options[:if])
return if options[:unless] && valuable(record, options[:unless])
value.validate
value.errors.messages.each_pair do |attr, messages|
messages.each do |message|
@rosylilly
rosylilly / index.html
Last active August 29, 2015 14:26
WTF
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JS TEST</title>
</head>
<body>
<script type="text/javascript">
(function() {
"use strict";