Skip to content

Instantly share code, notes, and snippets.

Natan Rolnik natanrolnik

Block or report user

Report or block natanrolnik

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
@natanrolnik
natanrolnik / guardweak.codesnippet
Last active Oct 26, 2018
Guard weak self Code Snippet
View guardweak.codesnippet
<!--
Related: https://twitter.com/natanrolnik/status/1055756310023716865
The following snippet should be copied to:
~/Library/Developer/Xcode/UserData/CodeSnippets
as, for example, guardweak.codesnippet.
When you type `guardweakself` inside a function scope, it will generate the following code snippet:
guard let <#self#> = <#self#> else {
View UICollectionViewFlowLayout+EqualSpacing.swift
import UIKit
extension UICollectionViewFlowLayout {
func equalizeSpacing(with minimumSpacing: CGFloat, aItemSize: CGSize? = nil, sectionInsetTop: CGFloat = 0, sectionInsetBottom: CGFloat = 0) {
guard let collectionView = collectionView else { return }
let totalWidth = collectionView.frame.width
let itemSizeToUse = aItemSize ?? itemSize
itemSize = itemSizeToUse
@natanrolnik
natanrolnik / UIViewFitInSuperview2.swift
Last active Oct 11, 2017
Handy methods on UIView to allow easier additions of subviews (and constraints via code), only in one UIView extension
View UIViewFitInSuperview2.swift
//: Playground - noun: a place where people can play
import UIKit
import PlaygroundSupport
extension UIView {
func addAndFitSubview(_ subview: UIView, insets: UIEdgeInsets = .zero) {
addSubview(subview)
subview.fitInSuperview(with: insets)
}
@natanrolnik
natanrolnik / UIViewFitInSuperView.swift
Last active Dec 8, 2016
Handy methods on UIView to allow easier additions of subviews (and constraints via code)
View UIViewFitInSuperView.swift
//: Playground - noun: a place where people can play
import UIKit
import PlaygroundSupport
extension NSLayoutConstraint {
func applyInset(_ insets: UIEdgeInsets) -> NSLayoutConstraint {
guard firstAttribute == secondAttribute else {
return self
}
View Gemfile
source 'https://rubygems.org'
gem 'cocoapods', '~> 1.5.3'
gem 'fastlane', '~> 2.100.1'
View fastlane-parse-notify.rb
def push_notify(lane_name, success)
require 'uri'
uri = URI.parse("https://api.parse.com/")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new("/1/classes/LaneResult")
request.add_field('Content-Type', 'application/json')
request.add_field('X-Parse-Application-Id', 'my_parse_id')
request.add_field('X-Parse-Master-Key', 'my_parse_key')
View Fastfile-after_all-error.rb
after_all do |lane|
notify "Fastlane succeeded '#{lane}'" unless Helper.is_ci? #if I'm running it locally, show a terminal OS X notification
push_notify(lane, "Succeeded") #check the bonus part!
end
error do |lane, exception|
notify "Fastlane failed '#{lane}'" unless Helper.is_ci? #if I'm running it locally, show a terminal OS X notification
push_notify(lane, "Failed") #check the bonus part!
end
View Parse-fastlane-notification.js
Parse.Cloud.afterSave("LaneResult", function(request) {
var query = new Parse.Query(Parse.Installation);
var text = "New event from " + request.object.get("App") + ": " + request.object.get("EventType");
Parse.Push.send({
where: query, // Set our Installation query
data: {
alert: text,
sound: "register.aiff"
View Fastfile-import_certificates.rb
def import_certificates
return unless Helper.is_ci? # As in my local machine I don't need to import the certificates, only run if it's in the CI
create_keychain(
name: ENV["KEYCHAIN_NAME"],
default_keychain: true,
unlock: true,
timeout: 3600,
lock_when_sleeps: true,
password: ENV["KEYCHAIN_PASSWORD"]
View Fastlane-Circle.yml
machine:
xcode:
version: "7.0"
dependencies:
pre:
- brew install mogenerator --HEAD #if you are using mogenerator, you need this step. Otherwise, ignore it
deployment:
staging:
You can’t perform that action at this time.