Miscellaneous Tech
- Bitcoin resources → Youtube resource Learning Bitcoin from CLI
- APK (Android Package Kit) - file format used by Android to install apps
- has all components of app and packaged in single apk → code, resources, assets
- Like .exe are executables on Windows → APKs are for Android
- Mod APK (Modified APK) - altered version of original Android app
- Sideloading - installing apps on device from sources other than official app store
- Used for apps not available on Play Store or for beta versions
- XAPK (extended Android package kit) - APK file + OBB files + graphics + media
- compressed for easy distribution of large apps/heavy games for android
- not officially supported by Android → special installers are needed
- Manually, users can extract XAPK and place OBB files in respective folder
- OBB (Opaque Binary Blob) files - extra data files used by some Android apps to store large assets like graphics, media files, and game data that don’t fit in APK
- APK works as the installer and OBB provides bulk of the content
- After we Delete File permanently → system do not immediately erase data → only index pointer (the file’s address) is removed from file system → data is still intact
- In Hard Disk Drives (HDD), data blocks remain intact until new files overwrite them → the sooner you try to recover, the better your chances are
- Sometimes, we may get corrupted images (half visible, half damaged)
- In Solid State Drives (SSD), if TRIM is enabled → OS quickly wipes free blocks
- very hard to recover data
- In Phone Storage (Flash Memory) - recovery chances are very low because memory cells are reused quickly
- Dual-boot - install multiple OS on separate partition/disk with bootloader at startup to select & load only that OS’s kernel and system files from its partition while other OS stays inactive → after installing Linux, Windows Boot Manager replaced with GRUB
- X’s (twitter) API return both id and id_str → some environments can handle 64-bit integers directly, but in JavaScript integers larger than 53 bits risks precision errors
- unacceptable risk when identifiers must remain exact
- id: 64-bit unsigned integer id_str: same identifier represented as string
- Compiler vs Interpreter
- Compiler - translates entire source code into machine executable code at once before execution → Faster execution + more efficient
- checks for syntax errors at end during compilation → Example: C, C++
- Interpreter - translate code line by line and execute instruction by instruction
- Easy to detect errors but slower execution → Example: Python, JavaScript
- Authentication vs Authorization
- Authentication - confirms identity of users by verifying login credentials
(e.g., username, password, biometric) → happens before any authorization check - Authorization - checks if user has permission to perform certain actions/access specific data based on roles, permissions, or access levels
- Integrated Development Environment (IDE) - place to write, run and debug code
- Example: Visual Studio, PyCharm, Jupyter Notebook
- storage/emulated/0/ - root directory of user-accessible internal storage on Android
- represents user’s primary storage ("Internal Storage”)
- To run batch file in PowerShell → add ./ before script name for security reasons
- This 100% ensures that running batch file of current directory
- coder-decoder (codec) - compress and decompress digital data (audio + video files)
- Audio Codecs - MP3, AAC (used by iTunes and YouTube)
- Video Codecs - H.264/AVC (widely used for streaming, Blu-ray, and web video), HEVC/H.265 (better successor to H.264), AV1 (royalty-free codec for streaming)
- AV1 → built by alliance of Google, Microsoft, Netflix, Amazon, etc. bcz H.264 charges royalty → give efficient bitrates compared to other codecs (means better video quality at low internet speed)
- Issues - consume more CPU/GPU + very slow at encoding + compatibility issues with old devices since AV1 is new
- Date Based Versioning - Stripe does not use traditional ways to name API versions like v1/payment or v3/users → uses "Stripe Version : 2015-07-18" passed via header
- BENEFIT - Users on older version have no tension to switch every time new version arrives (Maintains trust) + All versions available till date can be used
- How is it possible to maintain thousands of version ?
- Request Compatibility Layer → normalise any old version of API calls to latest version → then send to core business logic (written wrt latest version)
- Gate System → Feature flags based on version date and feature
- Let's say "amount" is deprecated in new version but old one still use it
- new version API → "amount" will be off but for old ones it will be on
- No messy if-else statements + All gates are at one place + High code readability + Easy to manage
- Transformation modules → used when sends response back to user
- small, isolated modules to downgrade latest version to user's version
- latest version → downgrade to 2025 → downgrade to 2024 → so on...
- In 2027, only make for 2025 and 2026 (bcz others already exist)
Comments
Post a Comment