Skip to content

Instantly share code, notes, and snippets.

🕊️
Happy Hacking

Sho Kusano rosylilly

🕊️
Happy Hacking
View GitHub Profile
@rosylilly
rosylilly / application_record.rb
Created Jan 15, 2020
Useful application record snippet for rails application
View application_record.rb
# 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 Sep 25, 2019 — forked from tateisu/removeSpam.pl
suspend user who in pawoo.net and his note like 'めったにPawooを使いません'.
View removeSpam.pl
#!/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;
View isucon-checklist.md
  • HTTP/2
  • Accept-Encoding: gzip, brotli
  • Cache-Control
  • その DB ロックは Redis に移せないか
  • IN と JOIN どっちが早いか
  • 静的ファイル gzip した?
  • stackprof した?
  • ベンチマーカーのリクエストヘッダ全部みた?
  • pprof した?
  • 全台使い切ってる?
View isucon9q.md

ISUCON9 に出た

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

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

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

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 Feb 28, 2018
DNS switcher for macOS
View myfi.rb
#!/usr/bin/env ruby
require 'optparse'
require 'pathname'
require 'yaml'
VERSION = '0.0.1'
HOMEDIR = Pathname.new(ENV['HOME'])
options = {
View partial_validator.rb
# 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|
View index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JS TEST</title>
</head>
<body>
<script type="text/javascript">
(function() {
"use strict";
View guideline.md

crystal-jp/issues's guideline

Issuer の皆さんへ

どんな時に作るのか

こんなことでお困りの時は、お気軽に issue を作っていただければ、何かお力になれるかもしれません。

  • Crystal 本体や Crystal 関連のライブラリに問題を見つけたけど、本家のリポジトリに報告すべきか悩むとき。(bugs ラベルを付ける)
  • Crystal 本体や Crystal 関連のライブラリに要求したい機能があるけど、本家のリポジトリで話し合う前に意見を求めたいとき。(features ラベルを付ける)
View hello-world.cr
puts "Hello, World"
STDOUT.puts "Hello, World"
class Point
property :x, :y
def initialize(@x, @y)
end
end
You can’t perform that action at this time.