Skip to content

Instantly share code, notes, and snippets.

View NghiaTranUIT's full-sized avatar
💭
Workaholic 👨‍💻

Noah Tran NghiaTranUIT

💭
Workaholic 👨‍💻
View GitHub Profile
@NghiaTranUIT
NghiaTranUIT / gist:6085141eb8f319adad6603969bfc5b33
Created May 2, 2016 04:20 — forked from masonforest/gist:4048732
Installing a Gem on Heroku from a Private GitHub Repo

Installing a Gem on Heroku from a Private GitHub Repo

Sometimes you want to use a gem on Heroku that is in a private repository on GitHub.

Using git over http you can authenticate to GitHub using basic authentication. However, we don't want to embed usernames and passwords in Gemfiles. Instead, we can use authentication tokens.

  1. Get an OAuth Token from GitHub

First you will need to get an OAuth Token from GitHub using your own username and "note"

Difference between Debounce and Throttle

Debounce

Debounce a function when you want it to execute only once after a defined interval of time. If the event occurs multiple times within the interval, the interval is reset each time.
Example A user is typing into an input field and you want to execute a function, such as a call to the server, only when the user stops typing for a certain interval, such as 500ms.

Throttle

@NghiaTranUIT
NghiaTranUIT / introrx.md
Created February 19, 2016 13:54 — forked from staltz/introrx.md
The introduction to Reactive Programming you've been missing
@NghiaTranUIT
NghiaTranUIT / PSPDFUIKitMainThreadGuard.m
Created November 25, 2015 14:35 — forked from steipete/PSPDFUIKitMainThreadGuard.m
This is a guard that tracks down UIKit access on threads other than main. This snippet is taken from the commercial iOS PDF framework http://pspdfkit.com, but relicensed under MIT. Works because a lot of calls internally call setNeedsDisplay or setNeedsLayout. Won't catch everything, but it's very lightweight and usually does the job.You might n…
// Taken from the commercial iOS PDF framework http://pspdfkit.com.
// Copyright (c) 2014 Peter Steinberger, PSPDFKit GmbH. All rights reserved.
// Licensed under MIT (http://opensource.org/licenses/MIT)
//
// You should only use this in debug builds. It doesn't use private API, but I wouldn't ship it.
#import <objc/runtime.h>
#import <objc/message.h>
// Compile-time selector checks.
@NghiaTranUIT
NghiaTranUIT / BaseModel.h
Created November 16, 2015 12:53 — forked from onmyway133/BaseModel.h
BaseModel Model -> SQLite statement using property inspection
#import <Mantle.h>
@interface BaseModel : MTLModel <MTLJSONSerializing>
@property (nonatomic) int64_t id;
@property (nonatomic) NSTimeInterval createdUtc;
@property (nonatomic) NSTimeInterval modifiedUtc;
- (NSString *)createTableStatement;
- (NSString *)className;
// Add catefory
@interface UIButton (Sound)
@end
#import "UIButton+Sound.h"
#import <objc/runtime.h>
@implementation UIButton (Sound)
@NghiaTranUIT
NghiaTranUIT / gist:dc9dab12e42b02dcdbb7
Created April 9, 2015 04:22
Center Image and Text in NSAttributedString
// Create text attachment
NSTextAttachment *textAttachment = [[NSTextAttachment alloc] init];
textAttachment.image = [UIImage imageNamed:nameicon];
textAttachment.bounds = CGRectMake(0, 0, 20, 16);
// Attribute
NSAttributedString *attrStringWithImage = [NSAttributedString attributedStringWithAttachment:textAttachment];
NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithAttributedString:attrStringWithImage];
// Change base line
@interface UIImage (Orientation)
- (UIImage*)imageByNormalizingOrientation;
@end
@implementation UIImage (Orientation)
- (UIImage*)imageByNormalizingOrientation {
secret = "xxx"
data = "http://someurl?someparams"
hmac = OpenSSL::HMAC.digest(OpenSSL::Digest::Digest.new('sha1'), secret.encode("ASCII"), data.encode("ASCII"))
signature = Base64.encode64(hmac).chomp
-(void) addNewItemFromArray:(NSArray *) newArrItem
{
// Add
[_arrPhotos addObjectsFromArray:newArrItem];
NSMutableArray *arrNewIndexpath = [NSMutableArray array];
for (NSInteger i = _arrPhotos.count ; i < _arrPhotos.count + newArrItem.count ; i++)
{
NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:i inSection:0];
[arrNewIndexpath addObject:newIndexPath];