Skip to content

Instantly share code, notes, and snippets.

Alejandro Ramirez j4n0

Block or report user

Report or block j4n0

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
View ioslocaleidentifiers.csv
We can make this file beautiful and searchable if this error is corrected: No commas found in this CSV file in line 0.
mr Marathi
bs Bosnian
ee_TG Ewe (Togo)
ms Malay
kam_KE Kamba (Kenya)
mt Maltese
ha Hausa
es_HN Spanish (Honduras)
ml_IN Malayalam (India)
ro_MD Romanian (Moldova)
@j4n0
j4n0 / AutoLayout.swift
Created Apr 30, 2019
Buttons with equal width using Visual Format Language
View AutoLayout.swift
import UIKit
public extension UIView {
var autoLayout: AutoLayout {
return AutoLayout(self)
}
}
@j4n0
j4n0 / karabiner.json
Created Dec 10, 2018
My Karabiner rules containing "WASD arrow Keys toggled by Capslock". See https://stackoverflow.com/a/53698322/412916
View karabiner.json
{
"global": {
"check_for_updates_on_startup": true,
"show_in_menu_bar": true,
"show_profile_name_in_menu_bar": false
},
"profiles": [
{
"complex_modifications": {
"parameters": {
@j4n0
j4n0 / idioms.swift
Last active Jun 29, 2018
initialising idioms
View idioms.swift
import UIKit
// this one doesn’t require a helper function
var label: UILabel = {
$0.backgroundColor = .blue
$0.text = "This is a playground"
$0.textColor = .white
$0.textAlignment = .center
return $0
View ObjC.h
#import <Foundation/Foundation.h>
@interface ObjC: NSObject
+ (BOOL)catchException:(void(^)(void))tryBlock error:(__autoreleasing NSError **)error;
@end
@j4n0
j4n0 / ControllerLifecycle.swift
Created Apr 16, 2018
Unit testing a view controller
View ControllerLifecycle.swift
// From https://albertodebortoli.com/2018/03/12/easy-view-controller-unit-testing/
import XCTest
import UIKit
class ControllerLifecycle<T: UIViewController>
{
private lazy var this = type(of: self).self
private var rootWindow: UIWindow?
var rootController: T? {
@j4n0
j4n0 / Downloader.swift
Created Apr 8, 2018
Weakly retaining an object in a closure without having to write [weak]
View Downloader.swift
// I saw this trick in “Do you often forget [weak self], here is a solution”
// https://medium.com/anysuggestion/preventing-memory-leaks-with-swift-compile-time-safety-49b845df4dc6
import UIKit
class ViewController: UIViewController {
// move this variable inside viewDidLoad to see it being released
let downloader = Downloader()
@j4n0
j4n0 / BouncyButton.swift
Created Mar 16, 2018
A delegate implemented with generics and a static method
View BouncyButton.swift
// From “Better Strategies Through Types”
// http://www.figure.ink/blog/2018/3/11/better-strategies-through-types
import UIKit
protocol BouncyDelegate {
static func animateBounce(for view: UIView)
}
enum ShakeStrategy: BouncyDelegate
@j4n0
j4n0 / PackageApplication
Created May 31, 2017 — forked from anonymous/PackageApplication
PackageApplication script from Xcode 8.2.1
View PackageApplication
#!/usr/bin/perl
#
# PackageApplication
#
# Copyright (c) 2009-2012 Apple Inc. All rights reserved.
#
# Package an iPhone Application into an .ipa wrapper
#
use Pod::Usage;
@j4n0
j4n0 / Person.m
Created May 16, 2017
Right and wrong ways to call a block property
View Person.m
#import <Foundation/Foundation.h>
#undef X
typedef void (^salute_t)();
@interface Person : NSObject
@property (nonatomic,copy) NSString *name;
@property (nonatomic,copy) salute_t salute;
You can’t perform that action at this time.