Month: March 2020

  • Install PHP 5.6 on macOS Catalina

    Install PHP 5.6 on macOS Catalina

    These steps worked on my Mac, Catalina version 10.15.3 (19D76).

    Step 1: Tap deprecated brew formula

    brew tap exolnet/homebrew-deprecated

    Step 2: Install PHP 5.6

    brew install [email protected]

    You can also have PHP 7.2 just run 

    brew install [email protected]

    Step 3: Install PHP switcher script to switch between 5.6 and 7.2

    $ curl -L https://gist.githubusercontent.com/rhukster/f4c04f1bf59e0b74e335ee5d186a98e2/raw > /usr/local/bin/sphp 
    $ chmod +x /usr/local/bin/sphp

    If you run sphp 7.2 it should work but running sphp 5.6 will not work and will show error like this from apache.

    Library not loaded: /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylibn  Referenced from: /usr/local/opt/[email protected]/lib/httpd/modules/libphp5.son  Reason: image not found

    Unless we switch openssl version, it wont work. So we have to install old openssl

    Step 4: Install old openssl

    brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

    Step 5: Switch to openssl 1.0

    brew switch openssl 1.0.2t

    Now you switch to PHP 5.6 by 

    sphp 5.6

    Everything works.

    You can run these commands to check which version of openssl is being used in your mac.

    brew info openssl and brew info openssh

     

     

    Spread the love
  • 3rd party software I use on my Mac

    I use a lot of software daily for different tasks I do. The more tools you have on your Mac the more the distractions are. I have been trying to reduce the number of software I use since 2o19, it really helps me a lot.

    Like I had a number of documents on Google Keep, OneNote, and Notes, also there were duplicate items. I am able to merge all of them in the Mac Notes app which also sync nicely with my iPhone. So no more 3 different apps for documents on my Mac and iPhone. Notes app is not perfect but it works for me.

    Also, I have canceled my Office 365 subscriptions, no longer using Word and Excel, I completely moved to Apple Pages and Numbers. Apple Pages and Number are not close to Microsoft Word and Excel but again it works for me.

    I also purchased iCloud 200GB plan and moved all my OneDrive files there, Office 365 really good it offers 1TB but I wanted to get rid of all 3rd party apps from my Mac for better productivity and removing redundant software.

    Here is the list of 3rd party software I use on my Mac

    Spread the love
  • SwiftUI Know When Entering Landscape Mode

    SwiftUI Know When Entering Landscape Mode

    Create a ObservableObject Object like this

    final class UserAndDeviceSettings: ObservableObject {
        @Published var userInterfaceOrientationChanges:Bool = false
        @Published var userInterfaceOrientationLandscape:Bool = false
    }

    Now go to your SceneDelegate and add a var on top and pass your settings var in UIHostingController in willConnectTo method.

    var settings = UserAndDeviceSettings()
    
    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
            // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
            // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
            // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
    
            // Get the managed object context from the shared persistent container
            let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    
            // Create the SwiftUI view and set the context as the value for the managedObjectContext environment keyPath
            let contentView = ContentView().environment(\.managedObjectContext, context)
    
            // Use a UIHostingController as window root view controller.
            if let windowScene = scene as? UIWindowScene {
                let window = UIWindow(windowScene: windowScene)
                
                // read the initial device orientation here
                self.settings.userInterfaceOrientationLandscape = (windowScene.interfaceOrientation.isLandscape == true)
                
                window.rootViewController = UIHostingController(rootView: contentView.environmentObject(self.settings))
                self.window = window
                window.makeKeyAndVisible()
            }
        }

    and in didUpdate delegate method, add this code.

    
    func windowScene(_ windowScene: UIWindowScene, didUpdate previousCoordinateSpace: UICoordinateSpace, interfaceOrientation previousInterfaceOrientation: UIInterfaceOrientation, traitCollection previousTraitCollection: UITraitCollection) {
            print(">> previous tratis  \(previousTraitCollection)")
            print(">> previous coordinateSpace \(previousCoordinateSpace)")
            print(">> previous orientation \(previousInterfaceOrientation)")
            
            self.settings.userInterfaceOrientationChanges = true
            
            if previousInterfaceOrientation == .portrait || previousInterfaceOrientation == .portraitUpsideDown {
                self.settings.userInterfaceOrientationLandscape = true
            } else {
                self.settings.userInterfaceOrientationLandscape = false
            }
        }

    Now you can use this @EnvironmentObject in any View

    @EnvironmentObject var settings:UserAndDeviceSettings
    
    if self.settings.userInterfaceOrientationLandscape {
        
    }
    Spread the love