Skip to content

Instantly share code, notes, and snippets.

🖖
Hi!

Thanh Pham T-Pham

🖖
Hi!
Block or report user

Report or block T-Pham

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@T-Pham
T-Pham / MacroFunctions.swift
Last active Jul 22, 2016
A wrapper function for Swift conditional compilation statements
View MacroFunctions.swift
//
// MacroFunctions.swift
//
// Created by Thanh Pham on 7/22/16.
//
func ifNotDebugDo(@noescape closure: Void -> Void) {
#if !DEBUG
closure()
#endif
@T-Pham
T-Pham / tree.swift
Last active Jul 25, 2016
Mirror tree without recursion
View tree.swift
class Node {
var id = 0
weak var parent: Node? = nil
var left: Node? = nil {
didSet {
left?.parent = self
}
}
var right: Node? = nil {
didSet {
View keybase.md

Keybase proof

I hereby claim:

  • I am t-pham on github.
  • I am tpham (https://keybase.io/tpham) on keybase.
  • I have a public key ASB2senYAAcq9Q0QhoCtDhc6fYJfbt1QTEsA8X7CZJi5fwo

To claim this, I am signing this object:

@T-Pham
T-Pham / MyTextField.swift
Last active Aug 15, 2016
Custom UIControlEvents
View MyTextField.swift
struct MyTextFieldEvents: OptionSetType {
let rawValue: UInt
static let BackSpaceDidPress = MyTextFieldEvents(rawValue: 1 << 24)
}
class MyTextField: UITextField {
func addTarget(target: AnyObject?, action: Selector, forControlEvents controlEvents: MyTextFieldEvents) {
super.addTarget(target, action: action, forControlEvents: UIControlEvents(rawValue: controlEvents.rawValue))
}
@T-Pham
T-Pham / DeviceOptimizer.swift
Last active Aug 15, 2016
Convenient Swift method to run a closure of UI-optimizing code on some devices selectively based on their logical height
View DeviceOptimizer.swift
//
// DeviceOptimizer.swift
//
// Created by Thanh Pham on 8/4/16.
//
import UIKit
struct DeviceOptimizer {
@T-Pham
T-Pham / AlamofireSwiftyJSONSerializer.swift
Last active Mar 15, 2017
Alamofire SwiftyJSON Serializer
View AlamofireSwiftyJSONSerializer.swift
//
// AlamofireSwiftyJSONSerializer.swift
//
// Created by Thanh Pham on 7/21/16.
//
import Alamofire
import SwiftyJSON
extension Request {
@T-Pham
T-Pham / gist:3d595db25271a0fbaa8e5e4076158ac7
Created Apr 7, 2017
Export test coverage from slather to shield.io badge html object
View gist:3d595db25271a0fbaa8e5e4076158ac7
slather coverage \
--cobertura-xml \
--scheme "SchemeName" \
--workspace path/to/workspace \
XcodeProjectName.xcodeproj
xmlstarlet sel \
--template \
--match "//coverage[1]" \
--elem "object" \
@T-Pham
T-Pham / base64.txt
Created Jun 6, 2017
Base64 test string
View base64.txt
eyJhIjoiPGE+Pz8/In0=
View Disco.brs
sub init()
n = 50
m.n = n
for i = 0 to n * n - 1
c = i mod n + 1
r = Int(i / n) + 1
child = CreateObject("roSGNode", "Rectangle")
w = Int(1280 / n)
h = Int(720 / n)
child.width = w
View BoomClap.json
{"data":[{"author":{"name":"Aleks","picture":{"s":"https://bandlab-test-images.azureedge.net/v1.0/Users/71c81538-4e88-e511-80c6-000d3aa03fb0/636016633463395803/360x360","m":"https://bandlab-test-images.azureedge.net/v1.0/Users/71c81538-4e88-e511-80c6-000d3aa03fb0/636016633463395803/640x640","l":"https://bandlab-test-images.azureedge.net/v1.0/Users/71c81538-4e88-e511-80c6-000d3aa03fb0/636016633463395803/1024x1024","xs":"https://bandlab-test-images.azureedge.net/v1.0/Users/71c81538-4e88-e511-80c6-000d3aa03fb0/636016633463395803/100x100","url":"https://bandlab-test-images.azureedge.net/v1.0/users/71c81538-4e88-e511-80c6-000d3aa03fb0/636016633463395803/"}},"createdOn":"2016-09-23T08:15:13Z","modifiedOn":"2016-09-23T08:15:13Z","picture":{"s":"https://bandlab-test-images.azureedge.net/v1.0/Users/71c81538-4e88-e511-80c6-000d3aa03fb0/636016633463395803/360x360","m":"https://bandlab-test-images.azureedge.net/v1.0/Users/71c81538-4e88-e511-80c6-000d3aa03fb0/636016633463395803/640x640","l":"https://bandlab-test-images.az
You can’t perform that action at this time.