Skip to content

Instantly share code, notes, and snippets.

View kristofk's full-sized avatar

Kristof Kocsis kristofk

View GitHub Profile
@kristofk
kristofk / Main.swift
Created January 21, 2021 21:23
Simple implementation of Knuth-Morris-Pratt (KMP) algorithm in Swift
// .─────────────────────.
// _.───' `────.
// ,' `.
// ( init(next/1: ℕ[m]; P/1: ∑[m]) )
// '─. ,─'
// `────. _.───'
// `──────────┬────────'
// │
// ┌─────────────────────────┴──────────────────────┐
// │ next[1] := i := 0; j := 1 │
@kristofk
kristofk / Observable.swift
Last active August 17, 2019 10:12
Observer Pattern in Swift - Or at least my custom implementation
struct Observable<T> {
typealias ChangeHandler = (_ oldValue: T, _ newValue: T) -> Void
var value: T {
didSet {
notifySubscribers(oldValue: oldValue, newValue: value)
}
}
internal init(_ value: T) {
@kristofk
kristofk / TextField+shouldChangeCharactersIn.swift
Last active January 18, 2023 12:27
Custom reimplementation of textField(_:shouldChangeCharactersIn:replacamentString:)
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let currentText = textField.text! as NSString
let newText = currentText.replacingCharacters(in: range, with: string)
textField.text = newText
return false
}
@kristofk
kristofk / gitrenamebranch.sh
Last active July 26, 2019 06:21
Renames the current branch and locally and on remote. (gitrenamebransh.sh <remote_name> <old_branch_name> <new_branch_name>)
#!/bin/sh
# Calling this script:
# gitrenamebransh.sh <remote_name> <old_branch_name> <new_branch_name>
# Rename the local branch to the new name
git branch -m $2 $3
# Delete the old branch on remote - where <remote> is, for example, origin
git push $1 --delete $2
@kristofk
kristofk / fixgitignore.sh
Last active July 25, 2019 00:47
Apply gitignore to already existing project.
#!/bin/sh
git rm -r --cached .
git add .
git commit -m "Fixed Gitignore"
@kristofk
kristofk / xcode_build_fix.sh
Last active July 26, 2019 06:24
Fix to the following error message in terminal: terminated(72): xcrun --sdk macosx --find xctest output:
sudo xcode-select --reset
swift build
@kristofk
kristofk / switchMatrixVectors.swift
Last active October 15, 2018 13:33
Switch the rows and colums in Swift for vectors ( [[T]] ).
func determineLongestItem<T>(in matrix: [[T]]) -> Int {
var maxLength = 0
for item in matrix {
if item.count > maxLength {
maxLength = item.count
}
}
return maxLength
}
@kristofk
kristofk / swiftCode.html
Last active December 2, 2022 13:54
Html code that can be used to put highlighted Swift code into a Custom HTML Gutenberg block in Wordpress
<style>pre { background-color: #1a1a1a; border: 0px solid #ccc; padding: 0px; margin-bottom: 0px; } pre code { display: block; color: #a9bcbc; line-height: 1.4em; font-size: 0.95em; white-space: pre; } pre code .keyword { color: #e73289; } pre code .type { color: #8281ca; } pre code .call { color: #348fe5; } pre code .property { color: #21ab9d; } pre code .number { color: #db6f57; } pre code .string { color: #fa641e; } pre code .comment { color: #6b8a94; } pre code .dotAccess { color: #92b300; } .box { padding: 20px; margin: 0 auto; display: block; border-radius: 8px; background-color: #1a1a1a; border: 0px solid #ccc; } </style>
<!--Generate code at: https://splash.rambo.codes/ and then COPY HTML-->
<section class="box"><pre><code><!--Paste the generated code after this--><!--Paste the generated code before this--></code></pre></section>
@kristofk
kristofk / DeviceMeta.swift
Last active August 23, 2018 10:15
Get meta data like iPhone and iOS version of device
struct DeviceMeta {
/// Version of the application.
static let appVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String
/// Name of the current operation system. (ios/macos/...)
static let osType = UIDevice.current.systemName
/// Version of the operating system. (e.g. 11.4)
static let osVersion = UIDevice.current.systemVersion
@kristofk
kristofk / UIDevice+Extension.swift
Created July 9, 2018 14:23
An extension for UIDevice so that the device model NAME and IDENTIFIER can be determined.
extension UIDevice {
static let modelName: String = {
var systemInfo = utsname()
uname(&systemInfo)
let machineMirror = Mirror(reflecting: systemInfo.machine)
let identifier = machineMirror.children.reduce("") { identifier, element in
guard let value = element.value as? Int8, value != 0 else { return identifier }
return identifier + String(UnicodeScalar(UInt8(value)))
}