Skip to content

Instantly share code, notes, and snippets.

View Atsumi3's full-sized avatar
:octocat:

atsumi Atsumi3

:octocat:
View GitHub Profile
@Atsumi3
Atsumi3 / IdlingResourceExtension.kt
Created February 14, 2019 08:46
IdlingResource.use
import android.support.test.espresso.IdlingRegistry
import android.support.test.espresso.IdlingResource
inline fun <T: IdlingResource?, R> T.use(block: (T) -> R): R {
var exception: Throwable? = null
try {
IdlingRegistry.getInstance().register(this)
return block(this)
} catch (e: Throwable) {
exception = e
@Atsumi3
Atsumi3 / methodMonitoring.swift
Created March 18, 2019 11:33
[Swift4] メソッドの動作確認用クロージャ
/*
// example:
func getAuthToken() -> String {
return methodMonitoring {
return apiService.requestToken()
}
}
MONITORING: ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
MONITORING: ┃ Thread: <NSThread: 0x6000036ef280>{number = 1, name = main}
@Atsumi3
Atsumi3 / CharSequenceClickExtension.kt
Created November 12, 2019 03:06
文字列をタップした時の制御を楽にする拡張
import android.text.SpannableString
import android.text.Spanned
import android.text.style.ClickableSpan
import android.view.View
import java.util.regex.Pattern
// 格納先のTextViewに以下の設定が必須
// textView.movementMethod = LinkMovementMethod.getInstance()
fun CharSequence.setTextClickListener(regex: String = "", onClick: ((text: String) -> Unit)): SpannableString {
// regexが空だったら自分自身を指定する (テキスト全てがClickableになる)
@Atsumi3
Atsumi3 / int_ext.dart
Last active June 9, 2023 09:55
[Dart] Intからその数字分のリストを生成する
extension IntExt on int {
/// 3.indexMap((idx) => "$idx!")
/// => [0!, 1!, 2!]
Iterable<T> map<T>(T Function(int idx) f) sync* {
int k = 0;
while (k < this) {
yield f(k++);
}
}
}
@Atsumi3
Atsumi3 / FlutterView.swift
Last active February 13, 2023 09:36
UIViewとしてFlutter Widgetを表示するView
import UIKit
import Flutter
@IBDesignable
class FlutterView: UIView {
@IBInspectable
var routeName: String = "" {
didSet {
setupFlutterView()
@Atsumi3
Atsumi3 / UIView+DumpChildViewTree.swift
Created March 29, 2023 07:15
iOS Dump UIView child tree
import UIKit
extension UIView {
func dumpChildViewTree(_ indent: Int = 0) {
print("\(String(repeating: " ", count: indent)) \(className)")
subviews.forEach { $0.dumpChildViewTree(indent + 1) }
}
}
@Atsumi3
Atsumi3 / yahoo_login_dialog.dart
Last active April 2, 2023 07:32
Flutter で Yahoo Japan へのログインをする Dialog
/*
pubspec.yaml
dependencies:
flutter_inappwebview: 5.5.0
http: ^0.13.5
*/
// https://developer.yahoo.co.jp/yconnect/v2/authorization_code/
@Atsumi3
Atsumi3 / app_mail_notifier.gs
Created April 3, 2023 09:41
タイトルに特定アプリ名を含むメールを受信したらSlackに通知するgs
/**
* ここから始まる
* @param {string} appName - アプリ名
* @param {string} fromAddress - 送信元アドレス
* @param {string} slackChannelName - 投稿先チャンネル名
* @param {string} slackMessageIcon - 投稿メッセージアイコン
* @param {string} slackMessageUserName - 投稿者名
* @param {string} webhookUrl - 投稿スペースのWebhookUrl
*/
@Atsumi3
Atsumi3 / ContextLoadFileExt.kt
Last active May 29, 2023 04:57
[Android] assetsにあるファイルをキャッシュ領域にコピーし、Fileとして扱えるようにするスニペット 
fun Context.loadFileFromAssets(fileName: String): File {
return File(cacheDir, fileName)
.also {
if (it.exists()) it.delete()
it.outputStream().use { cache ->
assets.open(fileName).use { inputStream ->
inputStream.copyTo(cache)
}
}
}
@Atsumi3
Atsumi3 / GetSignature.kt
Last active February 1, 2024 09:18
AndroidでアプリのSHA1,SHA256を取得するスニペット
@Suppress("DEPRECATION")
@SuppressLint("PackageManagerGetSignatures")
fun getSignature(algorithm: String): String {
fun byteArrayToReadableString(array: ByteArray, delimiter: String = ":"): String {
return array.joinToString(delimiter) {
var str = Integer.toHexString(it.toInt())
str = (if (str.length == 1) "0$str" else str).replace("ff", "")
if (str.isEmpty()) str = "FF"
str.uppercase(Locale.getDefault())
}