Skip to content

Instantly share code, notes, and snippets.

View devxoul's full-sized avatar
👨‍💻
Always coding

Suyeol Jeon devxoul

👨‍💻
Always coding
View GitHub Profile
@devxoul
devxoul / UIBezierPath+CatmullRomInterpolate.swift
Created November 22, 2020 08:25
Spline Interpolation In Swift
extension UIBezierPath {
/// https://github.com/jnfisher/ios-curve-interpolation/blob/master/Curve%20Interpolation/UIBezierPath%2BInterpolation.m
func catmullRomInterpolate(with points: [CGPoint], alpha: CGFloat = 0.3) {
guard points.count >= 4 else { return self.hermiteInterpolate(with: points, alpha: alpha) }
let startIndex = 1
let endIndex = points.count - 2
for currentIndex in 1..<endIndex {
let prevIndex = currentIndex - 1
import Foundation
public enum Swinject {
public final class Container {
}
}
protocol Assembly {
func assemble(to container: Swinject.Container)
}
import io
import requests
import subprocess
import zipfile
FIREBASE_VERSION = '6.29.0'
def main():
json_urls = [
"https://dl.google.com/dl/firebase/ios/carthage/FirebaseAnalyticsBinary.json",
@devxoul
devxoul / git-reorder
Last active February 26, 2021 07:34
$ git reorder HEAD~3
# https://gist.github.com/devxoul/00b5b4fac4243075656dc79912e256d6
git rebase --exec 'git commit --amend -C HEAD --date="$(date -R)" && sleep 1.05' $1
@devxoul
devxoul / NSStatusBarStub.swift
Created May 8, 2020 20:17
NSStatusBarStub Draft
final class NSStatusBarStub: NSStatusBar {
override func statusItem(withLength length: CGFloat) -> NSStatusItem {
let alloc = NSStatusItem.perform(NSSelectorFromString("alloc"))!.takeRetainedValue() as! NSStatusItem
let selector = NSSelectorFromString("_initInStatusBar:withLength:withPriority:hidden:")
let imp = alloc.method(for: selector)
typealias ObjcInitBlock = @convention(c) (NSStatusItem, Selector, NSStatusBar, CGFloat, Int, Bool) -> NSStatusItem
let initializer = unsafeBitCast(imp, to: ObjcInitBlock.self)
let statusItem = initializer(alloc, selector, self, length, 1, true) // it won't work the last parameter("hidden") is set to `false`
@devxoul
devxoul / TypedContainer.swift
Last active May 6, 2020 07:06
Conceptual strong-typed DI container
protocol ContainerProtocol {
associatedtype Service
associatedtype Nested: ContainerProtocol
var service: Service { get }
var nestedContainer: () -> Nested { get }
}
struct TypedContainer<Service, Nested: ContainerProtocol>: ContainerProtocol {
let service: Service
@devxoul
devxoul / distinctUntilChanged.swift
Last active April 16, 2020 19:43
RxSwift Observable<(T, T)>.distinctUntilChanged() returns wrong result
let source = Observable<(Int, Int)>.from([
(0, 1),
(2, 3),
(4, 5),
])
// Doesn't work as expected
// A -> (0, 1)
source
.distinctUntilChanged(==)
@devxoul
devxoul / 6.19.0
Last active April 7, 2020 09:19
Romefile for Firebase
repositoryMap:
- FirebaseAnalyticsBinary:
- name: FIRAnalyticsConnector
- name: Firebase
- name: FirebaseAnalytics
- name: FirebaseCore
- name: FirebaseCoreDiagnostics
- name: FirebaseInstallations
- name: GoogleAppMeasurement
- name: GoogleDataTransport
import UIKit
import PlaygroundSupport
let width: CGFloat = 200
let height: CGFloat = 100
let spacing: CGFloat = 10
let numberOfViews: Int = 5
let canvas = UIView(frame: CGRect(
x: 0,
// TODO: define type 'User'
func testCase1() {
let json: [String: Any] = [
"id": 1,
"usermname": "devxoul",
"email": "devxoul@gmail.com",
]
let user = User(json: json)