{"version":1,"pages":[{"id":"tpFjKWkSxJoXfv1IKJs1","title":"Notes: Front Page","pathname":"/_","siteSpaceId":"sitesp_H5Oxi","description":"All notes listed here"},{"id":"lsJaoV7gYBTyUADAPDpi","title":"PowerSelll","pathname":"/_/windows-tips","siteSpaceId":"sitesp_YCXPs","description":""},{"id":"80jY43gQnSFq67g1v3mI","title":"Rename all files, replacing \" \" with \"_\"","pathname":"/_/windows-tips/powerselll/rename-all-files-replacing-with-_","siteSpaceId":"sitesp_YCXPs","description":"Rename all files, remove space with underscore","breadcrumbs":[{"label":"PowerSelll"}]},{"id":"cqQ045DNS26XZcRkWzeN","title":"Rename all files, removing first 3 characters","pathname":"/_/windows-tips/powerselll/rename-all-files-removing-first-3-characters","siteSpaceId":"sitesp_YCXPs","description":"Rename all files, remove first 3 chars","breadcrumbs":[{"label":"PowerSelll"}]},{"id":"VtehojxYrEBX4zmyKXG2","title":"Offline First Data Sync","pathname":"/_/offline-first-data-sync","siteSpaceId":"sitesp_ySOPE","description":"How to successfully implement data sync between 2 devices"},{"id":"lU3t6dJ0ytESdmNe4B9n","title":"Offline Data","pathname":"/_/offline-first-data-sync/offline-first-data-sync/offline-data","siteSpaceId":"sitesp_ySOPE","description":"Data you collect offline, has to be shared with other devices","breadcrumbs":[{"label":"Offline First Data Sync"}]},{"id":"zse2v3b5PUgCWLEMfK0d","title":"Online Data","pathname":"/_/offline-first-data-sync/offline-first-data-sync/online-data","siteSpaceId":"sitesp_ySOPE","description":"Your Online datastore, should be quarriable.","breadcrumbs":[{"label":"Offline First Data Sync"}]},{"id":"T1O29v9incfBCDf2KCLp","title":"File Store / S3","pathname":"/_/offline-first-data-sync/offline-first-data-sync/file-store-s3","siteSpaceId":"sitesp_ySOPE","description":"Online Data bucket to upload database files","breadcrumbs":[{"label":"Offline First Data Sync"}]},{"id":"bjiMp21DMg0ZkFpZncKk","title":"Sync Logic","pathname":"/_/offline-first-data-sync/offline-first-data-sync/sync-logic","siteSpaceId":"sitesp_ySOPE","description":"Now the magic that will sync everything.","breadcrumbs":[{"label":"Offline First Data Sync"}]},{"id":"bzOX4Z9TmK1oV3mgYT4j","title":"Big Brother","pathname":"/_/offline-first-data-sync/offline-first-data-sync/sync-logic/big-brother","siteSpaceId":"sitesp_ySOPE","description":"We always know who the Boss is.","breadcrumbs":[{"label":"Offline First Data Sync"},{"label":"Sync Logic"}]},{"id":"VEHmql3odxyDkOcwhZzi","title":"JavaScript Tips","pathname":"/_/javascript-tips","siteSpaceId":"sitesp_5JtOC","description":"Tips for JavaScript and browser"},{"id":"Lq94wUgSrTWU1IpP17XI","title":"Save blob as File","pathname":"/_/javascript-tips/javascript-tips/save-blob-as-file","siteSpaceId":"sitesp_5JtOC","description":"How to save a blob in you disk as a file","breadcrumbs":[{"label":"JavaScript Tips"}]},{"id":"SQd51xdxA75DIuPEYCuM","title":"AOSP","pathname":"/_/android-tips","siteSpaceId":"sitesp_dupqw","emoji":"1f916","description":"Android Open Source Project"},{"id":"Kp2oJbKtin2zNlsWiorF","title":"Clone AOSP repository","pathname":"/_/android-tips/aosp/clone-aosp-repository","siteSpaceId":"sitesp_dupqw","breadcrumbs":[{"label":"AOSP","emoji":"1f916"}]},{"id":"rNEeEy1L78NnogQukFOd","title":"Directory Structure","pathname":"/_/android-tips/aosp/directory-structure","siteSpaceId":"sitesp_dupqw","description":"","breadcrumbs":[{"label":"AOSP","emoji":"1f916"}]},{"id":"KolSqplBtn9Pcg35Vcpk","title":"Setup IDE","pathname":"/_/android-tips/aosp/setup-ide","siteSpaceId":"sitesp_dupqw","description":"Setup your choice of ide for entire AOSP development","breadcrumbs":[{"label":"AOSP","emoji":"1f916"}]},{"id":"S3SthUsTFO8gxqNbYCLr","title":"Setup VSCode","pathname":"/_/android-tips/aosp/setup-ide/setup-vscode","siteSpaceId":"sitesp_dupqw","breadcrumbs":[{"label":"AOSP","emoji":"1f916"},{"label":"Setup IDE"}]},{"id":"T1NRLyl1O2Gb59kD6dbd","title":"Build","pathname":"/_/android-tips/aosp/build","siteSpaceId":"sitesp_dupqw","description":"AOSP uses soong build which uses Android.bp for configuration","breadcrumbs":[{"label":"AOSP","emoji":"1f916"}]},{"id":"Kr7KGSt1vkyaIM8Oeak5","title":"BluePrint for Application Project","pathname":"/_/android-tips/aosp/build/blueprint-for-application-project","siteSpaceId":"sitesp_dupqw","description":"How to configure Android.bp for an application","breadcrumbs":[{"label":"AOSP","emoji":"1f916"},{"label":"Build"}]},{"id":"mcfO2fRqT1iuza6rpXxr","title":"BluePrint for Android Library Project","pathname":"/_/android-tips/aosp/build/blueprint-for-android-library-project","siteSpaceId":"sitesp_dupqw","description":"How to configure Android.bp for an android library","breadcrumbs":[{"label":"AOSP","emoji":"1f916"},{"label":"Build"}]},{"id":"ZKWjHTA7vYUmY2ZWnH1S","title":"Manifest","pathname":"/_/android-tips/aosp/manifest","siteSpaceId":"sitesp_dupqw","description":"Capabilities of AOSP development in App Manifest file.","breadcrumbs":[{"label":"AOSP","emoji":"1f916"}]},{"id":"zeiXq7svIuSd29DezjRQ","title":"sharedUserId","pathname":"/_/android-tips/aosp/manifest/shareduserid","siteSpaceId":"sitesp_dupqw","description":"android:sharedUserId=\"com.example.shared\"","breadcrumbs":[{"label":"AOSP","emoji":"1f916"},{"label":"Manifest"}]},{"id":"Nkdfbo9HzXyHQiLyExor","title":"persistant","pathname":"/_/android-tips/aosp/manifest/persistant","siteSpaceId":"sitesp_dupqw","description":"android:persistent, makes app running at all times","breadcrumbs":[{"label":"AOSP","emoji":"1f916"},{"label":"Manifest"}]},{"id":"wwgkRdOlU48eOHFs4C6l","title":"Gradle","pathname":"/_/android-tips/gradle","siteSpaceId":"sitesp_dupqw","description":"Tips to create efficient gradle script"},{"id":"NiXgWXdObanQL8ngOWqG","title":"Create Custom Build Config Variables","pathname":"/_/android-tips/gradle/create-custom-build-config-variables","siteSpaceId":"sitesp_dupqw","description":"Add Custom fields to","breadcrumbs":[{"label":"Gradle"}]},{"id":"FAzYY42MXUhd8XBhfrdy","title":"Create Custom manifest Variables","pathname":"/_/android-tips/gradle/create-custom-manifest-variables","siteSpaceId":"sitesp_dupqw","description":"","breadcrumbs":[{"label":"Gradle"}]},{"id":"3lLCklW3BJapEceHKh2p","title":"Make app debugable","pathname":"/_/android-tips/gradle/make-app-debugable","siteSpaceId":"sitesp_dupqw","breadcrumbs":[{"label":"Gradle"}]},{"id":"zCiiwm5MGXx6Qrm2Ay6j","title":"Android Process","pathname":"/_/android-tips/android-process","siteSpaceId":"sitesp_dupqw","description":""},{"id":"RyO7Yq1mfPJ3D43snq0W","title":"Find a process by name","pathname":"/_/android-tips/android-process/find-a-process-by-name","siteSpaceId":"sitesp_dupqw","description":"find a process using ps and grep","breadcrumbs":[{"label":"Android Process"}]},{"id":"PGSSuv6WUeTnnMF8xJuq","title":"Kill a process by Id","pathname":"/_/android-tips/android-process/kill-a-process-by-id","siteSpaceId":"sitesp_dupqw","description":"Kill a process in Android or Linux","breadcrumbs":[{"label":"Android Process"}]},{"id":"sqeIATJUCbyQRSNtHK2l","title":"Catch any exception in Android","pathname":"/_/android-tips/catch-any-exception-in-android","siteSpaceId":"sitesp_dupqw","description":"Implement custom exception logger (lust like CrashAnalytics)"},{"id":"ZzdiJl0SLbIpOYOcxRHq","title":"Theming","pathname":"/_/android-tips/theming/theming","siteSpaceId":"sitesp_dupqw","description":"Ways to theme you android","breadcrumbs":[{"label":"Theming","emoji":"1f3a8"}]},{"id":"qIRJrF3CFlm6Fk5taw1d","title":"RRO","pathname":"/_/android-tips/theming/theming/rro","siteSpaceId":"sitesp_dupqw","description":"Runtime Resource Overlay","breadcrumbs":[{"label":"Theming","emoji":"1f3a8"},{"label":"Theming"}]},{"id":"b0FXZd4wdPIxpSsbHOIU","title":"RRO Internals","pathname":"/_/android-tips/theming/theming/rro/rro-internals","siteSpaceId":"sitesp_dupqw","description":"How RRO works internally","breadcrumbs":[{"label":"Theming","emoji":"1f3a8"},{"label":"Theming"},{"label":"RRO"}]},{"id":"iUCAWTEgLojTQYnx3IJm","title":"RRO classes in AOSP","pathname":"/_/android-tips/theming/theming/rro/rro-classes-in-aosp","siteSpaceId":"sitesp_dupqw","breadcrumbs":[{"label":"Theming","emoji":"1f3a8"},{"label":"Theming"},{"label":"RRO"}]},{"id":"pJGYPQzkEM9jfw2Gvg7k","title":"RRO Example","pathname":"/_/android-tips/theming/theming/rro/rro-example","siteSpaceId":"sitesp_dupqw","breadcrumbs":[{"label":"Theming","emoji":"1f3a8"},{"label":"Theming"},{"label":"RRO"}]},{"id":"2BpHE2EY5sCadV3ojEpU","title":"RRO Permission","pathname":"/_/android-tips/theming/theming/rro/rro-permission","siteSpaceId":"sitesp_dupqw","breadcrumbs":[{"label":"Theming","emoji":"1f3a8"},{"label":"Theming"},{"label":"RRO"}]},{"id":"Vp5EfJq1Zx2547GuQ4Fp","title":"Fabricated RRO (FRRO)","pathname":"/_/android-tips/theming/theming/fabricated-rro-frro","siteSpaceId":"sitesp_dupqw","description":"Fabricated RRO is build on top traditional RRO system","breadcrumbs":[{"label":"Theming","emoji":"1f3a8"},{"label":"Theming"}]},{"id":"QeALs3UFqVMMSQ7XMMGi","title":"FRRO Example","pathname":"/_/android-tips/theming/theming/fabricated-rro-frro/frro-example","siteSpaceId":"sitesp_dupqw","breadcrumbs":[{"label":"Theming","emoji":"1f3a8"},{"label":"Theming"},{"label":"Fabricated RRO (FRRO)"}]},{"id":"d91J7gsfO2LpXX818rqm","title":"Permission","pathname":"/_/android-tips/theming/theming/fabricated-rro-frro/permission","siteSpaceId":"sitesp_dupqw","description":"Here are the permissions required for using Fabricated RRO","breadcrumbs":[{"label":"Theming","emoji":"1f3a8"},{"label":"Theming"},{"label":"Fabricated RRO (FRRO)"}]},{"id":"RcEWXZtFNAYnEtIniSdP","title":"Context Hijack","pathname":"/_/android-tips/theming/theming/context-hijack","siteSpaceId":"sitesp_dupqw","description":"Use resources of other application","breadcrumbs":[{"label":"Theming","emoji":"1f3a8"},{"label":"Theming"}]},{"id":"s42Csg9CmiLtMRranC6A","title":"Basics","pathname":"/_/android-tips/lifecycle/basics","siteSpaceId":"sitesp_dupqw","description":"Basics of android development","breadcrumbs":[{"label":"Lifecycle"}]},{"id":"8f6sfG61IqJuKoyMXpYd","title":"Lifecycle","pathname":"/_/android-tips/lifecycle/basics/lifecycle","siteSpaceId":"sitesp_dupqw","description":"Lifecycle of diffetent components in Android","breadcrumbs":[{"label":"Lifecycle"},{"label":"Basics"}]},{"id":"S8HCsr9w02jvrlgSBnVi","title":"Activity","pathname":"/_/android-tips/lifecycle/basics/lifecycle/activity","siteSpaceId":"sitesp_dupqw","description":"Activity lifecycle with saved instance state","breadcrumbs":[{"label":"Lifecycle"},{"label":"Basics"},{"label":"Lifecycle"}]},{"id":"yNbk7TEO6FCXpJMfW7jH","title":"Fragment","pathname":"/_/android-tips/lifecycle/basics/lifecycle/fragment","siteSpaceId":"sitesp_dupqw","description":"Fragment Lifecycle","breadcrumbs":[{"label":"Lifecycle"},{"label":"Basics"},{"label":"Lifecycle"}]},{"id":"vp7OdGFwHCh3X8kWjxdq","title":"Fragment add","pathname":"/_/android-tips/lifecycle/basics/lifecycle/fragment/fragment-add","siteSpaceId":"sitesp_dupqw","description":"Fragment Manager add() lifecycle","breadcrumbs":[{"label":"Lifecycle"},{"label":"Basics"},{"label":"Lifecycle"},{"label":"Fragment"}]},{"id":"QjzATIKLPhvdiFcVvI4o","title":"Lifecycle Aware Custom Class","pathname":"/_/android-tips/lifecycle/lifecycle-aware-custom-class","siteSpaceId":"sitesp_dupqw","description":"A custom business class that can be lifecycle aware, just like ViewModel","breadcrumbs":[{"label":"Lifecycle"}]},{"id":"tUklorKCMH3x5ds8OX7v","title":"Interview Questions","pathname":"/_/android-tips/interview/interview-questions","siteSpaceId":"sitesp_dupqw","breadcrumbs":[{"label":"Interview","emoji":"2139"}]},{"id":"5VmKhuYHWIHwRjC90Qyo","title":"Architecture Pattern","pathname":"/_/android-tips/interview/architecture-pattern","siteSpaceId":"sitesp_dupqw","breadcrumbs":[{"label":"Interview","emoji":"2139"}]},{"id":"LLfigzNQGTcnsPUv6f3U","title":"MVC Architecture pattern","pathname":"/_/android-tips/interview/architecture-pattern/mvc-architecture-pattern","siteSpaceId":"sitesp_dupqw","description":"","breadcrumbs":[{"label":"Interview","emoji":"2139"},{"label":"Architecture Pattern"}]},{"id":"TJdJFlLc34TZoWM2IVP4","title":"MVP Architecture Pattern","pathname":"/_/android-tips/interview/architecture-pattern/mvp-architecture-pattern","siteSpaceId":"sitesp_dupqw","breadcrumbs":[{"label":"Interview","emoji":"2139"},{"label":"Architecture Pattern"}]},{"id":"aNVGPV8QslZWIbt2LW01","title":"MVVM Architecture Pattern","pathname":"/_/android-tips/interview/architecture-pattern/mvvm-architecture-pattern","siteSpaceId":"sitesp_dupqw","breadcrumbs":[{"label":"Interview","emoji":"2139"},{"label":"Architecture Pattern"}]},{"id":"NBvhP8ckJV8SNiLQBuXc","title":"Design Patterns","pathname":"/_/android-tips/interview/design-patterns","siteSpaceId":"sitesp_dupqw","breadcrumbs":[{"label":"Interview","emoji":"2139"}]},{"id":"cU14PP3cgdo12kU9HrCP","title":"Interview Prep 1","pathname":"/_/android-tips/interview/interview-prep-1","siteSpaceId":"sitesp_dupqw","breadcrumbs":[{"label":"Interview","emoji":"2139"}]},{"id":"iM54FbESCHswppj1S0wZ","title":"Interview Prep 2","pathname":"/_/android-tips/interview/interview-prep-2","siteSpaceId":"sitesp_dupqw","breadcrumbs":[{"label":"Interview","emoji":"2139"}]},{"id":"AwITyeEEFxMGkVOpz0IO","title":"Interview AOSP 1","pathname":"/_/android-tips/interview/interview-aosp-1","siteSpaceId":"sitesp_dupqw","breadcrumbs":[{"label":"Interview","emoji":"2139"}]},{"id":"4MRZ6ItmZQEjXtKZ4sNv","title":"Interview AOSP 2","pathname":"/_/android-tips/interview/interview-aosp-2","siteSpaceId":"sitesp_dupqw","breadcrumbs":[{"label":"Interview","emoji":"2139"}]},{"id":"anbHOWcPPLvaIdsQjrIc","title":"Simple AIDL Communication","pathname":"/_/android-tips/aidl/simple-aidl-communication","siteSpaceId":"sitesp_dupqw","description":"AIDL is Android's way of achieving IPC.","breadcrumbs":[{"label":"AIDL","emoji":"2194"}]},{"id":"MjWp5Vq3cg8pnqaVjzB8","title":"Creating an AIDL file","pathname":"/_/android-tips/aidl/simple-aidl-communication/creating-an-aidl-file","siteSpaceId":"sitesp_dupqw","description":"an .aidl file is a barebone description of set of API's server exposes","breadcrumbs":[{"label":"AIDL","emoji":"2194"},{"label":"Simple AIDL Communication"}]},{"id":"jWgJ5Veu0dmpHc16BVRA","title":"Create an AIDL server","pathname":"/_/android-tips/aidl/simple-aidl-communication/create-an-aidl-server","siteSpaceId":"sitesp_dupqw","description":"AIDL server app exposes an service.","breadcrumbs":[{"label":"AIDL","emoji":"2194"},{"label":"Simple AIDL Communication"}]},{"id":"PDovoVrwPT7rmkAOKWRu","title":"Create AIDL client","pathname":"/_/android-tips/aidl/simple-aidl-communication/create-aidl-client","siteSpaceId":"sitesp_dupqw","description":"An AIDL client connects to a exposed AIDL Service via Binders","breadcrumbs":[{"label":"AIDL","emoji":"2194"},{"label":"Simple AIDL Communication"}]},{"id":"89YTdOmouRclsmgT6kB5","title":"Limitations","pathname":"/_/android-tips/aidl/simple-aidl-communication/limitations","siteSpaceId":"sitesp_dupqw","description":"","breadcrumbs":[{"label":"AIDL","emoji":"2194"},{"label":"Simple AIDL Communication"}]},{"id":"LHnwzdSxAcIlu1O9Z7AN","title":"AIDL with callback","pathname":"/_/android-tips/aidl/aidl-with-callback","siteSpaceId":"sitesp_dupqw","description":"An AILD will callback methods","breadcrumbs":[{"label":"AIDL","emoji":"2194"}]},{"id":"1V1wQRTWPMKdF8XFhuPm","title":"Create AILD interfaces","pathname":"/_/android-tips/aidl/aidl-with-callback/create-aild-interfaces","siteSpaceId":"sitesp_dupqw","description":"Main interface as well as its callback","breadcrumbs":[{"label":"AIDL","emoji":"2194"},{"label":"AIDL with callback"}]},{"id":"uClsOeVkqij2NGLWojFu","title":"Create an AIDL server","pathname":"/_/android-tips/aidl/aidl-with-callback/create-an-aidl-server","siteSpaceId":"sitesp_dupqw","description":"Server which will expose a service","breadcrumbs":[{"label":"AIDL","emoji":"2194"},{"label":"AIDL with callback"}]},{"id":"HgxDlBSrQTh5lxRxxFJj","title":"Create AIDL client","pathname":"/_/android-tips/aidl/aidl-with-callback/create-aidl-client","siteSpaceId":"sitesp_dupqw","description":"","breadcrumbs":[{"label":"AIDL","emoji":"2194"},{"label":"AIDL with callback"}]},{"id":"j2UnuIioyjzMPx7SrqBp","title":"Java Testing","pathname":"/_/java-testing","siteSpaceId":"sitesp_ST6Dq","description":""},{"id":"D4g49ul3LyecUC4dIgPo","title":"Mockito","pathname":"/_/java-testing/mockito","siteSpaceId":"sitesp_ST6Dq","description":"Mocking framework for unit tests in Java"},{"id":"4JHxFZeAyNwUwE8nhncF","title":"Mockito.mock()","pathname":"/_/java-testing/mockito/mockito.mock","siteSpaceId":"sitesp_ST6Dq","description":"Creates a mock of any non final class","breadcrumbs":[{"label":"Mockito"}]},{"id":"SgxaxiwbSltERGyRF1qQ","title":"Mockito.spy()","pathname":"/_/java-testing/mockito/mockito.spy","siteSpaceId":"sitesp_ST6Dq","description":"","breadcrumbs":[{"label":"Mockito"}]},{"id":"BX7XgUzWVx3dWQa5Ri5L","title":"Mockito.verify()","pathname":"/_/java-testing/mockito/mockito.verify","siteSpaceId":"sitesp_ST6Dq","description":"Verify interactions with your mock","breadcrumbs":[{"label":"Mockito"}]},{"id":"9dW8E7gSSfqy59gZCGFM","title":"Mockito.mockStatic()","pathname":"/_/java-testing/mockito/mockito.mockstatic","siteSpaceId":"sitesp_ST6Dq","description":"Mock static methods without PowerMock","breadcrumbs":[{"label":"Mockito"}]},{"id":"cxNnl0l2Npv9gT21XTak","title":"ArgumentMatcher","pathname":"/_/java-testing/mockito/argumentmatcher","siteSpaceId":"sitesp_ST6Dq","description":"Match arguments passed in a method of your mock","breadcrumbs":[{"label":"Mockito"}]},{"id":"4LkMUUyBPcKDq7HzBjc1","title":"ArgumentCaptor","pathname":"/_/java-testing/mockito/argumentcaptor","siteSpaceId":"sitesp_ST6Dq","description":"Can do everything argument matcher can and still more","breadcrumbs":[{"label":"Mockito"}]},{"id":"uSBoPIrSr0xV2cMPvCRe","title":"PowerMockito","pathname":"/_/java-testing/powermockito","siteSpaceId":"sitesp_ST6Dq","description":""},{"id":"aIXf5SbTcHdY8MTOjScx","title":"Why we need PowerMock?","pathname":"/_/java-testing/powermockito/why-we-need-powermock","siteSpaceId":"sitesp_ST6Dq","description":"","breadcrumbs":[{"label":"PowerMockito"}]},{"id":"xTfe892ltAQp4eti36Fj","title":"PowerMockRunner","pathname":"/_/java-testing/powermockito/powermockrunner","siteSpaceId":"sitesp_ST6Dq","description":"You must annotate each class you test with PowerMockRunner","breadcrumbs":[{"label":"PowerMockito"}]},{"id":"veFmIK108a75ohg3J6xF","title":"PrepareForTest","pathname":"/_/java-testing/powermockito/preparefortest","siteSpaceId":"sitesp_ST6Dq","description":"Mark this class for bytecode manipulation","breadcrumbs":[{"label":"PowerMockito"}]},{"id":"3XpbDDntQ5Ro473sj1Fd","title":"Understanding @PrepareForTest","pathname":"/_/java-testing/powermockito/preparefortest/understanding-preparefortest","siteSpaceId":"sitesp_ST6Dq","description":"PrepareForTest is very powerful tool that unlocks class manipulation capabilities by modifying class to byte code level.","breadcrumbs":[{"label":"PowerMockito"},{"label":"PrepareForTest"}]},{"id":"yIGUewpApOBheXTKkYvm","title":"SuppressStaticInitializationFor","pathname":"/_/java-testing/powermockito/suppressstaticinitializationfor","siteSpaceId":"sitesp_ST6Dq","description":"","breadcrumbs":[{"label":"PowerMockito"}]},{"id":"yfAbpWrhvAzVLR5qIcn7","title":"PowerMockito.suppress()","pathname":"/_/java-testing/powermockito/powermockito.suppress","siteSpaceId":"sitesp_ST6Dq","description":"","breadcrumbs":[{"label":"PowerMockito"}]},{"id":"vprj5hubEOOAb42rH0N8","title":"PowerMockito.stub()","pathname":"/_/java-testing/powermockito/powermockito.stub","siteSpaceId":"sitesp_ST6Dq","description":"","breadcrumbs":[{"label":"PowerMockito"}]},{"id":"JQzX6DKZAfG51BFWfoFY","title":"PowerMockito.replace()","pathname":"/_/java-testing/powermockito/powermockito.replace","siteSpaceId":"sitesp_ST6Dq","description":"","breadcrumbs":[{"label":"PowerMockito"}]},{"id":"3HybDWfu2PNEmI6JD2qN","title":"PowerMockito.whenNew()","pathname":"/_/java-testing/powermockito/powermockito.whennew","siteSpaceId":"sitesp_ST6Dq","description":"","breadcrumbs":[{"label":"PowerMockito"}]},{"id":"FROmrlM2ugUGojgtIspP","title":"Limitation of PowerMockito.whenNew()","pathname":"/_/java-testing/powermockito/powermockito.whennew/limitation-of-powermockito.whennew","siteSpaceId":"sitesp_ST6Dq","description":"Why Powermockito.whenNew() is not enough.","breadcrumbs":[{"label":"PowerMockito"},{"label":"PowerMockito.whenNew()"}]},{"id":"dpfwadoCPsZ4M9rghJrT","title":"Whitebox.invokeMethod()","pathname":"/_/java-testing/powermockito/whitebox.invokemethod","siteSpaceId":"sitesp_ST6Dq","description":"","breadcrumbs":[{"label":"PowerMockito"}]},{"id":"SjIaDE3YRF1ZNtJZmoXb","title":"Whitebox.setInternalState()","pathname":"/_/java-testing/powermockito/whitebox.setinternalstate","siteSpaceId":"sitesp_ST6Dq","description":"","breadcrumbs":[{"label":"PowerMockito"}]},{"id":"4IaYTxxJy7TjQc1rttn3","title":"Whitebox.getInternalState()","pathname":"/_/java-testing/powermockito/whitebox.getinternalstate","siteSpaceId":"sitesp_ST6Dq","description":"","breadcrumbs":[{"label":"PowerMockito"}]},{"id":"6Hqkbvj5oVBY6y2vcRix","title":"Tips","pathname":"/_/java-testing/tips","siteSpaceId":"sitesp_ST6Dq","description":"Pages with tips to test your code effectively"},{"id":"TyMYKYpBfML6wTSRxzp9","title":"How to test ViewModel and LiveData","pathname":"/_/java-testing/tips/how-to-test-viewmodel-and-livedata","siteSpaceId":"sitesp_ST6Dq","description":"Test your async code build on top of androidx arch.","breadcrumbs":[{"label":"Tips"}]},{"id":"3AvoPPL8cwvCYDoHTwSW","title":"Java Guide","pathname":"/_/java-tips","siteSpaceId":"sitesp_o3xcX","description":"Handy definitions and examples in Java"},{"id":"5supRGncBEEp7iS8ha4j","title":"Concurrency","pathname":"/_/java-tips/concurrency/concurrency","siteSpaceId":"sitesp_o3xcX","description":"Concurrency in Java","breadcrumbs":[{"label":"Concurrency"}]},{"id":"XOq44PPTi8FNoLEyAHyG","title":"Completable Future","pathname":"/_/java-tips/concurrency/completable-future","siteSpaceId":"sitesp_o3xcX","breadcrumbs":[{"label":"Concurrency"}]},{"id":"LUelUDAH9y2UdTfLUizB","title":"Example of completable future","pathname":"/_/java-tips/concurrency/completable-future/example-of-completable-future","siteSpaceId":"sitesp_o3xcX","breadcrumbs":[{"label":"Concurrency"},{"label":"Completable Future"}]},{"id":"rq05BUyzaJ2ShOGrOmCX","title":"C Plus Plus: Docs","pathname":"/_/cpp","siteSpaceId":"sitesp_mndC4","emoji":"1f6e3","description":"My learning on CPP language and its features.","breadcrumbs":[{"label":"Roadmap"}]},{"id":"LIMRnoPBiBf5VcI6xMDN","title":"Build Process","pathname":"/_/cpp/build/build-process","siteSpaceId":"sitesp_mndC4","emoji":"1f525","description":"C++ build process","breadcrumbs":[{"label":"Build"}]},{"id":"453zUxUVRl0ctkP8QYKd","title":"Connect multiple C++ Files","pathname":"/_/cpp/build/connect-multiple-c++-files","siteSpaceId":"sitesp_mndC4","emoji":"1f527","description":"Here is how to connect multiple c++ file:","breadcrumbs":[{"label":"Build"}]},{"id":"5y6n5yOYkmaqBMWOH64t","title":"Pre-Processors","pathname":"/_/cpp/code/pre-processors","siteSpaceId":"sitesp_mndC4","emoji":"23ee","description":"Those #Tag inside our program","breadcrumbs":[{"label":"Code"}]},{"id":"m5krSx4TmyETdtwCjjMR","title":"#include","pathname":"/_/cpp/code/pre-processors/include","siteSpaceId":"sitesp_mndC4","description":"","breadcrumbs":[{"label":"Code"},{"label":"Pre-Processors","emoji":"23ee"}]},{"id":"ZwMysYktiUa9tz1Okch4","title":"#define","pathname":"/_/cpp/code/pre-processors/define","siteSpaceId":"sitesp_mndC4","description":"This is used to define macros. Macros can be simple constants or function","breadcrumbs":[{"label":"Code"},{"label":"Pre-Processors","emoji":"23ee"}]},{"id":"1fZgZibR9KNPHGA0JtdG","title":"#ifdef","pathname":"/_/cpp/code/pre-processors/ifdef","siteSpaceId":"sitesp_mndC4","description":"These directives allow you to include or exclude code based on certain conditions","breadcrumbs":[{"label":"Code"},{"label":"Pre-Processors","emoji":"23ee"}]},{"id":"g5TlKDIE3pjkTfZ0pT4A","title":"#pragma","pathname":"/_/cpp/code/pre-processors/pragma","siteSpaceId":"sitesp_mndC4","description":"Pragma is a Include Guards, it tells compiler whether  to include header file again or not","breadcrumbs":[{"label":"Code"},{"label":"Pre-Processors","emoji":"23ee"}]},{"id":"lK5kf2UCzm3oDDTx3msj","title":"Predefined Macros","pathname":"/_/cpp/code/pre-processors/predefined-macros","siteSpaceId":"sitesp_mndC4","description":"C++ has many predefined macros too","breadcrumbs":[{"label":"Code"},{"label":"Pre-Processors","emoji":"23ee"}]},{"id":"TNhVILCkbtTH9derybu4","title":"LValue and RValue","pathname":"/_/cpp/code/lvalue-and-rvalue","siteSpaceId":"sitesp_mndC4","icon":"left-right","breadcrumbs":[{"label":"Code"}]},{"id":"xrLoQsVpwfV95Clyq2T3","title":"Data Types","pathname":"/_/cpp/code/data-types","siteSpaceId":"sitesp_mndC4","emoji":"1fa85","breadcrumbs":[{"label":"Code"}]},{"id":"TNeFQQ80BlwALm5zERlO","title":"Enum","pathname":"/_/cpp/code/data-types/enum","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Code"},{"label":"Data Types","emoji":"1fa85"}]},{"id":"QWodXZ0niMmhOtPurdrQ","title":"TypeDef","pathname":"/_/cpp/code/data-types/typedef","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Code"},{"label":"Data Types","emoji":"1fa85"}]},{"id":"eSLt0b8ozr7AStNYoNmI","title":"const in c++","pathname":"/_/cpp/code/data-types/const-in-c++","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Code"},{"label":"Data Types","emoji":"1fa85"}]},{"id":"1ePhZ69kuLCjSxHHizll","title":"extern vs inline","pathname":"/_/cpp/code/data-types/extern-vs-inline","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Code"},{"label":"Data Types","emoji":"1fa85"}]},{"id":"jQlhsctDHVkl7k5pstg6","title":"Casting","pathname":"/_/cpp/code/casting","siteSpaceId":"sitesp_mndC4","emoji":"1f3ad","breadcrumbs":[{"label":"Code"}]},{"id":"GuGxij1V5DLVx9VLWuSW","title":"Operator overloading","pathname":"/_/cpp/code/operator-overloading","siteSpaceId":"sitesp_mndC4","emoji":"1f503","breadcrumbs":[{"label":"Code"}]},{"id":"jdp6zmB13dCzWL9JpeWB","title":"Available Operators","pathname":"/_/cpp/code/operator-overloading/available-operators","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Code"},{"label":"Operator overloading","emoji":"1f503"}]},{"id":"mRRAE9xPJvOJRrz2QQk2","title":"Examples of operator overloading","pathname":"/_/cpp/code/operator-overloading/examples-of-operator-overloading","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Code"},{"label":"Operator overloading","emoji":"1f503"}]},{"id":"MFtF5FmsVCM6IPZk9JQR","title":"Namespace","pathname":"/_/cpp/code/namespace","siteSpaceId":"sitesp_mndC4","emoji":"1f5fa","breadcrumbs":[{"label":"Code"}]},{"id":"Q59lGDSChJiJeBu70hsM","title":"Namespace Example","pathname":"/_/cpp/code/namespace/namespace-example","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Code"},{"label":"Namespace","emoji":"1f5fa"}]},{"id":"roRVm2K1nMPvRWfFBk8e","title":"Using directive","pathname":"/_/cpp/code/namespace/using-directive","siteSpaceId":"sitesp_mndC4","description":"","breadcrumbs":[{"label":"Code"},{"label":"Namespace","emoji":"1f5fa"}]},{"id":"htKpjUNyHy7uPVz39O80","title":"Header File","pathname":"/_/cpp/code/header-file","siteSpaceId":"sitesp_mndC4","emoji":"1f575","breadcrumbs":[{"label":"Code"}]},{"id":"6LqQumRVL7dJt4l2qMtX","title":"For C++ Classes","pathname":"/_/cpp/code/header-file/for-c++-classes","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Code"},{"label":"Header File","emoji":"1f575"}]},{"id":"FU1aoQDnQGA2DIJgHOqt","title":"Structure","pathname":"/_/cpp/code/structure","siteSpaceId":"sitesp_mndC4","emoji":"1f3d7","description":"Collection of different data types","breadcrumbs":[{"label":"Code"}]},{"id":"YrOwkzcgDoOqzjMgh5dz","title":"Struct vs Class","pathname":"/_/cpp/code/structure/struct-vs-class","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Code"},{"label":"Structure","emoji":"1f3d7"}]},{"id":"PHQlLr4ky5ET4DpHtbYk","title":"Public vs Private inheritance","pathname":"/_/cpp/code/structure/public-vs-private-inheritance","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Code"},{"label":"Structure","emoji":"1f3d7"}]},{"id":"8qPX5dOnyMP4dhxIYNwj","title":"Classes","pathname":"/_/cpp/code/classes","siteSpaceId":"sitesp_mndC4","emoji":"1f3e2","breadcrumbs":[{"label":"Code"}]},{"id":"MBINojDDMpA6U5Bcyfcr","title":"Friend Function","pathname":"/_/cpp/code/classes/friend-function","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Code"},{"label":"Classes","emoji":"1f3e2"}]},{"id":"IvKM7BZ6pfSiQjQdD7Ga","title":"Copy Constructor","pathname":"/_/cpp/code/classes/copy-constructor","siteSpaceId":"sitesp_mndC4","description":"","breadcrumbs":[{"label":"Code"},{"label":"Classes","emoji":"1f3e2"}]},{"id":"YIq0CyXmNlRxoQk33P0R","title":"Explicit Constructor","pathname":"/_/cpp/code/classes/explicit-constructor","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Code"},{"label":"Classes","emoji":"1f3e2"}]},{"id":"2qTWsiu80Vh9ivakawZh","title":"Move Constructor","pathname":"/_/cpp/code/classes/move-constructor","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Code"},{"label":"Classes","emoji":"1f3e2"}]},{"id":"MkG77HU2zXbgHDbO43gP","title":"Move Semantics","pathname":"/_/cpp/code/classes/move-constructor/move-semantics","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Code"},{"label":"Classes","emoji":"1f3e2"},{"label":"Move Constructor"}]},{"id":"k5OQzeXedyNX4NGrcdSN","title":"Other constructors","pathname":"/_/cpp/code/classes/other-constructors","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Code"},{"label":"Classes","emoji":"1f3e2"}]},{"id":"2h8lOd00TOfsQQ5ydCYZ","title":"Virtual functions","pathname":"/_/cpp/code/classes/virtual-functions","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Code"},{"label":"Classes","emoji":"1f3e2"}]},{"id":"gWwG7AP2tKUgaEPbxqfJ","title":"Pure virtual function","pathname":"/_/cpp/code/classes/pure-virtual-function","siteSpaceId":"sitesp_mndC4","description":"Interface/abstract classes in c++","breadcrumbs":[{"label":"Code"},{"label":"Classes","emoji":"1f3e2"}]},{"id":"GVk9Khl1ymXnJlqOudZt","title":"Other function declaration","pathname":"/_/cpp/code/classes/other-function-declaration","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Code"},{"label":"Classes","emoji":"1f3e2"}]},{"id":"2VKxXia8hA9k4EJOGgwP","title":"const function vs final function","pathname":"/_/cpp/code/classes/const-function-vs-final-function","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Code"},{"label":"Classes","emoji":"1f3e2"}]},{"id":"AyFUfgqiO35MChDyximi","title":"Memory Introduction","pathname":"/_/cpp/memory/memory-introduction","siteSpaceId":"sitesp_mndC4","emoji":"1f9e0","breadcrumbs":[{"label":"Memory"}]},{"id":"ZEp3w2VWCGomVPIFs6E7","title":"Heap and Stack","pathname":"/_/cpp/memory/heap-and-stack","siteSpaceId":"sitesp_mndC4","emoji":"2728","breadcrumbs":[{"label":"Memory"}]},{"id":"fJU4vZ59rRkgysvcdE1x","title":"Pointers","pathname":"/_/cpp/memory/pointers","siteSpaceId":"sitesp_mndC4","emoji":"1f3af","breadcrumbs":[{"label":"Memory"}]},{"id":"jbxenrebCf7uNdWvAVkk","title":"Dangling Pointer","pathname":"/_/cpp/memory/pointers/dangling-pointer","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Memory"},{"label":"Pointers","emoji":"1f3af"}]},{"id":"DqTRLb94c6GduCxx2s7k","title":"'this' Pointer","pathname":"/_/cpp/memory/pointers/this-pointer","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Memory"},{"label":"Pointers","emoji":"1f3af"}]},{"id":"23xj03tgfA8KTJhoQhVq","title":"Function Pointer","pathname":"/_/cpp/memory/pointers/function-pointer","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Memory"},{"label":"Pointers","emoji":"1f3af"}]},{"id":"INOqAQtMtH7dGp7NVbtU","title":"Smart Pointers","pathname":"/_/cpp/memory/pointers/smart-pointers","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Memory"},{"label":"Pointers","emoji":"1f3af"}]},{"id":"fp302C9X1TVUQjR3VlRJ","title":"Unique Pointer","pathname":"/_/cpp/memory/pointers/smart-pointers/unique-pointer","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Memory"},{"label":"Pointers","emoji":"1f3af"},{"label":"Smart Pointers"}]},{"id":"f81nkxjHivXkCm6FMMiq","title":"Shared Pointer","pathname":"/_/cpp/memory/pointers/smart-pointers/shared-pointer","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Memory"},{"label":"Pointers","emoji":"1f3af"},{"label":"Smart Pointers"}]},{"id":"j5uDQiA6JuVLvYeBZnuN","title":"Weak Pointer","pathname":"/_/cpp/memory/pointers/smart-pointers/weak-pointer","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Memory"},{"label":"Pointers","emoji":"1f3af"},{"label":"Smart Pointers"}]},{"id":"uH3j5HKualnGDZtKgmLp","title":"Reference count","pathname":"/_/cpp/memory/pointers/reference-count","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Memory"},{"label":"Pointers","emoji":"1f3af"}]},{"id":"prWGUHWDpCvDAp3BfTBA","title":"Helper function","pathname":"/_/cpp/memory/helper-function","siteSpaceId":"sitesp_mndC4","emoji":"1f468-1f3ed","breadcrumbs":[{"label":"Memory"}]},{"id":"fl4Do4QPwQMwUr6e080J","title":"Vector [ArrayList]","pathname":"/_/cpp/memory/vector-arraylist","siteSpaceId":"sitesp_mndC4","emoji":"1f361","breadcrumbs":[{"label":"Memory"}]},{"id":"p8llccXY4N4NOxestt3h","title":"Custom vector, part 1","pathname":"/_/cpp/memory/vector-arraylist/custom-vector-part-1","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Memory"},{"label":"Vector [ArrayList]","emoji":"1f361"}]},{"id":"RvkfNzJM8n76NawaVZj4","title":"Custom vector, part 2","pathname":"/_/cpp/memory/vector-arraylist/custom-vector-part-2","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Memory"},{"label":"Vector [ArrayList]","emoji":"1f361"}]},{"id":"zUNNPYwA0Fnz1Zp0KVM3","title":"Custom vector, part 3","pathname":"/_/cpp/memory/vector-arraylist/custom-vector-part-3","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Memory"},{"label":"Vector [ArrayList]","emoji":"1f361"}]},{"id":"uucM02ZSoKUwhCguuNHZ","title":"std::vector","pathname":"/_/cpp/memory/vector-arraylist/std-vector","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Memory"},{"label":"Vector [ArrayList]","emoji":"1f361"}]},{"id":"DtwQoChz4VAN6xaUejQn","title":"Union","pathname":"/_/cpp/memory/union","siteSpaceId":"sitesp_mndC4","emoji":"267b","breadcrumbs":[{"label":"Memory"}]},{"id":"rZEgdtpaXk9eJ8iiFTz7","title":"Type Punning","pathname":"/_/cpp/memory/union/type-punning","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Memory"},{"label":"Union","emoji":"267b"}]},{"id":"0LNjSRE9h5e4wol50Mlr","title":"Type Punning, part 2","pathname":"/_/cpp/memory/union/type-punning-part-2","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Memory"},{"label":"Union","emoji":"267b"}]},{"id":"7qpRav2ymwl5E8SktOyz","title":"Type Punning, part 3","pathname":"/_/cpp/memory/union/type-punning-part-3","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Memory"},{"label":"Union","emoji":"267b"}]},{"id":"AxnKqk0I7y2wDilzDu6I","title":"Union, part 1","pathname":"/_/cpp/memory/union/union-part-1","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Memory"},{"label":"Union","emoji":"267b"}]},{"id":"L5Yb7BiYuROctx3codBJ","title":"Union, Part 2","pathname":"/_/cpp/memory/union/union-part-2","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Memory"},{"label":"Union","emoji":"267b"}]},{"id":"zZiRctWrGXeV7gOWkEib","title":"Threading","pathname":"/_/cpp/thread/threading","siteSpaceId":"sitesp_mndC4","emoji":"1f9f5","breadcrumbs":[{"label":"Thread"}]},{"id":"SPbfzL6zAzk9PhQfru7I","title":"std::thread","pathname":"/_/cpp/thread/threading/std-thread","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Thread"},{"label":"Threading","emoji":"1f9f5"}]},{"id":"17PR3NnCJTH89ejIawn9","title":"Detach a thread","pathname":"/_/cpp/thread/threading/detach-a-thread","siteSpaceId":"sitesp_mndC4","breadcrumbs":[{"label":"Thread"},{"label":"Threading","emoji":"1f9f5"}]},{"id":"T8OeDkEcaGZrt656uLdQ","title":"Execution Order","pathname":"/_/cpp/misc/execution-order","siteSpaceId":"sitesp_mndC4","emoji":"1f5c2","breadcrumbs":[{"label":"Misc"}]},{"id":"VrYanpZ7z9i8WMkZgPpN","title":"Print memory","pathname":"/_/cpp/misc/print-memory","siteSpaceId":"sitesp_mndC4","emoji":"1f9e0","breadcrumbs":[{"label":"Misc"}]}]}