Skip to content

Instantly share code, notes, and snippets.

View fpillet's full-sized avatar

Florent Pillet fpillet

View GitHub Profile
@fpillet
fpillet / RequestQueue.js
Created January 24, 2012 18:42
Cancellable processing of iViewer CF.request calls
/* Use RequestQueue.request() instead of CF.request()
* At any point, to cancel all pending callbacks, call RequestQueue.clear()
*
*/
var RequestQueue = (function(){
var self = {
q: [],
next: 0
};
@fpillet
fpillet / gist:1779575
Created February 9, 2012 12:12
Detect whether the Android Soft Keyboard is up
containerView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener()
{
public void onGlobalLayout()
{
final Activity app = getActivity();
if (app == null)
return;
Rect r = new Rect();
containerView.getWindowVisibleDisplayFrame(r);
boolean visible = (Math.abs(r.height() - containerView.getHeight()) > 128);
@fpillet
fpillet / MainViewController.m
Created October 29, 2015 19:19
Example of encapsulating a gesture recognizer's behavior within a signal's callbacks
- (void)setupDraggableHeaderGestureRecognizer {
// setup a gesture recognizer so we can drag the "I need some daytime hours" header up and down
@weakify(self);
UIPanGestureRecognizer *recognizer = [[UIPanGestureRecognizer alloc] init];
_draggableHeaderView.userInteractionEnabled = YES;
[_draggableHeaderView addGestureRecognizer:recognizer];
RACDisposable *disposable = [[[recognizer
rac_gestureSignal]
scanWithStart:RACTuplePack(@(_mapViewHeightConstraint.constant), @0)
@fpillet
fpillet / PageFlipMonitor.js
Created May 7, 2013 13:46
Experimental Page Flip Monitor module for CommandFusion iViewer
/* PageFlipMonitor v1.0
* Copyright 2013 CommandFusion, public domain
*
* Utility object that monitors entering and exiting pages,
* and can call any number of callbacks specifically registered to observe
* when entering or exiting a page
*
* You callback functions should be of the form:
*
function callback(fromPage, toPage) {
@fpillet
fpillet / Results+Rx.swift
Created February 13, 2016 17:23
turn Realm auto-updating Results into an RxSwift Observable sequence
//
// Results+Rx.swift
//
// Make Realm auto-updating Results observable. Works with Realm 0.98 and later, RxSwift 2.1.0 and later.
//
// Created by Florent Pillet on 12/02/16.
// Copyright (c) 2016 Florent Pillet. All rights reserved.
//
import Foundation
@fpillet
fpillet / MeasurePerf.swift
Last active June 26, 2019 12:51
A tool to measure code performance in Swift
//
// Created by Florent Pillet on 14/11/16.
// Copyright (c) 2016 Florent Pillet. All rights reserved.
//
import Foundation
/*
* A utility struct that helps mesure the performance of sections of code. Only uses Foundation
* (we could also use QuartzCore's CACurrentMediaTime() for similar precision)
@fpillet
fpillet / scale.js
Created May 26, 2011 12:07
Javascript value scaling between two ranges
/* Scale a value from one range to another
* Example of use:
*
* // Convert 33 from a 0-100 range to a 0-65535 range
* var n = scaleValue(33, [0,100], [0,65535]);
*
* // Ranges don't have to be positive
* var n = scaleValue(0, [-50,+50], [0,65535]);
*
* Ranges are defined as arrays of two values, inclusive