Skip to content

Instantly share code, notes, and snippets.

View Atsumi3's full-sized avatar
:octocat:

atsumi Atsumi3

:octocat:
View GitHub Profile
@Atsumi3
Atsumi3 / delete_workflows.sh
Created October 11, 2023 11:13
Github Actions の不要なAction履歴削除
# based: https://stackoverflow.com/a/67000032
# ghコマンドのセッションチェック
gh auth status >/dev/null
if [ $? -ne 0 ]; then
echo "Please login to GitHub with gh command."
exit 1
fi
# org, repo を引数から取得する
@Atsumi3
Atsumi3 / flutter-all-clean.sh
Created May 29, 2023 04:53
[fvm] Flutterでプロジェクトがおかしくなった時に正常化するShellスクリプト
#!/usr/bin/env bash
PUBSPEC_FILE_NAME='pubspec.yaml'
echo '------------------------------------'
echo '-- flutter clean'
echo $(pwd)
# .dart_tool を除いたプロジェクトフォルダ内の $PUBSPEC_FILE_NAME が格納されているディレクトリ一覧を取得
PUB_SPEC_DIRS=$(find "$(pwd)" \
@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())
}
@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 / 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 / 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になる)