Skip to content

Instantly share code, notes, and snippets.

View eraser3031's full-sized avatar

Yaehoon Kim eraser3031

View GitHub Profile
@radiofun
radiofun / simplewavenoise.metal
Last active May 26, 2026 18:27
Simple Wave with Noise
#include <metal_stdlib>
#include <SwiftUI/SwiftUI.h>
using namespace metal;
float hash21(float2 p) {
float3 p3 = fract(float3(p.xyx) * 0.1031);
p3 += dot(p3, p3.yzx + 33.33);
return fract((p3.x + p3.y) * p3.z);
}
#include <metal_stdlib>
#include <SwiftUI/SwiftUI.h>
using namespace metal;
// 画面の曲面歪みを適用する関数
// この関数は、CRTモニターの曲面ガラスによる画像の歪みをシミュレートします。
// UV座標(0.0〜1.0の正規化座標)を入力とし、中央からの距離に基づいて
// バレル歪み(barrel distortion)を適用します。これにより、画面の端が
// 外側に膨張するような効果が生まれ、レトロなCRTの視覚を再現します。
// - Parameters:
@samhenrigold
samhenrigold / gist:5b88f12283513d8808d8cc9b65bc47ee
Last active June 3, 2025 13:04
`UIView.SystemAnimation.delete` demo playground
/// Video demo: https://hachyderm.io/@samhenrigold/114359529882977822
import UIKit
import PlaygroundSupport
final class DeleteDemoVC: UIViewController {
private let stack = UIStackView()
override func viewDidLoad() {
super.viewDidLoad()
@juliensagot
juliensagot / VariableBlurView.swift
Last active September 22, 2025 06:52
SwiftUI variable blur view
import Foundation
import SwiftUI
import UIKit
extension UIBlurEffect {
public static func variableBlurEffect(radius: Double, imageMask: UIImage) -> UIBlurEffect? {
let methodType = (@convention(c) (AnyClass, Selector, Double, UIImage) -> UIBlurEffect).self
let selectorName = ["imageMask:", "effectWithVariableBlurRadius:"].reversed().joined()
let selector = NSSelectorFromString(selectorName)
@godrm
godrm / swift_api_guideline.md
Last active April 9, 2026 21:08
스위프트 API 가이드라인

1. 스타일/문법 리뷰

1-1 스위프트 API 디자인 가이드라인

https://swift.org/documentation/api-design-guidelines/

  • 사용할 때 기준으로 명확하게 작성하는 게 가장 중요한 지향점이다. 메소드나 프로퍼티 같은 개발 요소는 한 번만 선언하고 반복적으로 사용한다. API를 만들 때는 사용하기 명확하고 편하게 만들어야 한다. 설계를 검증할 때 선언 부분을 읽는 것만으로는 부족하다. 그 대신 사용하는 상황에서 맥락에 맞고 명확한 지 늘 고려해야 한다.

  • 명확한 표현이 압축한 간결성보다 더 중요하다. 스위프트 코드는 압축해서 간결하게 작성할 수 있지만, 단지 글자수를 줄여서 가장 짧은 코드를 만드는 게 목표는 아니다. 스위프트 코드의 간결성은 자연스럽게 반복적으로 재사용하는 코드(boilerplate)를 줄이는 기능과 강한 타입 시스템의 부수효과로 드러날 뿐이다.