Skip to content

Instantly share code, notes, and snippets.

r-plus / github-ios-ss.js
Created Aug 5, 2022
BetterTouchTool javascript transform for github iOS Simulator screenshot width 300
View github-ios-ss.js
async (str) => {
const re = /https?:\/\/[-_.!~*\'a-zA-Z0-9;\/?:\@&=+\$,%#]+/g;
const m = str.match(re);
return `<img src=${m[0]} width=300>`;
r-plus / add_tag.mjs
Created Sep 22, 2021
add tag name to all lambda functions
View add_tag.mjs
#!/usr/bin/env zx
const aws = require('aws-sdk');
const lambda = new aws.Lambda({ region: 'ap-northeast-1' });
const functions = await lambda.listFunctions().promise();
for (const f of functions.Functions) {
const str = await $`aws lambda list-tags --resource ${f.FunctionArn}`
const json = JSON.parse(str);
r-plus / config.yml
Created Apr 14, 2021
Install yonaskolb/mint from GitHub (confirmed on CircleCI)
View config.yml
- run:
name: Install mint
command: |
version=$(curl -s "" | sed 's/^.*tag\/\([^"]*\).*$/\1/')
echo Installing mint ${version}
curl -Ls -o${version}/
mv mint /usr/local/bin/
r-plus /
Last active Sep 6, 2020
PreferenceLoader compatibility issue on Odyssey

coolstar version of PreferenceLoader v3.0.1 no longer support PLFilterKey NSString symbol since this commit

So if tweaks that using PLFilterKey not work on Odyssey environment like this.

Injection failed: 'dlopen(/Library/TweakInject/Sleipnizer.dylib, 9): Symbol not found: _PLFilterKey

I just replace PLFilterKey to own impl of NSString to fix this compatibility breaking change.

r-plus /
Last active Jun 2, 2020
WebKit version in iOS


View DLog.h
#ifdef DEBUG
#ifdef __cplusplus
extern "C" void MyDebugLog(NSString *formatString, ...);
extern void MyDebugLog(NSString *formatString, ...);
#define DLog(...) MyDebugLog(__VA_ARGS__)
#define DLog(...)
View Observable+RetryDelay.swift
extension Observable {
/// maxAttemptまでdelay間隔をあけてリトライする
/// - Parameters:
/// - maxAttempt: 最大リトライ回数
/// - delay: 間隔
/// - Returns: リトライしたObservable
func retry(_ maxAttempt: Int, delay: RxTimeInterval) -> Observable<Element> {
return retryWhen { (err: Observable<Error>) -> Observable<Int> in
r-plus / decode_into_sample.swift
Last active Sep 14, 2019
method for don't throw Swift.Error and keep default value if key is not present in json.
View decode_into_sample.swift
extension KeyedDecodingContainerProtocol {
func decode<T: Decodable>(into: inout T, forKey key: Self.Key) {
guard let tmp = try? self.decode(T.self, forKey: key) else { return }
into = tmp
class A: Decodable {
var hoge = "1"
enum CodingKeys: CodingKey {
r-plus / segv.swift
Last active Jan 15, 2019
Swift compiler SEGV in Xcode10.
View segv.swift
// ===========================
// Pattern1: SEGV in Xcode10(Swift4.2 or Swift4) ~ Xcode10.1(Swift 4.2.1)
// This code compilable in Xcode 9.4.1(Swift 4.1)
// ===========================
class A {}
protocol BProtocol {
associatedtype Info: A
var info: Info? { get set }

per_fileオプションのハンドリングをするのはモデル側(or AbstractReporter)の方が良いのではないかと考えています、理由としては

  • ファイルごとの実行時間を出すのを専用のReporterにもっていってしまうと、例えばJSONReporterでJSON形式でファイル毎の実行時間をだそうと思った場合 JSONReporter側でper_fileオプションのハンドリングをしなければならなくなってしまうと思っています。
  • またThresholdオプション+per_fileの場合はファイルの合計時間に対してフィルタリングがかかるべきで、 個別の実行時間をフィルタリングした後の合計値を表示するのはちょっと違うかなと思っています。 で、それを考えると各Reporter側にper_file処理を担当させると各Reporter側で filter_executions をoverrideして threshold処理の前にファイル毎にまとめる処理を入れないとならずそれも微妙かなと。