Skip to content

Instantly share code, notes, and snippets.

View nkmrh's full-sized avatar
🐧

Hajime Nakamura nkmrh

🐧
View GitHub Profile
@nkmrh
nkmrh / TaskLocal.playground
Created January 17, 2024 04:45
TaskLocal
import UIKit
/*:
# TaskLocal
# 背景
- Swiftが非同期関数とアクターを採用したことで、非同期コードはどこにでも存在する
- 非同期コードをデバッグ、トレース、その他の方法でインスツルメンテーションする必要性は、以前よりもさらに必要になる
- スレッドローカルやキュー固有の値など、リクエストに沿って情報を運ぶためにインスツルメンテーションシステムが以前使用していたツールは、Swiftのタスクに焦点を当てた並行処理ともはや互換性がない

Bazelは、Googleによって開発されたビルドツールです。 Bazelは、ビルドやテスト、デプロイなどのタスクを自動化し、大規模なソフトウェア開発プロジェクトを管理するためのツールです。

Bazelは、複数のプログラミング言語に対応しており、C++、Java、Python、Goなど多くの言語に対応しています。 Bazelは、多数のプラットフォームにも対応しており、Linux、macOS、Windowsなどで使用することができます。

Bazelは、Google内での大規模なソフトウェア開発において使用されてきました。そのため、Bazelは大規模なプロジェクトを扱うことができ、スケーラビリティに優れています。

Bazelは、ビルド設定を「BUILD」ファイルと呼ばれる特別な形式で記述します。このBUILDファイルは、ビルド対象のファイルやライブラリ、依存関係などを記述します。

@nkmrh
nkmrh / how-apolloCodegen-works.swift
Created December 7, 2022 00:59
ApolloCodegen の仕組み
// https://github.com/apollographql/apollo-ios/blob/main/Sources/ApolloCodegenLib/ApolloCodegen.swift#L313-L318
// ApolloCodegen Codegen の仕組み
// FileGenerator
protocol FileGenerator {
var template: TemplateRenderer { get }
}
@nkmrh
nkmrh / ja-NSSpain-X-13.md
Created October 28, 2022 11:01
Japanese translation of NSSpain-X-13

13 - Lessons learnt rewriting SoundCloud in SwiftUI - Matias Villaverde & Rens Breur

https://vimeo.com/751534042

Um, yeah before the talk, I would like to use this time to clarify something because it has been this like rumors or like people talking behind our backs.

ええと、そうですね、話をする前に、この時間を使って、あることを明らかにしたいと思います。

@nkmrh
nkmrh / object_seam.swift
Created July 29, 2020 07:10
レガシーコード改善ガイド 4.2 接合部
import Foundation
class Hoge {
func fuga() {
// .........................
// .........................
// .........................
// .........................
let v = min(2, 1)
print(v)
@nkmrh
nkmrh / DonutPieChart.playground.swift
Last active January 14, 2023 00:41
Draw donut pie chart with SwiftUI
import UIKit
import SwiftUI
extension FloatingPoint {
var degreesToRadians: Self { self * .pi / 180 }
var radiansToDegrees: Self { self * 180 / .pi }
}
struct Donut: Identifiable {
var id = UUID()
final class _TextFieldCoordinator: NSObject {
var control: _TextField
init(_ control: _TextField) {
self.control = control
super.init()
control.textField.addTarget(self, action: #selector(textFieldEditingDidBegin(_:)), for: .editingDidBegin)
control.textField.addTarget(self, action: #selector(textFieldEditingDidEnd(_:)), for: .editingDidEnd)
control.textField.addTarget(self, action: #selector(textFieldEditingChanged(_:)), for: .editingChanged)
control.textField.addTarget(self, action: #selector(textFieldEditingDidEndOnExit(_:)), for: .editingDidEndOnExit)
@nkmrh
nkmrh / launch_url.dart
Created September 10, 2018 01:16
launch_url
import 'package:url_launcher/url_launcher.dart';
InkWell(
child: Text("This is a link text"),
onTap: () async {
if (await canLaunch("url")) {
await launch("url");
}
},
),
@nkmrh
nkmrh / import_url_lancher_package.yml
Created September 10, 2018 01:14
import_url_lancher_package
dependencies:
flutter:
sdk: flutter
url_launcher: ^3.0.3
Navigator.push(context, MaterialPageRoute<Null>(
builder: (BuildContext context) {
return YourWidget();
},
fullscreenDialog: true, <-- here
));