Skip to content

Instantly share code, notes, and snippets.

View cemolcay's full-sized avatar
🎼
🎶

Cem Olcay cemolcay

🎼
🎶
View GitHub Profile
@cemolcay
cemolcay / killport.sh
Created August 3, 2017 08:32
killport.sh
PORT=$1
PIDS=$(lsof -t -i:$PORT)
for i in ${PIDS[@]}
do
kill -9 $i
echo "PID $i on port $PORT killed"
done
@cemolcay
cemolcay / git-tag-move.sh
Created August 14, 2017 12:13
git-tag-move.sh
# git-tag-move.sh
TAG = $1
COMMIT = $2
git tag --force TAG COMMIT
git push --force --tags
@cemolcay
cemolcay / gist:8d408e0ded9263e31aa10b4cc358311b
Created August 14, 2017 21:59
hackerrank swift input reader
import Foundation
var input = [[Int]]()
while let line = readLine() {
input.append(line.components(separatedBy: [" "]).map { Int($0)! })
}
print(input)
@cemolcay
cemolcay / circular-array-subscript.swift
Created October 5, 2017 07:03
Swift circular array subscript
extension Array {
subscript(circular index: Int) -> Element? {
var i = index
if i < 0 || isEmpty {
return nil
} else if i > count - 1 {
i = index % count
}
return self[i]
}
func convertValue(oldValue: CGFloat, oldMin: CGFloat, oldMax: CGFloat, newMin: CGFloat, newMax: CGFloat) -> CGFloat {
let oldRange = oldMax - oldMin
let newRange = newMax - newMin
return (((oldValue - oldMin) * newRange) / oldRange) + newMin
}
@cemolcay
cemolcay / ABLLinkManager.swift
Last active October 21, 2024 17:56
Swift 4.0 port for LinkKit iOS of Ableton Link
//
// ABLLinkManager.swift
//
// Created by Cem Olcay on 5.03.2018.
// Copyright © 2018 cemolcay. All rights reserved.
//
import Foundation
import AVFoundation
@cemolcay
cemolcay / ConvertableRange.swift
Created February 20, 2018 12:02
Converts a value in a range to another range in Swift 4.0
import Foundation
func convert<T: FloatingPoint>(value: T, inRange: ClosedRange<T>, toRange: ClosedRange<T>) -> T {
let oldRange = inRange.upperBound - inRange.lowerBound
let newRange = toRange.upperBound - toRange.lowerBound
return (((value - inRange.lowerBound) * newRange) / oldRange) + toRange.lowerBound
}
func convert<T: SignedInteger>(value: T, inRange: ClosedRange<T>, toRange: ClosedRange<T>) -> T {
let oldRange = inRange.upperBound - inRange.lowerBound
@cemolcay
cemolcay / machAbsoluteToSeconds.swift
Last active March 4, 2020 08:10
mach_absolute_time to seconds in Swift
var timebaseInfo = mach_timebase_info_data_t()
init() {
mach_timebase_info(&timebaseInfo)
}
func machAbsoluteToSeconds(machAbsolute: UInt64 = mach_absolute_time()) -> Double {
let nanos = Double(machAbsolute * UInt64(timebaseInfo.numer)) / Double(timebaseInfo.denom)
return nanos / 1.0e9;
}
@cemolcay
cemolcay / CircularArrayExtension.swift
Created October 8, 2018 01:52
An array subscript extension that returns the element from the positive or negative circular index.
import Foundation
extension Array {
/// An array subscript extension that returns the element from the positive or negative circular index.
public subscript(circular index: Int) -> Element? {
guard count > 0 else { return nil }
let mod = index % count
let offset = index >= 0 ? 0 : count
let idx = mod == 0 ? 0 : mod + offset
return self[idx]
@cemolcay
cemolcay / UIViewController+TopMostChild.swift
Created October 29, 2018 07:19
Returns the top most child in a view controller.
import UIKit
extension UIViewController {
var topMostChild: UIViewController? {
if let tab = self as? UITabBarController {
return tab.selectedViewController?.topMostChild
} else if let nav = self as? UINavigationController {
return nav.topViewController?.topMostChild
} else if let split = self as? UISplitViewController {
return split.viewControllers.last?.topMostChild