These learning resources primarily focus on programming using Good Design Principles and Design Patterns
- There is an emphasis on learning using PHP, although most patterns are universal to every object orientated language.
| class FirebaseCoordinator { | |
| static let shared = FirebaseCoordinator() | |
| static let initialize: Void = { | |
| /// We modify Google Firebase (and eventually Analytics) to load the mac-specific plist at runtime. | |
| /// Google enforces that we have a file named "GoogleService-Info.plist" in the app resources. | |
| /// This is unfortunate since we need two different files based on iOS and Mac version | |
| /// One solution is a custom build step that copies in the correct file: | |
| /// https://stackoverflow.com/questions/37615405/use-different-googleservice-info-plist-for-different-build-schemes | |
| /// However, this is basically impossible since Catalyst doesn't set any custom build variables, so detection is extremely difficult. | |
| /// We swizzle to modify the loading times. |
| /* -------------------------------------------------------------------------- */ | |
| // All Bootstrap 4 Sass Mixins [Cheat sheet] | |
| // Updated to Bootstrap v4.5.x | |
| // @author https://anschaef.de | |
| // @see https://github.com/twbs/bootstrap/tree/master/scss/mixins | |
| /* -------------------------------------------------------------------------- */ | |
| /* | |
| // ########################################################################## */ | |
| // New cheat sheet for Bootstrap 5: |
| func fixOrientation() -> UIImage { | |
| // No-op if the orientation is already correct | |
| if ( self.imageOrientation == UIImageOrientation.Up ) { | |
| return self; | |
| } | |
| // We need to calculate the proper transformation to make the image upright. | |
| // We do it in 2 steps: Rotate if Left/Right/Down, and then flip if Mirrored. | |
| var transform: CGAffineTransform = CGAffineTransformIdentity |
A common task when developing iOS apps is to register custom cell subclasses for both UITableView and UICollectionView. Well, that is if you don’t use Storyboards, of course.
Both UITableView and UICollectionView offer a similar API to register custom cell classes:
public func registerClass(cellClass: AnyClass?, forCellWithReuseIdentifier identifier: String)
public func registerNib(nib: UINib?, forCellWithReuseIdentifier identifier: String)| #!/bin/bash | |
| # Improved as per feedback from @pascal - https://gist.github.com/julianxhokaxhiu/c0a8e813eabf9d6d9873#gistcomment-3086462 | |
| find . -type f -iname "*.png" -exec optipng -nb -nc {} \; | |
| find . -type f -iname "*.png" -exec advpng -z4 {} \; | |
| find . -type f -iname "*.png" -exec pngcrush -rem gAMA -rem alla -rem cHRM -rem iCCP -rem sRGB -rem time -ow {} \; | |
| find . -type f \( -iname "*.jpg" -o -iname "*.jpeg" \) -exec jpegoptim -f --strip-all {} \; |
| for (NSString *familyName in [UIFont familyNames]){ | |
| NSLog(@"Family Name: %@", familyName); | |
| for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) { | |
| NSLog(@"Font Name: %@", fontName); | |
| } | |
| NSLog(@"\n\n"); | |
| } |
| <?php | |
| // Server file | |
| class PushNotifications { | |
| // (Android)API access key from Google API's Console. | |
| private static $API_ACCESS_KEY = 'AIzaSyDG3fYAj1uW7VB-wejaMJyJXiO5JagAsYI'; | |
| // (iOS) Private key's passphrase. | |
| private static $passphrase = 'joashp'; | |
| // (Windows Phone 8) The name of our push channel. | |
| private static $channelName = "joashp"; |