Skip to content

Instantly share code, notes, and snippets.

View Atsumi3's full-sized avatar
:octocat:

atsumi Atsumi3

:octocat:
View GitHub Profile
@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 / 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 / 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 / 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 / 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 / overwrap_logger.dart
Last active July 17, 2024 06:16
[Flutter] 画面最前面にオーバーレイログを表示
import 'package:flutter/widgets.dart';
final _loggerKey = GlobalKey(debugLabel: "OverWrapLogger");
class OverWrapLogger extends StatefulWidget {
final Widget child;
OverWrapLogger({
required this.child,
}) : super(key: _loggerKey);
@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 / 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 / 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 / ViewListAdapter.kt
Last active December 13, 2018 08:18
カスタムビューの表示や動作チェックに使えるかも
// usage
val adapter = ViewListAdapter(listOf(TextView::class, ImageView::class, Button::class)).apply {
listener = object : ViewListAdapter.Listener {
override fun onViewSelect(selectedViewInstance: View?) {
when(selectedViewInstance) {
is TextView -> selectedViewInstance.text = "textView"
is ImageView -> selectedViewInstance.setImageResource(android.R.drawable.ic_input_add)
is Button -> selectedViewInstance.text = "button"
}
}