Skip to content

Instantly share code, notes, and snippets.

View pietrorea's full-sized avatar
✌️

Pietro Rea pietrorea

✌️
View GitHub Profile
@pietrorea
pietrorea / gist:4636954
Created January 25, 2013 19:08
How to move a UIView above the keyboard when the keyboard comes on screen. The method keyboardWillShow handles the notification UIKeyboardWillShowNotification.
- (void)keyboardWillShow:(NSNotification *)notification {
CGRect keyboardFrame = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];
CGRect convertedFrame = [self.view convertRect:keyboardFrame fromView:self.view.window];
CGFloat animationDuration = [[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
UIViewAnimationCurve animationCurve = [[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] integerValue];
[UIView animateWithDuration:animationDuration delay:0 options:animationCurve animations:^{
self.viewToMove.bottom = self.view.height - convertedFrame.size.height - 15;
func poll() {
let backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
let source = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, backgroundQueue)
let interval: UInt64 = UInt64(10) * NSEC_PER_SEC
let leeway: UInt64 = UInt64(0.1) * NSEC_PER_SEC
dispatch_source_set_timer(source, DISPATCH_TIME_NOW, interval, leeway)
dispatch_source_set_event_handler(source) { () -> Void in
self.pollDidFinish(source: source)
@pietrorea
pietrorea / UIAlertController.swift
Last active November 27, 2016 19:04
UIAlertController example
var alert = UIAlertController(title: "Title", message: "Alert view message", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Save", style: .Default, handler: { (action: UIAlertAction!) in
println("Saved")
}))
alert.addAction(UIAlertAction(title: "Cancel", style: .Default, handler: { (action: UIAlertAction!) in
println("Cancel")
}))
presentViewController(alert, animated: true, completion: nil)
@pietrorea
pietrorea / gist:c9431bcf3e9ce33140db
Last active April 19, 2017 01:44
Autolayout: the equivalent of [subview setFrame:self.view.bounds];
UIView *autoLayoutView = [[UIView alloc] init];
autoLayoutView.backgroundColor = [UIColor redColor];
autoLayoutView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:autoLayoutView];
NSDictionary *views = NSDictionaryOfVariableBindings(autoLayoutView);
NSArray *hConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"|[autoLayoutView]|"
options:nil
metrics:nil
Verifying my Blockstack ID is secured with the address 13XP5d1aPsUQZHt55f3WyYMCHvaWQjgDKu https://explorer.blockstack.org/address/13XP5d1aPsUQZHt55f3WyYMCHvaWQjgDKu
@pietrorea
pietrorea / UIImage+Extension.m
Created April 16, 2020 03:13
UIImage from UIColor
#import "UIImage+Extension.h"
@implementation UIImage (Extension)
- (UIImage *)imageWithColor:(UIColor *)color
{
UIGraphicsBeginImageContextWithOptions(self.size, NO, self.scale);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(context, 0, self.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
@pietrorea
pietrorea / gist:8fc2c83a26322f3909ab630aee2f5414
Created June 25, 2021 16:08
Set initial view controller in code using SceneDelegate
// First, delete the two storyboard entries in the Info.plist (one newer one for SceneDelegate and a newer one for AppDelegate)
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = scene as? UIWindowScene else {
return
}
let blueViewController = UIViewController()
blueViewController.view.backgroundColor = .blue
@pietrorea
pietrorea / SampleService.swift
Created July 2, 2021 15:13
Alamofire 5.43 `responseDecodable` example
static func load(_ entityId: Int, completion: @escaping ( (SampleServiceResponse?) -> Void)) {
let urlString = "https://api.sweetpeamobile.com/v1/sampleService?locationId=\(locationId)"
AF.request(urlString).responseDecodable(of: SampleServiceResponse.self) { response in
switch response.result {
case .success(let decodedResponse):
completion(decodedResponse)
case .failure(let error):
print("Networking error: \(error.localizedDescription)")
completion(nil)
}
@pietrorea
pietrorea / nginx-location-block.conf
Created January 27, 2022 20:23
nginx reverse proxy to Wordpress install on another host
location /blog/ {
proxy_pass http://YOUR_IP_ADDRESS/; # this last forward slash is important
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
# Proxy headers
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
@pietrorea
pietrorea / wp-config-additions.php
Last active February 7, 2022 14:46
Wordpress wp-config.php - running behind a reverse proxy that terminates SSL
define( 'WP_HOME', 'https://yoursite.com/blog');
define( 'WP_SITEURL', 'https://yoursite.com/blog');
/**
* This is needed for a reverse proxy setup that terminates SSL and forwards /blog to another host.
* Without it, the Wordpress host doesn't know that it needs to make requests to itself using https.
*/
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}