Skip to content

Instantly share code, notes, and snippets.

View yuki24's full-sized avatar
🔢
NaN :trollface:

Yuki Nishijima yuki24

🔢
NaN :trollface:
View GitHub Profile
@yuki24
yuki24 / colon_equal.rb
Created April 23, 2020 22:16
One-liner method definition in Ruby
module OneLinerExamples
# https://github.com/rack/rack/blob/f9ad97fd/lib/rack/request.rb#L150-L155
def body := get_header(RACK_INPUT)
def script_name := get_header(SCRIPT_NAME).to_s
def script_name=(s) := set_header(SCRIPT_NAME, s.to_s)
def path_info := get_header(PATH_INFO).to_s
def path_info=(s) := set_header(PATH_INFO, s.to_s)
# https://github.com/rack/rack/blob/f9ad97fd/lib/rack/response.rb#L126-L129
@yuki24
yuki24 / routes_ast.rb
Created July 22, 2019 01:19
Rails routes AST access
#
# Run this with `rails runner route_ast.rb`
#
Rails.application.routes.routes.each do |route|
ast = route.ast
# do stuff with AST...
end
@yuki24
yuki24 / grid-col.ts
Last active April 6, 2019 19:27
grid-elements
import { LitElement, html, customElement } from '@polymer/lit-element'
const NUMBER_OF_GRID = 12
const generateCss = (screenSize) => {
return Array.apply(0, Array(NUMBER_OF_GRID)).map((element, index) => index + 1).map(num =>
`
:host([${screenSize}="${num}"]) {
-ms-flex-preferred-size: ${(100 / NUMBER_OF_GRID) * num}%;
flex-basis: ${(100 / NUMBER_OF_GRID) * num}%;
@yuki24
yuki24 / artemis.rb
Created February 2, 2019 03:56
graphql-client vs artemis
# config/graphql.yml
development:
sw_api:
url: "https://example.com/graphql"
schema_path: "path/to/schema.json"
# app/operations/sw_api/hero.graphql
query($episode: Episode) {
hero(episode: $episode) {
name
@yuki24
yuki24 / andpush_benchmark.rb
Created April 14, 2018 21:13
Example of the Andpush gem and benchmark
require 'benchmark/ips'
require 'andpush'
require 'fcm'
server_key = ENV.fetch('FCM_TEST_SERVER_KEY')
DEVICE_TOKEN = ENV.fetch('FCM_TEST_REGISTRATION_TOKEN')
FCM_CLIENT = FCM.new(server_key)
PAYLOAD_FOR_FCM = { dry_run: true, notification: { title: "u", body: "y" } }
require 'benchmark_driver'
Benchmark.driver do |x|
x.prelude <<~RUBY
METHODS = ''.methods
INPUT = 'start_with?'
spell_checker = DidYouMean::SpellChecker.new(dictionary: METHODS)
RUBY
@yuki24
yuki24 / object_mapper.rb
Last active January 30, 2018 19:56
better JSON serializer that returns an object with pre-defined attribute readers
require 'json'
require 'securerandom'
require 'delegate'
class ObjectMapper < SimpleDelegator
def self.parse(json_string, **opts)
JSON.parse(json_string, object_class: JsonHash, create_additions: true, create_id: JSON_CREADE_ID, **opts)
end
JSON_CREADE_ID = SecureRandom.uuid.freeze
require 'benchmark/ips'
require 'andpush'
require 'fcm'
server_key = ENV.fetch('FCM_TEST_SERVER_KEY')
DEVICE_TOKEN = ENV.fetch('FCM_TEST_REGISTRATION_TOKEN')
FCM_CLIENT = FCM.new(server_key)
PAYLOAD_FOR_FCM = { dry_run: true, notification: { title: "u", body: "y" } }
def with_exceptions_app(enabled = true)
org_show_detailed_exceptions = Rails.application.env_config['action_dispatch.show_detailed_exceptions']
org_show_exceptions = Rails.application.env_config['action_dispatch.show_exceptions']
# This overrides the cached setting in Rails.application.config.consider_all_requests_local
Rails.application.env_config['action_dispatch.show_detailed_exceptions'] = !enabled
# Render templates instead of raising exceptions.
Rails.application.env_config['action_dispatch.show_exceptions'] = enabled
@yuki24
yuki24 / json_with_synbolize_names.rb
Created January 13, 2017 22:51
JSON with the symbolize_name: true option
require 'json'
require 'open-uri'
require 'benchmark/ips'
require 'memory_profiler'
json = open('https://network.pivotal.io/api/v2/products').read
Benchmark.ips do |x|
x.report('symbolize_names: false') { JSON.parse(json) }
x.report('symbolize_names: true') { JSON.parse(json, symbolize_names: true) }